02 Capítulo 2 · Proyecto Final

Proyecto Final de Transform

Redactado por
Author Sebastian V.
Fecha de publicación

31/07/2024

Tiempo de lectura

12 min

Tema

CSS Transform

Todo lo que aprendiste, en un solo proyecto

Has llegado hasta aquí. Has aprendido a mover elementos con translate, a escalarlos con scale, a girarlos con rotate, a distorsionarlos con skew, a controlar su origen de transformación, a combinar múltiples efectos y a sumergirte en el espacio tridimensional del navegador.

Ahora es el momento de juntar todo eso en algo real. Algo que puedas mostrar, compartir y usar como punto de partida en tus proyectos. El objetivo de este proyecto final no es que copies el código: es que lo entiendas lo suficiente como para adaptarlo y hacerlo tuyo.

Consejo profesional

En producción, asegúrate de respetar las preferencias de movimiento reducido del sistema operativo del usuario. Usa @media (prefers-reduced-motion: reduce) para desactivar o simplificar las animaciones. Un usuario con epilepsia fotosensible o vértigo puede verse seriamente afectado por animaciones de rotación continua.

Proyecto 1 — Tarjeta Tilt Interactiva

Una tarjeta que sigue al ratón en 3D usando rotateX y rotateY calculados con JavaScript. El efecto de brillo (highlight) se mueve con la posición del cursor usando una variable CSS dinámica.

> _
<div class="escena-tarjeta-3d">
  <div class="tarjeta-3d" id="tarjeta-tilt">
    <div class="brillo"></div>
    <div class="contenido-tarjeta">
      <span class="badge">Premium</span>
      <h3 style="color: var(--color-bg)">Genesis Pixel</h3>
      <p style="color: var(--color-bg); opacity: 0.7; font-weight: 700; font-family: var(--font-afronaut, system-ui, sans-serif);">Mueve el ratón sobre la tarjeta</p>
    </div>
  </div>
</div>
> _
PREMIUM

Genesis Pixel

Mueve el ratón

Mueve el ratón sobre la tarjeta. El tilt 3D sigue la posición exacta del cursor y el brillo se posiciona bajo el ratón usando una variable CSS personalizada.

Proyecto 2 — Loader de Tres Anillos

Tres 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-avanzado">
  <div class="anillo anillo-1"></div>
  <div class="anillo anillo-2"></div>
  <div class="anillo anillo-3"></div>
</div>
> _

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

Desafío final

Combina la tarjeta tilt con el loader: 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. Usa todas las técnicas del capítulo.

01 Construye la tarjeta tilt siguiendo el código HTML y CSS de la lección
02 Añade el JavaScript que captura la posición del ratón
03 Implementa el loader de tres anillos con animaciones de distinta velocidad
04 Combina el loader con la tarjeta para un proyecto de presentación completo

Lo que aprendiste en este capítulo

01
translateX / translateY Mover elementos en ejes horizontales y verticales sin afectar el layout
02
translate(x, y) Centrado perfecto con translate(-50%, -50%) en absoluto
03
scale() Efectos de hover premium con spring ease y feedback táctil en :active
04
rotate() Spinners, acordeones y conversión de iconos
05
skew() Geometría diagonal para diseños con energía y velocidad
06
transform-origin Control del punto de pivote para rotaciones y escalados precisos
07
Múltiples transforms Coreografía de movimiento en múltiples elementos coordinados
08
preserve-3d + perspective El espacio tridimensional del navegador y sus dos pilares
09
rotateX / rotateY Tarjetas flip y animaciones de entrada 3D
10
translateZ + scale3d Profundidad y paralaje de capas en el eje Z
11
perspective-origin Punto de vista configurable para composiciones isométricas
12
GPU compositing Por qué transform es siempre preferible a top/left/width para animaciones