03 Capítulo 3 · Lección 3

Cómo funciona la línea de tiempo

Redactado por
Author Sebastian V.
Fecha de publicación

06/04/2025

Tiempo de lectura

6 min

Tema

@keyframes

Un tren que no puede saltarse estaciones

Piensa en la línea de tiempo de una animación como en una vía de tren. El tren sale de la estación cero (0%) y debe llegar a la estación final (100%). En el camino, puedes construir tantas estaciones intermedias como quieras: 25%, 50%, 75%. El tren siempre pasa por cada estación en el orden correcto, y entre cada par de estaciones viaja a una velocidad que tú controlas.

Cuando defines animation-duration: 4s, estás diciéndole al navegador que el trayecto completo —de 0% a 100%— debe durar exactamente cuatro segundos. Así, el 25% ocurre al segundo uno, el 50% al segundo dos. El tiempo total se divide de forma proporcional en función de los porcentajes que definas.

Los extremos: inicio y final

El 0% y el 100% son los pilares fundamentales de tu línea de tiempo. Si omites el 0%, el navegador tomará como punto de partida los estilos actuales del elemento —y si esos estilos no coinciden con lo que esperabas, verás un salto brusco en el primer fotograma. Definir siempre ambos extremos explícitamente es una práctica que elimina sorpresas desagradables.

El secreto que nadie te cuenta: la interpolación

La interpolación es el proceso matemático por el que el navegador calcula todos los valores que existen entre los keyframes que tú definiste. Si a 0% la opacidad es 0 y a 100% es 1, el navegador calcula 0.1, 0.2, 0.3... 0.9 —cada uno asignado al fotograma correspondiente en esa fracción de segundo— y los pinta en pantalla a 60 fotogramas por segundo.

Este es el trabajo invisible que el navegador hace por ti, y es el que convierte tus estados estáticos en una ilusión de movimiento vivo.

El timing-function actúa tramo a tramo

Aquí viene algo que sorprende a muchos desarrolladores: la función de aceleración (easing) no se aplica a toda la animación como un bloque, sino individualmente entre cada par de keyframes adyacentes. Esto significa que puedes hacer que el elemento acelere rápido del 0% al 50%, y luego desacelere suavemente del 50% al 100%, simplemente definiendo distintos timing-functions dentro de cada fotograma clave.

Consejo profesional

Recuerda que las funciones de aceleración (easing) actúan entre cada intervalo. Si pasas de 0% a 50% y luego a 100%, el easing se aplicará del 0% al 50%, y se reiniciará del 50% al 100%.

Ejemplo práctico

> _
<div class="timeline-container">
  <div class="timeline-dot"></div>
</div>
> _

Una esfera que avanza por una pista y cambia su forma, color y escala en checkpoints específicos de la línea de tiempo.

Errores comunes

01
Pensar que el easing es global El easing se ejecuta por tramo de keyframes, no de forma uniforme en toda la duración.
02
Usar porcentajes desordenados Escribir 50% antes de 25% funciona, pero destruye la legibilidad del código.
03
Saltos de unidades Si en 0% usas transform: scale(1) y en 50% usas transform: rotate(45deg) sin escala, la animación de escala puede romperse.

Practica lo aprendido

Define una línea de tiempo que haga rebotar un elemento en cuatro fases de altura distintas.

01 Crea una línea de tiempo con al menos 4 puntos (0%, 33%, 66%, 100%)
02 Aplica cambios de posición o escala en cada punto para ver la interpolación
03 Observa cómo el navegador calcula los valores intermedios
04 Modifica la curva de velocidad (linear / ease) para alterar el flujo del tiempo