01 Capítulo 1 · Lección 14

Sistema Consistente de UI

Redactado por
Author Sebastian V.
Fecha de publicación

14/04/2024

Tiempo de lectura

5 min

Tema

CSS Transitions

El problema de los números mágicos

A medida que tu proyecto web crece, tendrás docenas de botones, tarjetas, inputs y modales. Si en cada uno de ellos te pones a escribir duraciones aleatorias (0.2s aquí, 0.35s allá, ease acá, linear en otro lado), tu web terminará pareciendo un parque de diversiones caótico. No habrá consistencia. Tu marca no tendrá una "identidad de movimiento".

Motion Tokens

Al igual que guardamos nuestra paleta de colores en Variables CSS (Design Tokens), debemos hacer lo mismo con nuestras reglas de animación (Motion Tokens). Definiremos una escala de duraciones y una paleta de curvas (easing).

> _
/* Ejemplo de una escala profesional */
--duration-fast: 150ms;   /* Microinteracciones, hovers simples */
--duration-normal: 300ms; /* Desplegables, menús, estados focales */
--duration-slow: 500ms;   /* Transiciones de página, modales grandes */

Consejo profesional

Frameworks modernos como Tailwind CSS incluyen un sistema de escalas por defecto (clases como duration-300 o ease-in-out). Usa esos tokens de diseño para no reinventar la rueda.

Ejemplo práctico

> _
<div class="system-demo">
  <button class="btn">Botón Principal</button>
  <input type="text" class="input" placeholder="Campo de texto" />
  <div class="tag">Etiqueta</div>
</div>

<style>
  .system-demo {
    display: flex;
    flex-direction: column;
    gap: 16px;
    align-items: center;
  }
</style>
> _
Etiqueta

Todos los elementos de este contenedor están sincronizados usando variables. Si hiciéramos un cambio global, todos responderían al unísono manteniendo la armonía en toda la página.

Errores comunes

01
Valores quemados (Hardcoded) Escribir 0.28s en diferentes archivos de manera manual. Usa variables para que los cambios sean escalables a nivel de sistema.
02
Variables excesivamente complejas Tener --duration-200, --duration-250, --duration-300. Demasiadas opciones derrotan el propósito del sistema. Limítate a rápido, base y lento.

Practica lo aprendido

Audita tu código actual y reemplaza todos los tiempos estáticos por variables CSS.

01 Extrae tus duraciones comunes (150ms, 300ms) a variables CSS.
02 Extrae tus curvas de Bezier favoritas a variables.
03 Usa estas variables en todos los componentes de tu proyecto.
04 Si un día quieres que la app se sienta "más rápida", solo cambias las variables base.
05 A esto se le llama un "Motion Design System".