0Pricing
React Academy · Lección

Transiciones CSS con cambios de estado de React

Active transiciones CSS alternando nombres de clase con el estado de React: transiciones de opacidad, transformación y color.

Transiciones CSS con cambios de estado de React es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 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.

Qué es una transición de CSS

Una transition de CSS interpola suavemente una propiedad entre dos valores a lo largo del tiempo, en lugar de cambiarla bruscamente. Se declara en el elemento mediante transition: property duration timing-function delay.

En React, normalmente no se animan manualmente los valores en línea. En su lugar, se alterna una clase o un estilo mediante el estado y CSS gestiona los fotogramas intermedios.

Activar una transición alternando una clase

El patrón habitual consiste en mantener un booleano en useState y cambiar una clase de CSS cuando su valor cambia. Cuando cambia la clase, la propiedad objetivo obtiene un valor nuevo y CSS anima la diferencia.

Por ejemplo, isOpen determina si el elemento tiene la clase open, y la clase open establece una altura o un transform diferente.

Un estado booleano isVisible

Una configuración habitual es const [isVisible, setIsVisible] = useState(false). Un botón llama a setIsVisible(v => !v) para invertir su valor.

Usar el actualizador funcional v => !v evita estados obsoletos cuando se ponen varias actualizaciones en cola, lo que mantiene fiable la alternancia.

Clase condicional con cadenas de plantilla

Puede construir className dinámicamente: className={'panel ' + (isVisible ? 'panel--shown' : 'panel--hidden')}. La clase base contiene la declaración de transición y las clases modificadoras contienen los valores inicial y final.

Mantener transition en la clase base, que siempre está presente, hace que la animación funcione en ambas direcciones, al abrir y al cerrar.

Transicionar transform y opacity a la vez

Puede animar varias propiedades a la vez enumerándolas: transition: transform 300ms ease, opacity 300ms ease. Un efecto de desvanecimiento y desplazamiento combina un cambio de opacity con un translateY en transform.

Animar ambas propiedades a la vez produce una entrada cuidada, en la que el elemento se desliza hacia arriba mientras aparece gradualmente.

Crear un efecto escalonado con transition-delay

transition-delay retrasa el inicio de una transición. Al asignar retrasos crecientes a los elementos de una lista, crea una cascada escalonada en la que cada elemento se anima ligeramente después del anterior.

En React puede calcular el retraso en línea, por ejemplo: style={{ transitionDelay: index * 50 + 'ms' }}.

Por qué display no admite transiciones

La propiedad display no se puede animar porque no tiene valores intermedios entre none y block. Transicionarla produce un cambio instantáneo, no un desvanecimiento.

En su lugar, anime opacity para crear el desvanecimiento visual y alterne pointer-events: none para que el elemento oculto ignore los clics mientras no sea visible.

Funciones de temporización

La función de temporización determina cómo cambia la velocidad durante la duración. linear se mueve a velocidad constante, ease empieza y termina lentamente, y cubic-bezier(...) permite definir una curva completamente personalizada.

Las curvas personalizadas son ideales para conseguir efectos rápidos o elásticos; por ejemplo, cubic-bezier(0.34, 1.56, 0.64, 1) produce una ligera sobreoscilación.

Variables CSS para la duración

Puede guardar las duraciones en propiedades personalizadas de CSS como --speed: 300ms y reutilizarlas: transition: opacity var(--speed) ease. Esto mantiene la temporización coherente entre los componentes.

Incluso React puede establecer la variable en línea mediante style={{ '--speed': '500ms' }}, lo que permite que las props controlen la temporización de la animación.

Prefiera transform y opacity para mejorar el rendimiento

Los navegadores pueden animar transform y opacity en el compositor de la GPU sin recalcular el diseño ni volver a pintar. Animar propiedades como width, top o margin obliga a realizar trabajo de diseño en cada fotograma y puede provocar tirones.

Cuando necesite mover, escalar o rotar, utilice transform; cuando necesite crear un desvanecimiento, utilice opacity.

Integración

Una transición fiable en React combina un estado booleano, una clase modificadora condicional y una clase base que declara transition para propiedades adecuadas para la GPU. El estado cambia la clase y CSS se encarga de la animación.

Esto mantiene sus componentes declarativos y aprovecha el navegador para producir un movimiento fluido.

Comprobación rápida

Compruebe su comprensión de las animaciones eficientes.

Resumen

Ha aprendido a activar transiciones de CSS alternando clases controladas por el estado, a animar transform y opacity conjuntamente, a crear efectos escalonados con retrasos y a evitar las transiciones de display usando opacity junto con pointer-events.

También ha visto las funciones de temporización, las duraciones mediante variables CSS y por qué las propiedades compuestas por la GPU mantienen la fluidez del movimiento.

Preguntas frecuentes

¿La lección «Transiciones CSS con cambios de estado de React» es gratis?

Sí — el texto completo de «Transiciones CSS con cambios de estado de 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 «Transiciones CSS con cambios de estado de React»?

Active transiciones CSS alternando nombres de clase con el estado de React: transiciones de opacidad, transformación y color. 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 1 de 4.

¿Cuánto tiempo toma la lección «Transiciones CSS con cambios de estado de 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