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:
1 2 3 4 5 6 7 8 9 10 | div { border: 10px solid black; width: 300px; height:300px; background:gray; } div:hover { background:red; } |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 | div { border: 10px solid black; width: 300px; height:300px; background:gray; -webkit-transition: background 1s linear; } div:hover { background:red; } |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } |
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:
1 2 3 4 5 6 7 8 9 10 | div { border: 10px solid black; width: 300px; height:300px; background:gray; -webkit-transition: background 1s linear, width 1s linear; -webkit-transform: rotate(3deg); } |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); } |
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:
http://www.w3.org/TR/css3-animations/
Há bastante coisa para se ler aqui:
17 Comentários
17 Comentários
William Bruno 29/06/2009 às 08:47
Show de bola!
Poder controlar esses efeitos sem depender de Javascript, será um sonho! huahauhauha
Paulo de Tarso F. M. 29/06/2009 às 09:11
A única coisa que me preocupa um pouco é que isso me faz lembrar do início. Antes a guerra dos browsers envolveu a criação de tags HTML, o isso todos já sabem que fim teve. Agora, devido à lentidão do W3C em criar uma base para ser usada como referência, um padrão, os próprios browsers estão criando suas próprias propriedades CSS.
Tudo bem, são propriedades que praticamente todos os desenvolvedores estão aguardando, já é sabido que isso deve se tornar algo normal, algo crossbrowser, mas pelo andar da carruagem, o que antes aconteceu com as tags HTML agora está acontecendo com o CSS.
Não vejo muita vantagem dessa implementação estar ocorrendo dessa forma, utilizando-se de recursos do próprio motor webkit. Primeiro, não funciona em browsers que não sejam baseado nele, segundo, seu código CSS se torna um código inválido.
Será mesmo vantajoso os desenvolvedores implementarem esses recursos antes deles serem oficialmente lançados? Tudo bem, sabemos que essa implementação não irá alterar em nada o acesso à informação do site, afinal de contas, não estamos falando da estrutura, mas sim apenas na formatação da mesma, mas e depois? Quando eles lançarem oficialmente estes recursos?
Portanto, acho que usar estes novos recursos é extremamente válido, mas desde que isso não venha a atrapalhar alguma coisa nos browsers que não suportem estes recursos (que acredito que é o que acontece…).
Abraço!
Acelio F 29/06/2009 às 09:50
Legal.
Pena que não é crossbrowser.
Não pude nem testar…
Fica como sugestão, colocar um vídeo com o resultado, pra “gente comum” poder ao menos ver.
Isto me lembra as transições entre páginas que só o IE proporciona, as bordas arredondadas do Firefox e o Voice XML do Opera.
Thiago Retondar 29/06/2009 às 10:09
Muito bom esse seu post, Diego. Só mudaria o começo, que ficou meio estranho, pois ela pode testar no Google Chrome, por exemplo.
[quote]Tudo o que eu falarei aqui sobre CSS Animation e CSS Transforms só podem ser testados no [b]Safari[/b].[/quote]
O que está errado, pois é qualquer browser com o renderizador WebKit, tal como você disse no sétimo parágrafo.
[quote]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.
[b]A documentação do rascunho do W3C está disponível aqui:
http://www.w3.org/TR/css3-animations//b/quote
Sim, realmente, agora só falta os browsers aderirem mais à fundo esssa tecnologia… Que é o que alguns já estão fazendo.
O opinião do Paulo é bem parecida com a minha.
Lembrando que vários browsers têm seus truques nas mangas, tal como o do Mozilla: -moz-boz-shadow => https://developer.mozilla.org/en/CSS/-moz-box-shadow
Acho muito boa essa propriedades, mas eu sempre gostei do meu código válido. Usária eles em caso extremos, onde não teria outra opção. Mas quem está com o Mozilla Firefox 3.5RCs pode ver que está evoluindo muito.
Abraços, Diego.
José Telmo 29/06/2009 às 10:14
Concordo com o comentário de Paulo de Tarso. Isso lembra a época em que tínhamos de preparar dois sites por causa da guerra Netscape x IE. Tomara que isso não volte…
E um acréscimo: o Chrome também roda esses códigos pois ele também foi feito com motor do webkit.
Diego Eis 29/06/2009 às 10:37
Paulo, estes recursos não são do Webkit exclusivamente, são do CSS mesmo. É o pessoal do Webkit que já implementou no motor deles para os desenvolvedores poderem testar.
Isso acontece em vários browsers. Por exemplo, básico, bordas arredondadas. O Firefox implementou para podermos utilizar. O Safari também.
O Graceful Degradation está aqui para utilizarmos.
Outro ponto que você citou é a validação do código CSS. É realmente necessário? Quando está sendo um earlier adopter?
Claro, que não é inteligente utilizar essas novas novidades em sites e projetos de clientes por aí. Isso é puro estudo. Curiosidade.
Marcio BDA 29/06/2009 às 11:05
Muito bom o artigo. O meu sonho é o dia em que o CSS fizer aquilo que o Javascript faz atualmente. A web será mais limpa e fará sentido de verdade separar conteúdo e apresentação.
Esses “rascunhos” do webkit são um passo nessa direção.
Quem sabe daqui uns 50 anos isso vire realidade… rs
Joni Pavanello 29/06/2009 às 14:44
Funciona muito bem no Google Chrome, já que ele usa o motor do webkit também.
Parabéns pela matéria!
Só espero que isso tudo seja padrão em poucos anos.
“Anos” pois muitos ainda possuem o IE6, sem atualização, quem dirá outro navegador.
Leonardo Antonioli 29/06/2009 às 17:02
Muito legal, o Flash que se cuide!
Pode-se usar -xxxx-border-radius para Firefox, Safari e Chrome e fazer com imagens para IE, com folhas de estilos carregadas por comentários condicionais.
Bruno Cunha 30/06/2009 às 17:59
Pois é. Nem no Firefox 3.5 isso funcionou.
Mas testei no Safari 4.0 e é show! Daqui a alguns anos teremos pra todos os browsers, com certeza!
Thiago Retondar 01/07/2009 às 01:06
Uai, acho que deu problema no meu comentário… Let’s go.
Excelente post, mesmo! Muito bem detalhado! #clap #clap #clap
A opinião do Paulo é bem próxima da minha. =)
Eu apenas utulizaria isso para estudos, testes, enfim, só usária realmente quando os browser terem suporte total, ou parcial, do CSS3.
Agora que o Mozilla Firefox 3.5 foi lançado, estamos mais próximos dessa realidade.
Quer um exemplo disso? Acesse a página do iMaster.uol.com.br pelo Mozilla Firefox 3.0.1X e passe o curso sobre os menus dropdown. Verá que está normal.
Agora faça o mesmo com o Mozilla Firefox 3.5, e verá uma sombra em volta.
É isso aí, esse post é apenas uma palha do que o CSS3 é capaz.
Abraços, Diego. ^^/
Gilberto S 03/07/2009 às 16:56
Show de bola.. testei no Google Chrome e funciona… gostei..
Aonde nos leva a morte do Internet Explorer 6? | Boas práticas de Desenvolvimento com Padrões Web 19/07/2009 às 00:40
[...] Firefox, Opera, Safari e Konqueror estão trabalhando em coisas como controle de opacidade, CSS transform, bordas com imagem, sombras, media queries, colunas e os maravilhosos novos seletores do CSS3. [...]
Clica Aqui » Introdução sobre Media Queries 02/09/2009 às 22:58
[...] Introdução ao CSS Animation [...]
Clica Aqui » Aonde nos leva a morte do Internet Explorer 6? 02/09/2009 às 23:01
[...] Firefox, Opera, Safari e Konqueror estão trabalhando em coisas como controle de opacidade, CSS transform, bordas com imagem, sombras, media queries, colunas e os maravilhosos novos seletores do CSS3. [...]
links for 2009-06-29 | O Blog do Léo 19/01/2010 às 01:12
[...] Introdução ao CSS Animation CSS Animation manipula características dos elementos, transformando-os modificando por meio de transições os valores das propriedades definidas dos elementos. (tags: css webdesign tableless) [...]
A MORTE DO INTERNET EXPLORER 6. « Cra solutions 27/03/2010 às 23:01
[...] Firefox, Opera, Safari e Konqueror estão trabalhando em coisas como controle de opacidade, CSS transform, bordas com imagem, sombras, media queries, colunas e os maravilhosos novos seletores do CSS3. [...]