Funções de dimensionamento CSS: calc(), min(), max(), clamp() e unidades de viewport

Laboratório de funções de dimensionamento CSS

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

Arraste um controle de largura da viewport e veja calc(), min(), max() e clamp() se resolverem em pixels. Mais vh vs svh, lvh e dvh, fit-content e min-content ao vivo, gap e receitas de tipografia fluida.

As funções matemáticas do CSS deixam um único valor se adaptar à tela. calc() mistura unidades, como em calc(100% - 2rem). min() escolhe a menor opção, então width: min(100%, 640px) nunca transborda. max() escolhe a maior, e clamp(min, preferred, max) mantém um valor fluido entre dois limites. dvh acompanha a barra de ferramentas variável do navegador no celular, ao contrário do vh simples.

Qual função para cada tarefa

Em vez de redimensionar o navegador para testar uma fórmula, arraste a largura simulada da viewport e cada função se resolve em pixels na sua frente, com o ponto em que clamp() atinge os limites marcado. A página também desenha o que vh, svh, lvh e dvh medem em um celular e mostra as palavras-chave intrínsecas funcionando em caixas reais.

Perguntas frequentes

Qual é a diferença entre vh, svh, lvh e dvh?

Nos celulares, a barra de ferramentas do navegador cresce e encolhe. svh é 1% da viewport pequena, com a barra visível. lvh é 1% da viewport grande, com a barra oculta. dvh acompanha a que estiver valendo no momento e se atualiza durante a rolagem. O vh clássico geralmente equivale a lvh, e é por isso que seções com 100vh ficam cortadas no celular.

clamp(), min() e max() funcionam em todos os navegadores?

Sim, as três funcionam em todos os principais navegadores desde 2020. As unidades de viewport pequena, grande e dinâmica chegaram depois, ao longo de 2022, e hoje estão em todos os principais navegadores atuais. Adicione uma linha de fallback com vh simples antes delas se você ainda dá suporte a dispositivos antigos.

Como escrevo um tamanho de fonte fluido com clamp()?

Escolha o tamanho em uma tela estreita e em uma tela larga e escreva clamp(pequeno, preferido, grande). O valor preferido combina rem e vw, como 1rem + 2vw, então o tamanho cresce com a janela mas fica entre os dois limites. O laboratório abaixo mostra as larguras exatas em que os limites assumem.

O que fit-content faz?

width: fit-content dimensiona uma caixa pelo conteúdo, como um inline-block ajustado, mas nunca mais larga que o espaço disponível. Equivale a min(max-content, max(min-content, espaço disponível)). A função fit-content() em trilhas de grid faz o mesmo com um limite que você escolhe.

Dá para usar gap com flexbox?

Sim. gap, row-gap e column-gap funcionam em contêineres flex em todos os navegadores atuais, não só no grid. O gap é adicionado apenas entre os itens, nunca nas bordas externas, o que é mais simples do que margens em cada filho.

Como calc() é resolvido

Tamanhos intrínsecos: min-content, max-content e fit-content

Espaçamento fluido, além de tipografia fluida

vh vs svh, lvh e dvh

Unidades de porcentagem da viewport

Um hero de altura total seguro no celular

A primeira linha é o fallback para navegadores sem as unidades novas. A segunda a sobrescreve onde há suporte.

Exemplos de calc(), min(), max() e clamp()

Uma coluna legível sem media query

min() limita a largura; o padding usa max() para nunca encolher abaixo de 12px. As duas regras se adaptam sozinhas à largura do quadro.

calc() para uma barra lateral fixa ao lado de uma área principal fluida

A área principal ocupa o que sobra depois da barra lateral de 120px e do gap de 12px.

min-content, max-content e fit-content

Palavras-chave de dimensionamento intrínseco

gap em flex e grid

O mesmo gap em uma linha flex com quebra e em um grid

row-gap e column-gap podem ser diferentes. Nenhum dos dois adiciona espaço nas bordas externas.

Escala fluida de tipografia e espaçamento

Uma pequena escala fluida como custom properties

Cada degrau cresce entre um celular de cerca de 360px e um desktop de 1280px. Ajuste os números no laboratório acima.

Laboratório de viewport

Largura simulada da viewport (px)

Título fluido em {px}px

Valores resolvidos na largura simulada

Função

Declaração

Em {vp}px

mínimo do clamp (rem)

máximo do clamp (rem)

preferido: parte em rem

preferido: parte em vw

O máximo está abaixo do mínimo, então o mínimo vence em qualquer largura.

Fica em {min}rem até cerca de {from}px de largura, cresce até cerca de {to}px e depois se mantém em {max}rem.

Sem parte em vw, o valor nunca muda com a janela.

Copiar

O que 100 de cada unidade cobre em um celular

Três celulares: 100svh preenche o espaço entre as barras de ferramentas visíveis, 100lvh preenche a tela toda como se as barras estivessem ocultas, 100dvh acompanha as barras conforme elas mudam

barras visíveis

barras ocultas

acompanha as barras

As faixas cinza são as barras de ferramentas do navegador. O azul é a área que 100 unidades preenchem.

Dimensionamento por conteúdo, ao vivo

Palavra-chave de largura

Espaço disponível (px)

Frete grátis em todos os pedidos neste fim de semana

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site