01 Capítulo 1 · Proyecto Final

Proyecto Final de Transitions

Redactado por
Author Sebastian V.
Fecha de publicación

26/04/2024

Tiempo de lectura

10 min

Tema

CSS Transitions

El arte de la coreografía interactiva

¡Felicidades! Has llegado al final del Capítulo 1. Hasta ahora hemos estudiado las propiedades de las transiciones de forma aislada (duraciones, curvas, delays). Pero en un proyecto real, la magia no ocurre por usar una propiedad compleja; ocurre cuando logras que múltiples elementos simples interactúen con el usuario en perfecta sincronía. A esto lo llamamos coreografía interactiva.

1. La Product Card Completa

Nuestra tarjeta de producto utiliza una orquestación avanzada. ¿Recuerdas la lección sobre transition-delay y hover interactions? Aquí aplicamos todo: elevamos el contenedor principal, desvanecemos el precio, deslizamos el botón de compra con un ligero retraso y le aplicamos un rebote físico al botón de favorito. Todo controlado mediante un sistema consistente de variables CSS.

2. El Menú Desplegable Tolerante

Un dropdown moderno no usa display: none. Utiliza la combinación mágica de opacity, visibility y transform: scale para entrar fluidamente desde el centro. Pero el verdadero secreto profesional es la tolerancia: al quitar el cursor, el menú tiene un transition-delay de salida para no cerrarse si el usuario mueve el ratón accidentalmente por fuera durante un milisegundo.

El verdadero secreto: El Motion System

El sello final de calidad en esta interfaz es que las velocidades no están escritas a mano en cada clase. Se definen en el :root. Si el equipo de diseño decide que la app debe sentirse más ágil, cambian --t-base de 0.3s a 0.2s, y todos los modales, botones y tarjetas se actualizan instantáneamente sin romper la coreografía.

Consejo profesional

¡Has dominado el puente entre estados en CSS! Las Transitions son el núcleo de la experiencia de usuario diaria. Las aplicarás en absolutamente todo lo interactivo que construyas.

Proyecto 1 — Tarjeta Coreografiada

Una simulación de app con un sidebar expansible y una tarjeta de producto interactiva. Todo sincronizado mediante variables.

> _
<div class="app-ui">
  <!-- Sidebar simplificado -->
  <aside class="ui-sidebar">
    <div class="ui-logo"></div>
    <div class="ui-menu-item active"></div>
    <div class="ui-menu-item"></div>
    <div class="ui-menu-item"></div>
  </aside>

  <!-- Tarjeta de Producto -->
  <main class="ui-main">
    <div class="product-card">
      <div class="product-img">
        <div class="like-btn">♥</div>
      </div>
      <div class="product-info">
        <h3>Zapatillas Nitro</h3>
        <p>$129.99</p>
        <button class="buy-btn">Agregar al Carrito</button>
      </div>
    </div>
  </main>
</div>
> _

Zapatillas Nitro

$129.99

Haz hover en la barra izquierda para expandirla suavemente. Pasa el cursor por la tarjeta para ver cómo el contenido se reacomoda y revela el botón. Haz hover en el corazón para sentir el rebote físico.

Proyecto 2 — Menú Desplegable Tolerante

Un dropdown clásico usando visibilidad y delay para mejorar la experiencia del usuario (UX) previniendo cierres accidentales.

> _
<div class="nav-item">
  Productos
  <div class="nav-dropdown">
    <div class="drop-item">SaaS Platform</div>
    <div class="drop-item">Mobile App</div>
    <div class="drop-item">API Integrations</div>
  </div>
</div>
> _
Productos
SaaS Platform
Mobile App
API Integrations

Haz hover sobre 'Productos'. Cuando muevas el mouse fuera, notarás que no se cierra instantáneamente, dándote margen de error si te saliste por accidente.

Desafío final

Combina ambos proyectos: Añade el menú de navegación en la parte superior de la interfaz de la tarjeta, creando una dashboard completa y orquestada con animaciones consistentes y profesionales.

01 Aplica el sistema de tokens de animación a todo el proyecto
02 Asegúrate de que la tarjeta principal eleve sin causar repaints usando transform
03 Coreografía el botón de compra para que aparezca después de que el título suba
04 Supera el desafío ajustando la tolerancia del dropdown para que no se cierre accidentalmente

Lo que aprendiste en este capítulo

01
¿Qué son? Conectan estados de manera natural, evitando saltos bruscos
02
transition-property Define qué animar. Previene el all para mejor rendimiento
03
transition-duration La velocidad ideal. Microinteracciones (150ms-300ms)
04
transition-timing-function Personalidad de la curva: linear, ease-in, ease-out, cubic-bezier
05
transition-delay Espera intencional para crear secuencias o tolerancia
06
Shorthand propiedad, duración, curva y delay en una sola línea limpia
07
Coreografía en Hover Animar elementos hijos al interactuar con el contenedor padre
08
Focus interactivos Mejorar accesibilidad mediante anillos y animaciones en inputs
09
Visibilidad vs Display Usar opacity y visibility, ya que display: none no es animable
10
GPU Acceleration Preferir transform y opacity para alcanzar los fluidos 60fps