Funciones de tamaño CSS: calc(), min(), max(), clamp() y unidades de viewport

Laboratorio de funciones de tamaño CSS

CSS calc(), min(), max(), clamp(), vh vs dvh, fit-content | We.Inc

Mueve un control de ancho del viewport y mira cómo calc(), min(), max() y clamp() se resuelven en píxeles. Además, vh frente a svh, lvh y dvh, fit-content y min-content en vivo, gap y recetas de tipografía fluida.

Las funciones matemáticas de CSS permiten que un valor se adapte a la pantalla. calc() mezcla unidades, como en calc(100% - 2rem). min() elige la opción más pequeña, así que width: min(100%, 640px) nunca desborda. max() elige la más grande, y clamp(min, preferred, max) mantiene un valor fluido entre dos límites. dvh sigue la barra de herramientas cambiante del navegador móvil, a diferencia de vh.

Qué función para cada tarea

En lugar de redimensionar el navegador para probar una fórmula, arrastra el ancho de viewport simulado y cada función se resuelve en píxeles delante de ti, con el punto donde clamp() alcanza sus límites marcado. La página también dibuja lo que miden vh, svh, lvh y dvh en un teléfono y muestra las palabras clave intrínsecas funcionando en cajas reales.

Preguntas frecuentes

¿Qué diferencia hay entre vh, svh, lvh y dvh?

En los teléfonos, la barra de herramientas del navegador crece y se encoge. svh es el 1% del viewport pequeño, con la barra visible. lvh es el 1% del viewport grande, con la barra oculta. dvh sigue el que esté activo y se actualiza al hacer scroll. El vh clásico suele ser igual a lvh, por eso las secciones de 100vh se cortan en móvil.

¿clamp(), min() y max() funcionan en todas partes?

Sí, las tres funcionan en todos los navegadores principales desde 2020. Las unidades de viewport pequeño, grande y dinámico llegaron más tarde, durante 2022, y ya están en todos los navegadores principales actuales. Añade antes una línea de reserva con vh si todavía das soporte a dispositivos antiguos.

¿Cómo escribo un tamaño de fuente fluido con clamp()?

Elige el tamaño en una pantalla estrecha y en una ancha, y escribe clamp(pequeño, preferido, grande). El valor preferido combina rem y vw, como 1rem + 2vw, así que el tamaño crece con la ventana pero se queda entre los dos límites. El laboratorio de abajo muestra los anchos exactos en los que entran en juego los límites.

¿Qué hace fit-content?

width: fit-content ajusta una caja a su contenido, como un inline-block encogido, pero nunca más ancha que el espacio disponible. Equivale a min(max-content, max(min-content, espacio disponible)). La función fit-content() en las pistas de grid hace lo mismo con un límite que eliges tú.

¿Se puede usar gap con flexbox?

Sí. gap, row-gap y column-gap funcionan en contenedores flex en todos los navegadores actuales, no solo en grid. El gap se añade solo entre elementos, nunca en los bordes exteriores, lo que es más sencillo que poner márgenes en cada hijo.

Cómo se resuelve calc()

Tamaños intrínsecos: min-content, max-content y fit-content

Espaciado fluido además de tipografía fluida

vh frente a svh, lvh y dvh

Unidades de porcentaje del viewport

Un hero de altura completa seguro en móvil

La primera línea es la reserva para navegadores sin las unidades nuevas. La segunda la sustituye donde hay soporte.

Ejemplos de calc(), min(), max() y clamp()

Una columna legible sin media query

min() limita el ancho; el padding usa max() para que nunca baje de 12px. Ambas reglas se adaptan solas al ancho del marco.

calc() para una barra lateral fija junto a un área principal fluida

El área principal ocupa lo que queda tras la barra lateral de 120px y el gap de 12px.

min-content, max-content y fit-content

Palabras clave de tamaño intrínseco

gap en flex y grid

El mismo gap en una fila flex con salto de línea y en un grid

row-gap y column-gap pueden ser distintos. Ninguno añade espacio en los bordes exteriores.

Escala fluida de tipografía y espaciado

Una pequeña escala fluida como custom properties

Cada paso crece aproximadamente entre un teléfono de 360px y un escritorio de 1280px. Ajusta los números en el laboratorio de arriba.

Laboratorio de viewport

Ancho de viewport simulado (px)

Encabezado fluido a {px}px

Valores resueltos al ancho simulado

Función

Declaración

A {vp}px

mínimo de clamp (rem)

máximo de clamp (rem)

preferido: parte en rem

preferido: parte en vw

El máximo es menor que el mínimo, así que el mínimo gana en todos los anchos.

Se queda en {min}rem hasta unos {from}px de ancho, crece hasta unos {to}px y luego se mantiene en {max}rem.

Sin parte en vw, el valor nunca cambia con la ventana.

Copiar

Lo que cubren 100 unidades de cada tipo en un teléfono

Tres teléfonos: 100svh llena el espacio entre las barras visibles, 100lvh llena toda la pantalla como si las barras estuvieran ocultas, 100dvh sigue a las barras cuando cambian

barras visibles

barras ocultas

sigue a las barras

Las franjas grises son las barras del navegador. El azul es el área que llenan 100 unidades.

Tamaño por contenido, en vivo

Palabra clave de ancho

Espacio disponible (px)

Envío gratis en todos los pedidos este fin de semana

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio