Então, eu entendo como executar transições e animações CSS3. O que não está claro, e eu pesquisei no Google, é quando usar qual.
Por exemplo, se eu quiser fazer uma bola quicar, é claro que a animação é o caminho a percorrer. Eu poderia fornecer quadros-chave e o navegador faria os quadros intermediários e eu terei uma boa animação.
No entanto, há casos em que um efeito mencionado pode ser alcançado de qualquer maneira. Um exemplo simples e comum seria implementar o menu da gaveta deslizante do estilo facebook:
Este efeito pode ser alcançado através de transições como:
.sf-page {
-webkit-transition: -webkit-transform .2s ease-out;
}
.sf-page.out {
-webkit-transform: translateX(240px);
}
Ou, através de animações como esta:
.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); }
}
Com HTML que se parece com isso:
<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>
E, este script jQuery que acompanha:
$("#content-container").click(function(){
$("#content-container").toggleClass("out");
// below is only required for css animation route
$("#content-container").toggleClass("in");
});
O que eu gostaria de entender é quais são os prós e os contras dessas abordagens.
- Uma diferença óbvia é que a animação exige muito mais código.
- A animação oferece melhor flexibilidade. Posso ter uma animação diferente para deslizar para fora e para dentro
- Existe algo que pode ser dito sobre desempenho. Ambos aproveitam a aceleração h / w?
- Que é mais moderno e o caminho a seguir
- Mais alguma coisa que você poderia adicionar?