En la entrada de introducción sobre animaciones veíamos el funcionamiento básico sobre el ejemplo de rotar una imagen. En resumen, podíamos hacer que el navegador animase el cambio en una clase CSS eligiendo la duración y la función de interpolación y esto funcionaba con cualquier valor interpolable, es decir, que pudiera ser transformado en valores numéricos.
Respecto a la función de animación veíamos las que venían por defecto implementadas y usábamos ease-in-out. Hoy vamos a ver como podemos personalizar más la animación. El sistema para personalización de animaciones de CSS3 es similar al de cualquier programa de animación, basándose en “keyframes” o fotogramas clave.
@-moz-keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} } @-webkit-keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} } @-ms-keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} } @-o-keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} } @keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} } #miImagen{ animation: movimiento 4s 4 alternate; -moz-animation: movimiento 4s 4 alternate; -webkit-animation: movimiento 4s 4 alternate; -o-animation: movimiento 4s 4 alternate; -ms-animation: movimiento 4s 4 alternate; }
@keyframes movimiento{ 0% {margin-left:0px;} 75% {margin-left:50px;} 100% {margin-left: 400px;} }
Como se ve en el ejemplo, cada keyframe se define como el % de tiempo de la animación en el que tiene que suceder. Si pusiéramos a funcionar esta animación con una duración de 4 segundos. Durante los primeros 3 segundos movería la imagen 50 píxeles a la derecha, y entre el segundo 3 y 4 movería otros 350 píxeles a la derecha la imagen, consiguiendo ese efecto de primero lento y después rápido.
@-moz-keyframes movimiento{ ... } @-ms-keyframes movimiento{ ... } @-webkit-keyframes movimiento{ ... } @-o-keyframes movimiento{ ... } @keyframes movimiento{ ... }
#miImagen{ animation: movimiento 4s 4 alternate-reverse; }
Buenas, una consulta…estoy trabajando con animacion en css3 pero cuando valido el codigo por la pagina de la W3C me indica que todas las funciones de @-webkit-keyframes,@-moz-keyframes,etc aun no han sido implementadas por lo cual me genera errores. Habra forma de corregir eso sin afectar las animaciones ya hechas?. Gracias.
Hola MLC, perdona por la tardanza en contestar. Las animaciones todavía son características experimentales, por lo que la única manera de que valide por la W3C sería usar solo la versión sin prefijo de navegador (@keyframes). Pero entonces no funcionaría en ningún navegador.
A día de hoy si se quieren que funcione no va a validar, seguramente en un año o dos se pueda usar sin prefijos y ya valide. Es lo malo de usar tecnologías punteras.
Muchas gracias por comentar.