View Transitions: Animaciones entre estados

Crea transiciones cinematográficas entre diferentes vistas o estados de tu aplicación con el mínimo esfuerzo de código.

Tradicionalmente, animar el cambio de una página a otra requería manipular el DOM pesadamente con JS o usar frameworks complejos. La **View Transitions API** permite que el navegador capture una 'foto' del estado viejo y otra del nuevo, y las anime entre sí automáticamente.

El concepto clave es el seudoelemento `root`. Cuando ocurre una transición, el navegador genera un árbol de elementos temporales que podemos estilizar para personalizar cómo desaparece lo antiguo y cómo entra lo nuevo.

En esta lección aprenderemos a controlar la transición global de la página y a personalizar la duración y el tipo de animación de esa transición.

  • Old vs New.
  • Cuando activas una transición (vía `document.startViewTransition`), el navegador crea seudoelementos especiales:
  • - `::view-transition-old(root)`: La captura de pantalla del estado anterior.
  • - `::view-transition-new(root)`: La vista en vivo del nuevo estado.
  • Por defecto, el navegador hace un desvanecimiento suave (cross-fade). Pero podemos cambiar esto usando animaciones estándar de CSS.

El árbol de transición

Old vs New.

Cuando activas una transición (vía `document.startViewTransition`), el navegador crea seudoelementos especiales:

- `::view-transition-old(root)`: La captura de pantalla del estado anterior.

- `::view-transition-new(root)`: La vista en vivo del nuevo estado.

Por defecto, el navegador hace un desvanecimiento suave (cross-fade). Pero podemos cambiar esto usando animaciones estándar de CSS.

Personalizando la Transición

Control total sobre el root.

Para que la transición sea única, podemos aplicar `@keyframes` a estos seudoelementos. Por ejemplo, podemos hacer que la página vieja se deslice hacia la izquierda mientras la nueva entra desde la derecha.

Un punto vital es la propiedad `view-transition-name`. Si la asignas a un elemento específico (como una imagen), el navegador la animará de forma independiente al resto de la página, creando un efecto de 'vuelo' impresionante.

CSS
52

View Transitions: Animaciones entre estados

Crea transiciones cinematográficas entre diferentes vistas o estados de tu aplicación con el mínimo esfuerzo de código.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

El árbol de transición

Old vs New.

1

Cuando activas una transición (vía `document.startViewTransition`), el navegador crea seudoelementos especiales:

2

- `::view-transition-old(root)`: La captura de pantalla del estado anterior.

3

- `::view-transition-new(root)`: La vista en vivo del nuevo estado.

4

Por defecto, el navegador hace un desvanecimiento suave (cross-fade). Pero podemos cambiar esto usando animaciones estándar de CSS.

Personalizando la Transición

Control total sobre el root.

Para que la transición sea única, podemos aplicar `@keyframes` a estos seudoelementos. Por ejemplo, podemos hacer que la página vieja se deslice hacia la izquierda mientras la nueva entra desde la derecha.

Un punto vital es la propiedad `view-transition-name`. Si la asignas a un elemento específico (como una imagen), el navegador la animará de forma independiente al resto de la página, creando un efecto de 'vuelo' impresionante.

🧪 Aprende probando

Ejemplo Demo: Transición de Deslizamiento Haz clic en el botón para simular un cambio de página con una transición de deslizamiento personalizada.
Ejemplo Reto: Ralentiza la transición El cliente quiere una transición muy dramática. Cambia la duración de la animación del 'old(root)' a 2 segundos.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre CSS.

Test de CSS

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .