0Pricing
React Academy · Lección

Animaciones CSS con keyframes en React

Aplique y elimine dinámicamente animaciones de @keyframes según el estado y los eventos del componente.

Animaciones CSS con keyframes en React es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Definición de @keyframes

Una regla @keyframes describe una animación de varios pasos indicando los valores de las propiedades en distintos puntos de una línea temporal, mediante from/to o porcentajes como 0%, 50% y 100%.

A diferencia de las transiciones, los keyframes pueden describir movimientos complejos de varias etapas que se ejecutan por sí solos, sin un cambio de estado en cada paso.

La abreviatura animation

Puede aplicar un conjunto de keyframes mediante la propiedad animation: animation: slideIn 400ms ease forwards. Esta propiedad agrupa el nombre, la duración, la función de temporización y el modo de relleno.

El modo de relleno forwards mantiene el elemento en los valores de su último keyframe cuando termina la animación, evitando que vuelva bruscamente al inicio.

Aplicar una clase de animación mediante el estado

En React, normalmente añade una clase que contiene la declaración animation cuando el estado pasa a ser verdadero. Por ejemplo, añadir is-entering inicia los keyframes en el momento en que el elemento se monta o cambia una bandera.

Esto mantiene la lógica de la animación en CSS, mientras React solo decide cuándo añadir la clase.

animation-fill-mode

animation-fill-mode controla qué estilos se aplican antes y después de que se ejecute la animación. forwards conserva el último keyframe, backwards aplica el primero durante cualquier retraso y both hace ambas cosas.

Sin forwards, un elemento que se anima hasta un estado visible volvería a ser invisible bruscamente cuando terminara la animación.

animation-direction alternate

animation-direction: alternate reproduce la animación hacia delante y después hacia atrás en cada iteración. Combinada con animation-iteration-count: infinite, crea un movimiento fluido de ida y vuelta, como un efecto de pulsación o respiración.

Resulta útil para indicadores de carga o para un movimiento sutil que atraiga la atención.

Pausa con animation-play-state

animation-play-state puede ser running o paused. Puede controlarlo desde el estado de React; por ejemplo, puede pausar una marquesina al pasar el cursor cambiando una clase.

Como se pausa en lugar de reiniciarse, la animación continúa exactamente desde el punto en que se detuvo.

Volver a activar cambiando la prop key

Una animación de keyframes solo se reproduce una vez cuando su clase se aplica por primera vez; volver a añadir la misma clase no la reinicia. El truco más limpio en React consiste en cambiar la key del elemento para que React vuelva a montar un nodo nuevo y reproduzca la animación desde el principio.

Por ejemplo, key={count} en un toast hace que se vuelva a montar cada vez que count se incrementa.

Respetar prefers-reduced-motion

Algunas personas activan la reducción de movimiento en su sistema operativo por comodidad o accesibilidad. Incluya las animaciones no esenciales en @media (prefers-reduced-motion: reduce) y desactívelas o acórtelas allí.

Respetar esta preferencia hace que su interfaz sea más inclusiva y evita provocar molestias.

Activar al desplazarse con IntersectionObserver

Para animar elementos cuando entran en la ventana gráfica, use un IntersectionObserver dentro de un useEffect. Cuando la entrada pasa a ser visible, actualice el estado, lo que añade la clase de animación.

Esto produce efectos de revelado al desplazarse sin necesidad de listeners de desplazamiento pesados ejecutándose en cada fotograma.

Coordinar con animation-delay

animation-delay escalona el momento en que comienza cada animación de keyframes. Si asigna retrasos crecientes a una lista de elementos, estos se animan en secuencia para crear un revelado coreografiado.

Puede calcular el retraso de cada elemento en React con style={{ animationDelay: i * 80 + 'ms' }}.

Keyframes frente a transiciones

Use transiciones para cambios sencillos entre dos estados provocados por una interacción, y keyframes cuando necesite movimiento en varios pasos, un bucle o una animación que se ejecute independientemente de un cambio de estado.

Ambos son CSS puro, por lo que React solo decide cuándo se añaden las clases y el navegador gestiona los fotogramas.

Comprobación rápida

Compruebe su comprensión del comportamiento de los keyframes.

Resumen

Aprendió a definir @keyframes, aplicarlos con la abreviatura animation, controlar el modo de relleno y la dirección, pausar y volver a activar animaciones, y revelar elementos al desplazarse con IntersectionObserver.

También vio cómo respetar prefers-reduced-motion para ofrecer un movimiento accesible.

Preguntas frecuentes

¿La lección «Animaciones CSS con keyframes en React» es gratis?

Sí — el texto completo de «Animaciones CSS con keyframes en React» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Animaciones CSS con keyframes en React»?

Aplique y elimine dinámicamente animaciones de @keyframes según el estado y los eventos del componente. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Animaciones CSS con keyframes en React»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Transiciones CSS con cambios de estado de React
  2. Animaciones CSS con keyframes en React
  3. useLayoutEffect para mediciones previas a la animación
  4. Animaciones de entrada y salida sin una biblioteca
← Volver a React Academy