Introducción
Una animación no es más que un cambio producido a lo largo de una serie de fotogramas. Al realizar estos cambios progresivamente se produce una sensación de movimiento. Con keyframes tenemos la posibilidad de controlar de principio a fin, cómo queremos que esos cambios afecten a nuestros fotogramas.
Elementos de una animación CSS
Una animación se registra a través de la regla @keyframes
y ejecuta mediante la propiedad animation
.
Keyframes
Así de simple es la asignación de keyframes. Asignamos un nombre identificativo y dentro de los símbolos de llaves indicamos un inicio (from
) y un final (to
) de nuestra animación.
También podemos asignar valores porcentuales (incluso múltiples valores), lo que nos permite controlar con más precisión el progreso de nuestra animación.
Animation
Para asociar la animación registrada a un elemento utilizamos a la propiedad animation
:
La animación previa durará 3 segundos y se repetirá indefinidamente. También podemos especificar cada una de las propiedades por separado:
Puedes consultar la documentación sobre animation
y sus propiedades en la especificación CSS3.
Dentro de animation
también contamos con la función steps()
, que permitirá especificar en cuantos pasos se ejecutará nuestra animación.
En el ejemplo anterior nuestra animación durará 10 segundos y tendrá 10 pasos o fotogramas, por lo que se ejecutará un paso cada segundo y posiblemente nuestra animación ya no será tan fluida.
Ejemplos de keyframes
Animación lineal
Con esto conseguimos que nuestra animación comience con un objeto transparente y que, progresivamente, termine siendo opaco. Y vuelta a empezar.
Animación no lineal
El porcentaje de progreso también se puede especificar en múltiples pasos, tanto englobando los pasos con propiedades repetidas como por separado:
Mediante esta técnica podremos conseguir efectos como rebote, donde una animación cambia su ritmo a medida que avanza.
Puedes apoyarme para que pueda dedicar aún más tiempo a escribir artículos y tener recursos para crear nuevos proyectos. ¡Gracias!