Jadi, saya mengerti bagaimana melakukan transisi dan animasi CSS3. Yang tidak jelas, dan saya sudah googled, adalah kapan harus menggunakan yang mana.
Misalnya, jika saya ingin membuat bola memantul, jelas bahwa animasi adalah cara untuk pergi. Saya bisa memberikan keyframe dan browser akan melakukan frame perantara dan saya akan membuat animasi yang bagus.
Namun, ada beberapa kasus ketika efek tersebut dapat dicapai dengan cara apapun. Contoh sederhana dan umum akan menerapkan menu laci geser gaya facebook:
Efek ini dapat dicapai melalui transisi seperti:
.sf-page {
-webkit-transition: -webkit-transform .2s ease-out;
}
.sf-page.out {
-webkit-transform: translateX(240px);
}
Atau, melalui animasi seperti ini:
.sf-page {
-webkit-animation-duration: .4s;
-webkit-transition-timing-function: ease-out;
}
.sf-page.in {
-webkit-animation-name: sf-slidein;
-webkit-transform: translate3d(0, 0, 0);
}
.sf-page.out {
-webkit-animation-name: sf-slideout;
-webkit-transform: translateX(240px);
}
@-webkit-keyframes sf-slideout {
from { -webkit-transform: translate3d(0, 0, 0); }
to { -webkit-transform: translate3d(240px, 0, 0); }
}
@-webkit-keyframes sf-slidein {
from { -webkit-transform: translate3d(240px, 0, 0); }
to { -webkit-transform: translate3d(0, 0, 0); }
}
Dengan HTML yang terlihat seperti ini:
<div class="sf-container">
<div class="sf-page in" id="content-container">
<button type="button">Click Me</button>
</div>
<div class="sf-drawer">
</div>
</div>
Dan, skrip jQuery yang menyertainya:
$("#content-container").click(function(){
$("#content-container").toggleClass("out");
// below is only required for css animation route
$("#content-container").toggleClass("in");
});
Yang ingin saya pahami adalah apa pro dan kontra dari pendekatan ini.
- Satu perbedaan yang jelas adalah bahwa animating mengambil kode lebih banyak.
- Animasi memberi fleksibilitas yang lebih baik. Saya dapat memiliki animasi berbeda untuk meluncur keluar dan masuk
- Apakah ada sesuatu yang bisa dikatakan tentang kinerja. Apakah keduanya memanfaatkan akselerasi h / w?
- Yang lebih modern dan jalan ke depan
- Ada lagi yang bisa Anda tambahkan?