Lección 5
clamp() y tamaño fluido
Genera font-size y espaciado responsive con límites mínimo, preferido y máximo.
clamp() permite que una declaración reemplace muchas media queries escalonadas para propiedades numéricas como font-size, padding, gap y height.
Sintaxis
clamp(MIN, PREFERRED, MAX)
El navegador elige:
MINcuando el valor preferido sería demasiado pequeñoMAXcuando el valor preferido sería demasiado grandePREFERREDen caso contrario
Ejemplo:
h1 {
font-size: clamp(1.5rem, 1rem + 2vw, 2.5rem);
}
En pantallas estrechas el título permanece al menos en 1.5rem. En pantallas anchas se limita a 2.5rem. Entre esos límites crece con el ancho del viewport.
Por qué rem + vw juntos
Un encabezado solo con vw puede volverse ilegible en móvil o excesivamente grande en monitores ultrawide. Combinar rem con vw dentro de clamp() da:
- Suelo de accesibilidad vía mínimo rem
- Techo de layout vía máximo rem
- Crecimiento fluido vía término medio vw
Modo font-size vs espaciado
El clamp de font-size afecta ritmo de texto y salto de línea. El clamp de espaciado afecta gaps de sección, padding hero o altura de componente.
Ambos usan la misma matemática, pero la vista previa difiere:
- La vista previa de font-size muestra texto de muestra en tamaños calculados
- La vista previa de espaciado muestra barras o bloques en alturas calculadas
Previsualiza siempre en anchos de viewport mínimo, medio y máximo antes de publicar.
De especificación de diseño a CSS
Flujo típico:
- El diseñador da tamaños px mínimo y máximo para móvil y escritorio.
- Elige el rango de viewport que coincide con tus breakpoints de layout.
- Genera
clamp(minRem, preferredRem + preferredVw, maxRem). - Copia CSS, una propiedad personalizada o variable SCSS en tokens.
Ejemplo de salida:
--heading-lg: clamp(1rem, 0.5rem + 2vw, 1.5rem);
Cuándo no usar clamp()
- Valores que deben encajar exactamente en un breakpoint para reflow de layout
- Propiedades controladas por container queries con reglas muy distintas
- Casos donde basta un token rem simple
clamp() es mejor cuando quieres escalado suave entre límites conocidos.
Conclusión clave
Piensa en clamp() como tamaño fluido acotado: tamaño mínimo legible, tamaño máximo de diseño y crecimiento impulsado por viewport en medio.
Genera y previsualiza valores clamp en la pestaña clamp del Conversor de unidades CSS / Generador clamp antes de añadirlos a tu hoja de estilos.