03 Capítulo 3 · Proyecto Final

Proyecto Final de Keyframes

Redactado por
Author Sebastian V.
Fecha de publicación

10/05/2025

Tiempo de lectura

10 min

Tema

@keyframes

El arte de la orquestación

¡Felicidades! Has llegado al final del Capítulo 3. Hasta ahora hemos estudiado las propiedades de forma aislada, como piezas sueltas de un motor. Pero en un proyecto real, la magia no ocurre por usar una propiedad compleja; ocurre cuando logras que múltiples elementos simples se muevan juntos en perfecta sincronía. A esto lo llamamos orquestación.

1. El Loader: movimiento continuo y lineal

Nuestro loader utiliza una rotación infinita. ¿Recuerdas la lección sobre animation-timing-function? Aquí es donde linear brilla. Si usáramos ease, el loader se detendría un instante en cada vuelta, rompiendo la ilusión de flujo constante. Es un loop puro procesado directamente por la GPU gracias a transform: rotate.

2. La Tarjeta flotante: el secreto de lo orgánico

La tarjeta respira. Ese movimiento de vaivén suave no está hecho a mano calculando decenas de porcentajes; es el resultado de combinar animation-direction: alternate con un timing function como ease-in-out. La tarjeta sube suavemente, pierde inercia, y vuelve a bajar sin saltos bruscos. Es física simulada en dos líneas de código.

El verdadero secreto: el ritmo (Staggering)

El sello final de calidad en cualquier interfaz premium es que los elementos no aparecen a la vez como un bloque sólido. Entran en cascada, como en una obra de teatro. Puedes orquestar esto aplicando a todos tus componentes una misma animación de entrada (fade + slide up), pero dándoles a cada uno un animation-delay incremental, y usando animation-fill-mode: both para que se mantengan invisibles mientras esperan su turno en el escenario.

Consejo profesional

¡Has dominado el primer pilar de las animaciones CSS! La base de los @keyframes te servirá en cualquier framework o plataforma en la que desarrolles en el futuro.

Proyecto 1 — Loader de Doble Órbita

Dos anillos concéntricos, cada uno rotando a velocidad y dirección distinta, creando un spinner premium que transmite procesamiento activo con distintas capas de actividad.

> _
<div class="loader-doble-orbita">
  <div class="orbita orbita-1"></div>
  <div class="orbita orbita-2"></div>
</div>
> _

Dos anillos con distintas velocidades (1s, 0.7s) y direcciones (normal, reverse). La combinación crea un spinner visualmente rico sin JavaScript.

Proyecto 2 — Tarjeta Animada

Una tarjeta que flota suavemente de arriba a abajo con ease-in-out. El efecto de brillo sigue la posición del cursor.

> _
<div class="tarjeta-animada">
  <div class="brillo-card"></div>
  <div class="contenido">
    <h3>Genesis Pixel</h3>
    <p>Aprende animaciones CSS avanzadas de forma visual.</p>
  </div>
</div>
> _

Genesis Pixel

Aprende animaciones CSS avanzadas de forma visual.

Una tarjeta que flota suavemente de arriba a abajo con ease-in-out. Al hacer hover aparece un efecto de brillo.

Desafío final

Combina el loader con la tarjeta: cuando pases el ratón sobre la tarjeta, aparece un overlay con el loader (simulando que se está cargando contenido). Al salir el ratón, desaparece.

01 Integra los dos proyectos en un diseño unificado
02 Aplica secuenciación en la carga de los componentes usando animation-delay
03 Optimiza el rendimiento asegurando que las animaciones cíclicas solo alteren transform y opacity
04 Supera el desafío final añadiendo un efecto de brillo que recorra la tarjeta de izquierda a derecha

Lo que aprendiste en este capítulo

01
@keyframes Definir secuencias de movimiento con porcentajes
02
animation-duration Controlar la velocidad de cada ciclo
03
animation-timing-function Curvas de aceleración: ease, linear, cubic-bezier
04
animation-delay Secuenciar elementos en cascada
05
animation-iteration-count Repeticiones infinitas o contadas
06
animation-direction normal, reverse, alternate y alternate-reverse
07
animation-fill-mode Mantener estado final o inicial antes/después
08
animation-play-state Pausar y reanudar animaciones con JavaScript
09
Shorthand animation Sintaxis completa en una sola línea
10
Propiedades animables Solo transform y opacity son compatibles con GPU