Scroll-Driven Animations: El fin de ScrollMagic

Crea animaciones vinculadas al desplazamiento del usuario usando solo CSS. Domina animation-timeline para efectos de scroll y parallax.

Hasta hace poco, crear una barra de progreso de lectura o efectos de revelado al hacer scroll requería librerías pesadas de JavaScript como ScrollMagic o GSAP. Esto penalizaba el rendimiento (puntuación de INP en Core Web Vitals).

Las **Scroll-Driven Animations** permiten vincular el progreso de una animación de CSS (`@keyframes`) directamente a la posición de scroll de un contenedor. El navegador optimiza esto en el hilo del compositor, logrando una fluidez de 60fps constantes.

En esta lección aprenderemos a usar `scroll()` para progresos globales y `view()` para animar elementos según entran o salen del viewport.

  • Animaciones basadas en la posición del contenedor.
  • La función `scroll()` crea una línea de tiempo basada en el desplazamiento. Se usa principalmente para elementos que reaccionan a cuánto ha bajado el usuario en la página.
  • Un caso de uso perfecto es la **barra de progreso de lectura**. Vinculamos el ancho (`width`) de una línea al scroll de la página: de 0% al inicio a 100% al final.
  • Animar elementos al entrar en escena.
  • A diferencia de `scroll()`, `view()` se basa en la visibilidad del propio elemento dentro del área de scroll (viewport). Es el sustituto nativo del `Intersection Observer` de JS.

La función scroll()

Animaciones basadas en la posición del contenedor.

La función `scroll()` crea una línea de tiempo basada en el desplazamiento. Se usa principalmente para elementos que reaccionan a cuánto ha bajado el usuario en la página.

Un caso de uso perfecto es la **barra de progreso de lectura**. Vinculamos el ancho (`width`) de una línea al scroll de la página: de 0% al inicio a 100% al final.

La función view()

Animar elementos al entrar en escena.

A diferencia de `scroll()`, `view()` se basa en la visibilidad del propio elemento dentro del área de scroll (viewport). Es el sustituto nativo del `Intersection Observer` de JS.

Podemos definir **rangos de animación** (`animation-range`): `entry` (cuando empieza a asomar), `exit` (cuando se va) o `cover` (todo el trayecto). Esto permite crear efectos de revelado (fade-in) elegantes con apenas dos líneas de CSS.

CSS
51

Scroll-Driven Animations: El fin de ScrollMagic

Crea animaciones vinculadas al desplazamiento del usuario usando solo CSS. Domina animation-timeline para efectos de scroll y parallax.

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

📘 Teoría

La función scroll()

Animaciones basadas en la posición del contenedor.

1

La función `scroll()` crea una línea de tiempo basada en el desplazamiento. Se usa principalmente para elementos que reaccionan a cuánto ha bajado el usuario en la página.

2

Un caso de uso perfecto es la **barra de progreso de lectura**. Vinculamos el ancho (`width`) de una línea al scroll de la página: de 0% al inicio a 100% al final.

La función view()

Animar elementos al entrar en escena.

A diferencia de `scroll()`, `view()` se basa en la visibilidad del propio elemento dentro del área de scroll (viewport). Es el sustituto nativo del `Intersection Observer` de JS.

Podemos definir **rangos de animación** (`animation-range`): `entry` (cuando empieza a asomar), `exit` (cuando se va) o `cover` (todo el trayecto). Esto permite crear efectos de revelado (fade-in) elegantes con apenas dos líneas de CSS.

🧭 Visuales clave

Scroll-driven animations paso a paso

Visual de apoyo para entender entry cover y rango de animacion.

Esquema del flujo scroll a timeline para animaciones modernas en CSS.

Scroll-driven animations en contexto

Refuerza la idea general de vincular animación y desplazamiento sin depender de JavaScript.

Resumen visual de scroll-driven animations en CSS

Cómo funciona view() en scroll animations

Muy útil para comprender cuándo empieza a animarse un elemento al entrar en el viewport.

Diagrama de la función view() aplicada a animaciones CSS según entrada y cobertura del elemento

🧪 Aprende probando

Ejemplo Demo: Barra de lectura y Revelado Desplaza el contenido hacia abajo. Verás una barra azul arriba que crece y las tarjetas que aparecen con un efecto de escala al entrar.
Ejemplo Demo interactiva: scroll reveal solo con CSS Explora una demo completa basada en `view()` para ver entradas laterales, desde abajo y con escala sin depender de JavaScript.
Ejemplo Reto: Efecto Parallax Nativo Usa 'animation-timeline: scroll()' para que la imagen de fondo se mueva más lento que el texto al hacer scroll.
Ejemplo Demo interactiva: líneas y progreso vinculados al scroll Visualiza barras, subrayados y trazos SVG sincronizados con `scroll()` y `animation-range`.
Ejemplo Demo interactiva: parallax solo con CSS Recorre una demo completa con varias capas de parallax para entender profundidad, ritmo y legibilidad visual.

🧰 Recursos

¿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 .