Clamp | CSS
- Clamp | CSS
O que é
clamp() é uma função do CSS que restringe um valor a um intervalo: min(max). Você informa mínimo, ideal (normalmente fluido) e máximo — o resultado final nunca passa desses limites. Funciona onde aquele tipo de valor é aceito (comprimentos, porcentagens, números etc.). ([MDN Web Docs][1])
O gatilho é a alteração do viewport
Sintaxe
propriedade: clamp(<min>, <ideal>, <max>);
- Os três argumentos devem ser do mesmo tipo compatível (por ex.: todos comprimentos).
- Pode combinar com
calc()e variáveis CSS (var()). ([MDN Web Docs][1])
Exemplos rápidos:
/* Título com fonte fluida entre 1rem e 3rem, guiada por viewport */
h1 { font-size: clamp(1rem, 2.5vw, 3rem); }
/* Largura responsiva com limite */
.card { width: clamp(280px, 50vw, 720px); }
/* Espaçamento que cresce, mas sem exagero */
.section { padding: clamp(16px, 4vw, 48px); }
Tutoriais práticos e exemplos interativos: web.dev. ([web.dev][2])
Casos de uso comuns
- Tipografia fluida (reduzindo media queries). ([web.dev][2])
- Layouts responsivos: larguras/alturas de cards, gaps, paddings, margens. ([web.dev][2])
- Grades e trilhas: junto de
minmax()efit-content()quando quer um valor único com limites. ([MDN Web Docs][3])
Compatibilidade de navegadores
clamp() tem suporte amplo (Chrome/Edge 79+, Firefox 75+, Safari 14+, etc.). Verifique a tabela atualizada no Can I use. ([MDN Web Docs][1])
Armadilhas e notas
- Tipos precisam casar:
autonão é aceito como argumento declamp(); usemin-/max-*/heightcomo fallback para esses casos. ([MDN Web Docs][1]) - Valores relativos (como
vw) podem produzir resultados extremos em telas muito grandes/pequenas — por isso os limites são importantes. ([web.dev][2]) line-clampnão éclamp(); é outra propriedade para truncar linhas e tem suporte diferente. ([MDN Web Docs][4])
Especificação
A definição formal e detalhes de verificação de faixas estão na W3C CSS Values & Units Level 4. ([W3C][5])
Receitas úteis
Fonte fluida “responsiva sem media queries”
:root {
--fs-min: 16px;
--fs-ideal: 2vw; /* guia fluida */
--fs-max: 24px;
}
body { font-size: clamp(var(--fs-min), var(--fs-ideal), var(--fs-max)); }
Referência e discussão: MDN e artigos práticos. ([MDN Web Docs][1])
Card que cresce com a viewport, mas respeita limites
.card {
width: clamp(20rem, 60vw, 46rem);
}
([web.dev][2])
Espaçamento escalável
.section { padding-block: clamp(1rem, 4vw, 3rem); }
([web.dev][2])
Leitura recomendada
- MDN: clamp() – CSS (definição, exemplos e compatibilidade). ([MDN Web Docs][1])
- Especificação W3C: CSS Values and Units Level 4 (base formal). ([W3C][5])
- web.dev: min(), max(), clamp() (guia com demos). ([web.dev][2])
- Can I use: suporte do
clamp()(tabela atualizada). ([Can I use][6])