Largura, Altura e Overflow CSS
Largura e Altura
Referência Rápida de Propriedades de Dimensão
| Propriedade | Valores Comuns | Finalidade |
|---|---|---|
width |
300px, 50%, 50vw, auto |
Largura do conteúdo do elemento |
height |
200px, 50%, 50vh, auto |
Altura do conteúdo do elemento |
min-width |
320px, 50% |
Largura mínima (previne muito pequeno) |
max-width |
1200px, 80% |
Largura máxima (comum em responsivo) |
min-height |
200px, 100vh |
Altura mínima |
max-height |
400px |
Altura máxima (transborda se excedida) |
overflow |
visible, hidden, scroll, auto |
Como lidar com conteúdo que transborda |
overflow-x |
visible, hidden, scroll, auto |
Controle de overflow horizontal |
overflow-y |
visible, hidden, scroll, auto |
Controle de overflow vertical |
width e height
width e height definem as dimensões da área de conteúdo do elemento:
Exemplo
<style>
.box {
width: 300px;
height: 200px;
background: #f0f0f0;
}
</style>
<div class="box">Elemento caixa mostrando intervalo de dimensão</div>
Unidades Comuns
Exemplo
<style>
.pixel {
width: 300px;
background: #e3f2fd;
}
.percent {
width: 50%;
background: #fce4ec;
}
.vw-vh {
width: 50vw;
height: 100vh;
background: #e8f5e9;
}
.auto-width {
width: auto;
background: #fff3e0;
}
</style>
<div class="pixel">Unidade pixel: largura fixa 300px</div>
<div class="percent">Unidade percentual: largura 50%</div>
<div class="vw-vh">Unidade viewport: largura 50vw</div>
<div class="auto-width">Largura automática: determinada pelo conteúdo</div>
min-width / max-width
Limita a largura mínima/máxima do elemento, comumente usado em design responsivo:
Exemplo
<style>
.container {
width: 80%;
max-width: 1200px;
min-width: 320px;
margin: 0 auto;
background: #e8eaf6;
padding: 10px;
}
</style>
<div class="container">Contêiner com restrições de largura responsivas</div>
min-height / max-height
Exemplo
<style>
.card {
min-height: 200px;
max-height: 400px;
background: #fff3e0;
border: 1px solid #ccc;
}
</style>
<div class="card">Componente card com altura mínima/máxima. Conteúdo excedendo a altura máxima transbordará e requererá a propriedade overflow para tratar.</div>
Função calc()
calc() é uma função CSS que permite cálculos matemáticos (adição, subtração, multiplicação, divisão) em valores de propriedade. Sua maior vantagem é misturar unidades diferentes.
+ e - devem ter espaços em ambos os lados (calc(100% - 20px) ✅, calc(100%-20px) ❌), * e / espaços são opcionais.
Exemplo
<style>
.layout {
width: calc(100% - 300px);
background: #e3f2fd;
padding: 16px;
}
.sidebar {
width: 300px;
float: left;
background: #fce4ec;
padding: 16px;
box-sizing: border-box;
}
</style>
<div class="layout">Conteúdo principal: largura = 100% - 300px</div>
Casos de Uso Comuns
- Barra lateral + Conteúdo principal:
.main { width: calc(100% - 300px); }adapta ao espaço restante - Cards com espaçamento igual:
.card { width: calc((100% - 40px) / 3); }três colunas com 20px de espaço - Fonte responsiva:
font-size: calc(14px + 0.5vw);tamanho base + incremento viewport - Centralização precisa:
left: calc(50% - 100px);offset conhecido alternativo ao transform
Compatibilidade do calc()
calc() é suportado em IE11+, Chrome 26+, Firefox 16+, Safari 7+ e pode ser usado com segurança em projetos modernos. Apenas evite concatenação de strings no calc().
Controle de Overflow
auto. A melhor prática é usar a abreviação overflow.
Quando o conteúdo do elemento excede a largura/altura definida, ocorre "overflow". A propriedade overflow controla como o conteúdo que transborda é tratado.
Valores de overflow
Exemplo
<style>
.visible {
overflow: visible;
background: #fce4ec;
height: 50px;
}
.hidden {
overflow: hidden;
background: #e8f5e9;
height: 50px;
}
.scroll {
overflow: scroll;
background: #fff3e0;
height: 50px;
}
.auto {
overflow: auto;
background: #e3f2fd;
height: 50px;
}
</style>
<div class="visible">Área visível (overflow mostra fora da caixa)</div>
<div class="hidden">Conteúdo cortado ao exceder (overflow hidden)</div>
<div class="scroll">Barra de rolagem sempre visível mesmo que o conteúdo caiba</div>
<div class="auto">Barra de rolagem aparece apenas quando o conteúdo transborda</div>
Controlando Cada Direção
Exemplo
<style>
.box {
overflow-x: hidden;
overflow-y: auto;
width: 200px;
height: 80px;
background: #f5f5f5;
border: 1px solid #ddd;
}
</style>
<div class="box">Elemento caixa com overflow horizontal hidden e auto-scroll vertical para visualizar todo o conteúdo</div>
Casos de Uso Comuns
1. Elipse de Texto
Combinado com text-overflow para truncamento de texto de linha única:
Exemplo
<style>
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 200px;
border: 1px solid #ccc;
padding: 8px;
background: #f9f9f9;
}
</style>
<div class="ellipsis">Este é um texto longo que será truncado com elipse ao exceder a largura do contêiner</div>
2. Recorte de Imagem
Tamanho fixo do contêiner com overflow hidden para imagens:
Exemplo
<style>
.avatar {
width: 100px;
height: 100px;
overflow: hidden;
border-radius: 50%;
background: #e0e0e0;
}
.avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
<div class="avatar">Contêiner de avatar (recorte circular)</div>
3. Contêiner de Rolagem
Cria uma área rolável de altura fixa:
Exemplo
<style>
.scroll-box {
height: 300px;
overflow-y: auto;
border: 1px solid #ddd;
padding: 10px;
background: #fafafa;
}
</style>
<div class="scroll-box">
<p>Linha 1: Contêiner de rolagem pode exibir grande conteúdo</p>
<p>Linha 2: Barra de rolagem aparece quando o conteúdo excede a altura</p>
<p>Linha 3: Role para ver conteúdo oculto</p>
<p>Linha 4: Implementado com overflow-y: auto</p>
<p>Linha 5: Mais conteúdo significa mais rolagem</p>
<p>Linha 6: Adequado para seções de comentários, anúncios, etc.</p>
</div>
4. Limpar Floats
Definir overflow: hidden ou overflow: auto no pai limpa efeitos de float dos filhos:
Exemplo
<style>
.clearfix {
overflow: hidden;
background: #e8eaf6;
padding: 10px;
}
</style>
<div class="clearfix">Contêiner de limpeza de float (overflow: hidden aciona BFC)</div>
object-fit (Adaptação de Imagem/Vídeo)
object-fit controla como os elementos de substituição <img> ou <video> se adaptam ao tamanho do contêiner:
Exemplo
<style>
.image-container {
width: 300px;
height: 200px;
background: #f5f5f5;
border: 2px dashed #aaa;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.image-container img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
<div class="image-container">Contêiner de imagem (substitua pela imagem real)</div>
- cover: Mantém proporção, preenche contêiner, recorta excesso (mais comum)
- contain: Mantém proporção, mostra imagem completa, pode deixar espaço em branco
- fill: Estica para preencher sem manter proporção (pode distorcer)
- none: Mantém tamanho original
- scale-down: Pega o menor entre none e contain
Funções de Dimensão CSS
calc()
calc() permite cálculos dinâmicos de dimensão no CSS, misturando unidades diferentes:
Exemplo
<style>
.calc-demo {
width: calc(100% - 40px);
height: calc(50vh - 60px);
background: #e3f2fd;
border: 1px solid #90caf9;
display: flex;
align-items: center;
justify-content: center;
}
</style>
<div class="calc-demo">Largura subtrai automaticamente 40px, altura é metade do viewport menos 60px</div>
Nota: Operadores devem ter espaços em ambos os lados, caso contrário não serão reconhecidos.
❓ Perguntas Frequentes
📖 Resumo
- Controlar dimensões de elementos e comportamento de overflow é fundamental para o layout
width/heightdefinem dimensões,min-width/max-widthrestringem intervalo,overflowlida com conteúdo que transbordaobject-fit: coveré uma ferramenta poderosa para tratamento de imagens, enquantocalc()fornece cálculo dinâmico flexível- Dominar essas propriedades dá melhor controle sobre o comportamento de elementos em todas as situações
📝 Exercícios
- Crie um "contêiner responsivo" — largura 80%, max-width 1200px, min-width 320px, centralizado horizontalmente.
- Crie um contêiner de imagem de tamanho fixo (300×200) com uma imagem maior, usando
object-fit: coverpara preencher sem distorção. - Implemente efeitos de "elipse de texto de linha única" e "overflow de texto de múltiplas linhas" (dica: múltiplas linhas usa
-webkit-line-clamp). - Use
calc()para implementar um layout "tela inteira menos altura da barra de navegação".



