Proyecto Final de 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.