Tudo o que eu falarei aqui sobre CSS Animation e CSS Transforms só podem ser testados no Safari ou em qualquer outro browser que utilize as últimas versões do Webkit. Há algumas aplicações que modificam muito o Webkit para usá-lo, pode ser que nestes, não funcione direito. Mesmo assim, infelizmente, o Webkit (por enquanto) é o único motor que suporta esse tipo de característica.
CSS Animation permite que modifiquemos propriedades do CSS e tenhamos o resultado ali, na hora.
Para isso, usaremos uma propriedade chamada transition. Essa propriedade é divida em 3 propriedades: transition-property que é a propriedade que deverá ser animada, transition-duration é quanto tempo a transição irá durar, e transition-timing-function é o tipo de transição.
Imagine o seguinte código:
[cc lang=”css”]
div {
border: 10px solid black;
width: 300px;
height:300px;
background:gray;
}
div:hover {
background:red;
}
[/cc]
O código acima faz com que quando o usuário passe o mouse em cima do DIV, o background mude de cor.
Vamos adicionar a propriedade transition agora. Note o código abaixo:
[cc lang=”css”]
div {
border: 10px solid black;
width: 300px;
height:300px;
background:gray;
-webkit-transition: background 1s linear;
}
div:hover {
background:red;
}
[/cc]
O CSS Animation entrará em ação com a propriedade transition.
Note que a propriedade tem o prefixo do Webkit, indicando que isso só funciona em browsers com este motor.
A propriedade transition tem 3 valores: o primeiro valor é a propriedade que você quer alterar. O segundo valor é o tempo que essa animação durará. O terceiro valor é tipo de transição.
Você pode fazer várias transições em, separando os valores por vírgulas. Veja o exemplo:
[cc lang=”css”]
div {
border: 10px solid black;
width: 300px;
height:300px;
background:gray;
-webkit-transition: background 1s linear, width 1s linear;
}
div:hover {
background:red;
width: 400px;
}
[/cc]
Neste caso, iremos animar a largura do DIV e ao mesmo tempo, mudaremos a cor de background.
CSS Transform
Tudo isso fica mais interessante se utilizarmos algumas propriedades do CSS Transform.
O CSS Transform é uma das características do CSS que tranformam a forma original dos elementos do HTML. Por exemplo, inclinação. Veja abaixo:
[cc lang=”css”]
div {
border: 10px solid black;
width: 300px;
height:300px;
background:gray;
-webkit-transition: background 1s linear, width 1s linear;
-webkit-transform: rotate(3deg);
}
[/cc]
No código acima, utilizei a propriedade transform com o valor rotate. Este valor rotaciona o elemento em sentido horário para um determinado grau. No caso acima, ele está inclinando o elemento com o valor de 3 graus.
Podemos fazer uma animação interessante utilizando o transform: rotate. Teste o código CSS abaixo:
[cc lang=”css”]
div {
border: 10px solid black;
width: 300px;
height:300px;
background:gray;
-webkit-transform: rotate(0deg);
-webkit-transition: background 1s linear, width 0.5s linear, -webkit-transform 1s linear;
}
div:hover {
background: red;
width: 400px;
-webkit-transform: rotate(360deg);
}
[/cc]
O código acima fará com que o elemento gire 360 graus.
Testei no iPhone
Fiz um teste rápido no iPhone. No iPhone, a função de HOVER é acionada quando o elemento é clicado. As animações funcionam perfeitamente, com exceção do giro de 360 graus que pára no meio e o elemento volta a posição normal.
Quem tiver algum celular Nokia com browser baseado em Webkit, faça uns testes e comenta com a galera os resultados.
Ainda é um rascunho no W3C
Tudo isso ainda é um rascunho lá no W3C. Mas a Apple já propôs sua idéia de como poderia ser o funcionamento do CSS Transformations aqui:
Apple’s Proposal for CSS Transformations.
O interessante é que os browsers hoje em dia estão andando com as próprias pernas. Na verdade não apenas os browsers, mas todos os desenvolvedores. Ninguém está esperando o W3C para implementar e inventar coisas. Todos estão ajudando a pensar como pode ser o desenvolvimento web de amanhã. O trabalho do W3C está se resumindo em estudar, incluir e modificar as idéias da comunidade e de suas equipes – que por sinal, estão em mais espertas e rápidas agora.
A documentação do rascunho do W3C está disponível aqui:
https://www.w3.org/TR/css3-animations/
Há bastante coisa para se ler aqui: