Saltar la navegación

Animaciones

Concepto

La propiedad animation es utilizada para definir una animación en CSS. Las animaciones, a diferencia de las transiciones, permiten cambiar los valores iniciales de las propiedades de estilo, a valores finales de las propiedades. La magia está en que este "cambio" se puede especificar mediante varios puntos denominados fotogramas (o keyframes).

A diferencia de como las transiciones, las animaciones no requieren definir un evento desencadenante de parte del usuario para ejecutar el efecto. No obstante, si se lo requiere, se podría definir el evento desencadenante.

Aplicar una animación consiste en estos simples pasos:

Paso 1:  Definir la Animación

Usando la instrucción @keyframe, definir el nombre de la animación (ej., "mi_animacion") y luego indicar la secuencia de pasos que tendrá la animación. Ejemplo:


@keyframes animacion-color {
  from { background: red; }
  to { background: green; }
}

La secuencia de pasos pueden ser definida de dos maneras.

  1. La primera, definiendo el fotograma origen con la instrucción from y el fotograma final con to (como se muestra en el ejemplo).
  2. La segunda implica pensar en la secuencia de pasos como si fuere una escala porcentual, donde 0% es el fotograma inicial y 100% es el fotograma final, por lo que para definir un fotograma entre el inicio y el fin, basta con definir un porcentaje entre 0% y 100%.

Paso 2: Aplicar animación al elemento HTML

Dentro de la regla de estilo del elemento HTML, usa la propiedad animation indicando el nombre de la animación definida en el paso 1 y configura ritmo, dirección y duración de la animación. En el ejemplo, la línea 5 indica el nombre de animación a ejecutar mediante la propiedad animation  :y "5s" indica la duración de la animación.

.element {
  width: 100px;
  height: 100px;
  background: grey;
  animation: animacion-color 5s;
}

 @keyframes animacion-color {. . .} /* Paso 1 */

Para configurar estos últimos detalles, se debe hacer uso de las siguientes sup-propiedades:

Sub-propiedad Descripción
animation-name Indica el nombre de la animación a ejecutar
animation-duration Duración de la animación (en segundos)
animation-delay Tiempo (en segundos) que tarda la animación en ejecutarse
animation-direction Orden de ejecución de los fotogramas de la animación. Puede ser en orden normal o en reversa, por ejemplo.
animation-iteration-count Número de veces que se ejecutará la animación (la secuencia de pasos)
animation-timing-function Velocidad de la animación, especificada mediante la curva bezier.
Si se tuviera más animaciones definidas, éstas se pueden asignar al elemento HTML. Por ejemplo, si tendríamos la animación "mi_animacion" a más de la que tenemos definida en la línea 8, las dos animaciones podrían asignarse al elemento HTML en la línea 5 de la siguiente manera: animation: animacion-color 5s, mi_animacion 3s;

Aprende practicando!