Fijar font-size: 16px en toda una hoja de estilos parece inofensivo hasta que un usuario con baja visión cambia el tamaño de fuente predeterminado de su navegador de 16px a 24px: los textos definidos en px ignoran su preferencia, mientras que las medidas en rem se adaptan de inmediato.
Eso no significa que debas pasar cada número de tu archivo CSS a rem. Cada unidad cumple una función específica en un sistema de diseño.
Matriz de decisión rápida: Cuándo usar px, rem, em o vw
| Unidad CSS | Relativa a | ¿Respeta la Fuente del Navegador? | Uso Recomendado en Producción |
|---|---|---|---|
rem | Tamaño de fuente raíz en <html> (16px por defecto) | Sí | Tamaños de fuente globales, max-width de contenedores, espaciado vertical y media queries |
em | font-size calculado del propio elemento o su padre | Sí (se multiplica al anidar) | padding horizontal en botones (1.1em), iconos SVG inline (width: 1em) y letter-spacing |
px | Píxel de referencia CSS (1/96 de pulgada) | No (solo escala con zoom de página completa) | Bordes de 1px o 2px, outline-offset y desenfoque de sombras |
vw / svh | Ancho o alto de la ventana gráfica | No | Alturas de portada (100svh) y pendiente fluida combinada con rem dentro de clamp() |
Fórmula exacta de PX a REM
En todos los navegadores modernos, el elemento raíz <html> sin estilos tiene un tamaño base de 16px:
Fórmula de PX a REM: rem = px_objetivo / 16 (y px = rem * 16 con raíz de 16px).
12px=0.75rem14px=0.875rem16px=1rem18px=1.125rem24px=1.5rem32px=2rem
Cómo calcular tipografía fluida con clamp(mín, preferido, máx)
Para escalar un encabezado <h1> de 28px (1.75rem) en pantallas móviles de 375px hasta 44px (2.75rem) en pantallas de escritorio de 1200px sin saltos bruscos:
Fórmula de Interpolación Lineal para clamp(): pendiente = (max_px - min_px) / (max_vw - min_vw), interseccion_px = min_px - (pendiente * min_vw), y preferido = (interseccion_px / 16)rem + (pendiente * 100)vw.
h1 {
font-size: clamp(1.75rem, 1.295rem + 1.94vw, 2.75rem);
line-height: 1.18;
letter-spacing: -0.03em;
}Alineación de line-height a una cuadrícula base vertical
Combina tus tamaños en rem con alturas de línea múltiplos de 4px (0.25rem) o 8px (0.5rem) y comprime tu hoja de estilos antes de pasar a producción: