Composición tipográfica colorida
· 8 min
Tipografía expresiva sin romper la accesibilidad
- UI
- CSS
- Accesibilidad
- Tipografía
La tipografía es la mitad de la interfaz: organiza la jerarquía, marca el tono y condiciona la lectura. La clave es ser expresivo sin perder accesibilidad. Aquí tienes un enfoque práctico.
1. Usa fuentes variables con cabeza
- Menos archivos, más control: una variable font te da pesos/ejes sin múltiples descargas. Limita los ejes que sirves (ej.
wght400–700). - Carga simple: si usas Next, importa con
next/fonty restringe subsets y pesos necesarios. - No lo llenes de adornos: evita ejes decorativos si restan legibilidad (slant/extremo).
:root {
--font-body: "InterVariable", system-ui, -apple-system, sans-serif;
--font-title: "GeneralSansVariable", system-ui, sans-serif;
}
2. Tamaños fluidos con clamp()
- Haz que los títulos crezcan en desktop y sigan legibles en móvil.
- Regla rápida:
clamp(tamaño-min, factor * vw + offset, tamaño-max).
h1 {
font-size: clamp(2rem, 3vw + 1rem, 3.5rem);
line-height: 1.1;
}
body {
font-size: clamp(1rem, 1vw + 0.75rem, 1.1rem);
line-height: 1.55;
}
3. Ritmo y legibilidad antes que forma
- Line-height: 1.4–1.6 para texto; 1.1–1.3 para títulos.
- Ancho de columna: 60–80 caracteres evita fatiga. Usa
max-width: 65ch. - Espaciado: listas y párrafos con
margin-blockconsistente; mayúsculas conletter-spacing: 0.02em.
.prose {
max-width: 65ch;
letter-spacing: 0.01em;
}
.prose p + p {
margin-top: 0.85em;
}
4. Contraste y fondos amables
- Revisa contraste (AA mínimo: 4.5:1 en texto normal).
- Evita texto sobre fotos ruidosas; añade overlays o usa tarjetas sólidas.
- Usa tokens para colores y prueba ambos temas si tienes dark mode.
5. Animaciones con cuidado
- Si animas texto, respeta
prefers-reduced-motion. - Usa transiciones cortas (120–180ms) en
color/backgroundpara estados hover/focus.
@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
transition: none !important;
}
}
6. Sistema tipográfico reusable
Define escala y tokens y úsalos en componentes, no en línea.
:root {
--fs-xs: 0.85rem;
--fs-sm: 0.95rem;
--fs-md: 1rem;
--fs-lg: 1.25rem;
--fs-xl: 1.6rem;
--fs-2xl: 2.4rem;
}
.heading-1 { font: 700 var(--fs-2xl) / 1.1 var(--font-title); }
.heading-2 { font: 700 var(--fs-xl) / 1.2 var(--font-title); }
.text-body { font: 400 var(--fs-md) / 1.55 var(--font-body); }
.text-small { font: 500 var(--fs-sm) / 1.45 var(--font-body); }
7. Checklist rápida
- Fuentes variables con pesos limitados.
- Títulos y body con
clamp(). - Columnas a ~65ch; line-height ajustado.
- Contraste AA en ambos temas.
- Animaciones opt-out con
prefers-reduced-motion. - Tokens tipográficos y uso consistente en componentes.
Conclusión
La tipografía marca la personalidad de tu UI: puedes ser expresivo sin perder claridad si partes de una base accesible (contraste, ritmo, tamaños fluidos) y usas herramientas modernas como fuentes variables y clamp(). Empieza con una escala y unos tokens, pruébalos en móvil y desktop, y mejora sobre esa base.
