Unidades Relativas, Absolutas y clamp()
Aprende a elegir entre píxeles fijos (px), unidades relativas a fuentes (rem, em), porcentajes (%), viewport (vw, vh) y funciones matemáticas modernas como calc() y clamp().
Unidades Absolutas frente a Relativas
Elegir la unidad de medida correcta es indispensable para crear interfaces accesibles que respeten las preferencias del usuario y se adapten a diferentes densidades de pantalla.
| Unidad | Tipo | Referencia de Cálculo | Cuándo Utilizarla |
|---|---|---|---|
px |
Absoluta | 1 píxel de pantalla de referencia. | Bordes delgados (1px, 2px), sombras sutiles y detalles fijos pequeños. |
rem |
Relativa | Relativo al font-size de la raíz (<html>, por defecto 16px). |
El estándar para tipografía, paddings y márgenes. Respeta el zoom y accesibilidad del navegador. |
em |
Relativa | Relativo al font-size del propio elemento o de su padre inmediato. |
Iconos o badges que deben escalar proporcionalmente con el texto que los acompaña. |
% |
Relativa | Porcentaje del tamaño del elemento contenedor padre. | Anchuras de columnas y divisiones de rejilla. |
vw / vh |
Viewport | 1% del ancho (vw) o del alto (vh) de la ventana del navegador. |
Secciones hero a pantalla completa (height: 100vh). |
Funciones Matemáticas en CSS: calc() y clamp()
CSS moderno incluye motores matemáticos nativos que evitan el uso de JavaScript para cálculos de diseño:
calc(): Permite mezclar unidades heterogéneas. Ej:width: calc(100% - 40px);. (Obligatorio dejar un espacio antes y después de los operadores+y-).min()ymax(): Eligen dinámicamente el valor menor o mayor entre varios candidatos.clamp(mínimo, preferido, máximo): La técnica definitiva para tipografía fluida. La fuente crece con la pantalla entre dos límites infranqueables:
/* La fuente nunca será menor a 1.25rem ni mayor a 2.5rem; entre medias escala al 4vw */
h1 {
font-size: clamp(1.25rem, 4vw, 2.5rem);
}
⚡ Tipografía Fluida con clamp() y Ancho Mixto con calc()
Observa cómo el título escala suavemente entre el móvil y la pantalla grande gracias a clamp(), y la barra lateral usa calc() para dejar espacio exacto:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Unidades CSS3 y clamp()</title>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f8fafc;
margin: 0;
padding: 24px;
color: #0f172a;
}
/* Tipografía fluida con clamp() */
.titulo-fluido {
font-size: clamp(1.4rem, 3.5vw, 2.4rem);
font-weight: 800;
color: #1e40af;
margin-top: 0;
margin-bottom: 12px;
line-height: 1.2;
}
/* Caja con ancho calculado calc() */
.caja-calculada {
width: calc(100% - 32px); /* Ancho total menos 32px de margen lateral */
max-width: 650px;
background: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 12px;
padding: 1.5rem; /* Usando rems escalables */
margin-bottom: 20px;
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.06);
}
.badge-em {
font-size: 0.85em; /* Escala con la fuente del elemento */
background-color: #fef3c7;
color: #92400e;
padding: 0.25em 0.6em;
border-radius: 4px;
font-weight: bold;
vertical-align: middle;
}
.medidor-vw {
background: linear-gradient(90deg, #3b82f6, #06b6d4);
color: white;
padding: 10px 16px;
border-radius: 8px;
font-size: 0.9rem;
font-weight: 600;
}
</style>
</head>
<body>
<div class="caja-calculada">
<h1 class="titulo-fluido">Tipografía Fluida Inteligente</h1>
<p style="font-size: 1rem; line-height: 1.6; color: #475569;">
Este título usa <code>clamp(1.4rem, 3.5vw, 2.4rem)</code>. En pantallas pequeñas se mantiene legible a 1.4rem y en pantallas panorámicas nunca sobrepasa 2.4rem.
</p>
<p>
Insignia con unidades relativas em:
<span class="badge-em">Unidad 0.85em</span>
</p>
<div class="medidor-vw">
Contenedor con calc(100% - 32px) y paddings en rem
</div>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de CSS3, Flexbox y Grid y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.