CodeForge

Maquetación Web Dinámica / Transformaciones y transiciones

Reto: galería con hover premium

Reto35 min60 XP

Los sitios que se sienten "caros" casi nunca hacen cosas espectaculares: hacen cosas PEQUEÑAS impecablemente calibradas. Este reto es de calibración pura — escala sutil, giro de un par de grados, sombra que responde — y su regla más difícil no es técnica: es contenerte.

Reto

Galería premium: el arte del micro-movimiento

Media30 min60 XP(×2 sin mirar la solución)

Qué debes construir

Una galería de obras (o productos) donde cada tarjeta responde al cursor con movimiento sutil, sombra y foco — y las demás ceden protagonismo:

Requisitos:

  1. Grid de 3 tarjetas mínimo, cada una un enlace real (<a>) con imagen simulada (gradiente), título y metadato.
  2. Al hover Y al foco de teclado: la tarjeta sube (translateY), crece apenas (scale entre 1.02 y 1.04) y se ladea con personalidad (rotate de ±1-2°, no más).
  3. Sombra que responde: en reposo casi nada; al hover, una sombra amplia y difusa que "levanta" la tarjeta (transiciona junto con el transform).
  4. Las demás tarjetas se atenúan cuando una tiene hover — el patrón :has() del módulo 9.
  5. Transiciones de 150-250ms con ease-out explícito, declaradas en el estado base, con su prefers-reduced-motion.

Reglas

  • Las únicas propiedades que transicionan: transform, box-shadow y opacity. Nada de animar width, margin ni top.
  • Presupuesto de movimiento: máximo 6px de elevación, 4% de escala, 2° de giro. Pasarte del presupuesto es fallar el reto — lo premium vive en el "casi no pasó nada".
  • Sombra con rgba suave (opacidad ≤ 0.2), nunca negro sólido.

30:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 10 cerrado: transformas en 2D y 3D, pivoteas donde quieres y todo viaja con curvas de calidad. Pero las transiciones tienen una limitación de nacimiento: necesitan un DETONANTE (hover, foco, un cambio de estado). El módulo 11 rompe esa dependencia con @keyframes — animaciones que viven solas: pulsos, spinners, escenas en loop y hasta animaciones dirigidas por el scroll. CSS en movimiento perpetuo.