Imagem post: Introdução ao CSS Animation
CSS

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.

Por
25

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.

Exemplo de CSS Animation

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:
http://www.w3.org/TR/css3-animations/

Há bastante coisa para se ler aqui:

25

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://about.me/diegoeis/

Mais posts do autor

  • William Bruno

    Show de bola!
    Poder controlar esses efeitos sem depender de Javascript, será um sonho! huahauhauha

  • http://www.paulodetarso.com Paulo de Tarso F. M.

    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!

  • http://floripasom.com/video/ Acelio F

    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.

  • https://twitter.com/thiagoretondar Thiago Retondar

    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.

  • http://www.josetelmo.com José Telmo

    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.

  • http://twitter.com/diegoeis/ Diego Eis

    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.

  • http://www.twitter.com Marcio BDA

    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

  • http://www.joni.com.br Joni Pavanello

    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.

  • http://www.tobeguarany.com/internet_no_brasil.php Leonardo Antonioli

    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.

  • http://www.brunocunha.com Bruno Cunha

    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!

  • http://twitter.com/thiagoretondar Thiago Retondar

    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

    Show de bola.. testei no Google Chrome e funciona… gostei..

  • Pingback: Aonde nos leva a morte do Internet Explorer 6? | Boas práticas de Desenvolvimento com Padrões Web

  • Pingback: Clica Aqui » Introdução sobre Media Queries

  • Pingback: Clica Aqui » Aonde nos leva a morte do Internet Explorer 6?

  • Pingback: links for 2009-06-29 | O Blog do Léo

  • Pingback: A MORTE DO INTERNET EXPLORER 6. « Cra solutions

  • Alcides Lopes

    1. Muito obrigado Diego.

    2. Thiago “O opinião do Paulo é bem parecida com a minha.” não amigo, a sua é parecida com a do Paulo, humildade é o que falta na área de informática.
    Depois a gente vai trabalhar numa agência sei lá, e encontra caras com os quais é impossível trabalhar. Humildade primeiro.

    3. Thiago você cita ao Diego, mas A CITA É INCOMPLETA, tomara nunca tenha que trabalhar junto com você em nenhum lugar.
    “Tudo o que eu falarei aqui sobre CSS Animation e CSS Transforms só podem ser testados no Safari.”
    “O que está errado, pois é qualquer browser com o renderizador WebKit, tal como você disse no sétimo parágrafo.”
    Esperto o garoto! cortou a frase, o Diego continuava: “só podem ser testados no Safari ou em qualquer outro browser que utilize as últimas versões do Webkit.” Thiago você CORTOU A FRASE DO DIEGO, PARA DEPOIS CRITICAR, esse tipo de atitude devemos combater para que o país progrida.

    4. Uma boa de você Thiago, não é mais que a repetição do comentário, aí sim, BRILHANTE, do PAULO.

    5. Diego, um pau pra você, você no post FALOU IMPLEMENTAR, e depois falou “Isso é puro estudo. Curiosidade.” não dá, você disse IMPLEMENTAR. E nisso estou com o Paulo, se a gente trabalha numa agência não pode implementar nada que não esteja no Firefox e Explorer.
    O desenvolvedor deve VESTIR A CAMISA DO W3C não de empresários como o Steve Jobs. Ja não dá para aguentar mas “BillGates da vida”. Aquele estudante de direito (sim BG estudava direito!não informática) que mantivera no atrasso a informática por duas décadas. Os usuários estiveram duas décadas usando Word e Excel, caixas pretas que não o deixaram evoluir. Steve Jobs e seu Safari, tudo bom, mas o cara não passa dum típico empresário americano, quer dizer, um empresário que fala de livre competência mas sempre está tentando o monopólio.
    Apoio aqueles que sao respeituosos com o desenvolvedor, o W3C e browsers como o MozillaFirefox (ou seja o Netscape) Konqueror etc.
    Um abraço Diego! e haja paciência para aguentar os Thiagos que temos na profissão!

  • Wellington Torrejais da Silva

    Teste do um nokia 2720, mas não funcionou. O gecko do firefox tem um conceitos legais sobre o tema, você poderia portas um artigo.

  • Pingback: Novo parser HTML5 – FF4 | Tableless - Desenvolvimento com Padrões Web

  • Pingback: Introdução ao CSS Shaders | Tableless

  • Alex Batista

    CSS não foi feito para fazer iteração com as páginas, cabe ao JavaScript fazer esse papel. Contudo, é possível fazer “pequenas ações”, mas NUNCA uma animação.

  • Pingback: Exemplo de CSS 3D Transform | Tableless

  • Pingback: WebPatterns – Seu site nos padrões WEB » Archive » Introdução ao CSS Shaders – Parte 1

  • Pingback: Introdução ao CSS 3D – Flip Card

Mais artigos