Ich verstehe also, wie man sowohl CSS3-Übergänge als auch Animationen durchführt. Was nicht klar ist und ich gegoogelt habe, ist, wann ich welche verwenden soll.
Wenn ich zum Beispiel einen Ball zum Abprallen bringen möchte, ist klar, dass Animation der richtige Weg ist. Ich könnte Keyframes bereitstellen und der Browser würde die Zwischenframes erstellen und ich werde eine schöne Animation haben.
Es gibt jedoch Fälle, in denen ein solcher Effekt in beiden Fällen erzielt werden kann. Ein einfaches und allgemeines Beispiel wäre die Implementierung des Schiebeschubladenmenüs im Facebook-Stil:
Dieser Effekt kann durch Übergänge wie folgt erreicht werden:
.sf-page {
-webkit-transition: -webkit-transform .2s ease-out;
}
.sf-page.out {
-webkit-transform: translateX(240px);
}
Oder durch Animationen wie diese:
.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); }
}
Mit HTML sieht das so aus:
<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>
Und dieses begleitende jQuery-Skript:
$("#content-container").click(function(){
$("#content-container").toggleClass("out");
// below is only required for css animation route
$("#content-container").toggleClass("in");
});
Was ich verstehen möchte, ist, was die Vor- und Nachteile dieser Ansätze sind.
- Ein offensichtlicher Unterschied ist, dass das Animieren viel mehr Code erfordert.
- Animation bietet bessere Flexibilität. Ich kann verschiedene Animationen zum Aus- und Einrutschen haben
- Gibt es etwas, was über Leistung gesagt werden kann? Nutzen beide die H / W-Beschleunigung?
- Welches ist moderner und der Weg in die Zukunft
- Könnten Sie noch etwas hinzufügen?