🌐 Capítulo 14: O Modelo de Caixas do CSS (Box Model)
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Compreender o conceito de que todo elemento HTML é renderizado pelo navegador como uma caixa retangular.
- Identificar e manipular as 4 camadas do Box Model: Conteúdo (Content), Preenchimento Interno (Padding), Borda (Border) e Margem Externa (Margin).
- Evitar problemas de quebra de layout utilizando
box-sizing: border-box. - Controlar o espaçamento e alinhamento de componentes visuais em telas corporativas.
🧠 1. As 4 Camadas do CSS Box Model
O navegador calcula a dimensão total de qualquer elemento somando o conteúdo, os espaçamentos internos, as bordas e as margens.
flowchart TD subgraph BoxModel ["Estrutura de Camadas do Box Model"] Margin["MARGIN (Espaço Externo entre Elementos)"] Border["BORDER (Linha de Borda do Elemento)"] Padding["PADDING (Espaço Interno entre Conteúdo e Borda)"] Content["CONTENT (Área Efetiva do Texto, Imagem ou Vídeo)"] end Margin --> Border --> Padding --> Content
Detalhamento das Propriedades:
- Content (Conteúdo): A área onde o texto ou a mídia é exibida. Definida por
widtheheight. - Padding (Espaçamento Interno): Transparente. Afasta o conteúdo da borda da caixa (
padding-top,padding-right,padding-bottom,padding-left). - Border (Borda): A linha contornando o elemento (
border: 2px solid #1e88e5). - Margin (Margem Externa): Afasta o elemento de outros elementos vizinhos na página (
margin: 20px auto).
📐 2. O Problema do Tamanho Total e o box-sizing: border-box
Por padrão (box-sizing: content-box), quando definimos width: 200px e adicionamos padding: 20px e border: 5px, a largura final do elemento no navegador será:
Para evitar que a adição de padding altere o tamanho final da caixa, zeramos o comportamento globalmente utilizando:
/* Reset Global de Box Model (Boas praticas de CSS profissional) */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}Com border-box, uma caixa declarada com width: 200px terá exatamente 200px de largura final, contraindo o conteúdo interno para acomodar o padding e a borda.
💻 3. Prática Guiada: Card de Aluno Estilizado
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Exemplo Box Model</title>
<style>
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Arial, sans-serif;
background-color: #f4f6f8;
padding: 40px;
}
.card-aluno {
width: 320px;
background-color: #ffffff;
border: 2px solid #1e88e5;
border-radius: 8px;
padding: 24px; /* Espaco interno */
margin: 20px auto; /* Centraliza o card na tela */
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.card-aluno h2 {
color: #0d47a1;
margin-bottom: 12px; /* Margem externa inferior */
}
.card-aluno p {
color: #555555;
line-height: 1.5;
}
</style>
</head>
<body>
<div class="card-aluno">
<h2>Carlos Silva</h2>
<p><strong>Matrícula:</strong> 20261001</p>
<p><strong>Curso:</strong> Engenharia de Software</p>
</div>
</body>
</html>⚔️ 4. Desafios Práticos (Exercícios 30/50/20)
🥉 Nível Bronze (Fixação)
- Qual a função da propriedade
box-sizing: border-boxno desenvolvimento de layouts CSS? - Qual a diferença entre a propriedade
paddinge a propriedademargin?
🥈 Nível Prata (Aplicação)
- Crie um arquivo CSS que estilize uma
divcom classepainel-avisoatribuindo largura de400px, padding interno de20px, borda esquerda de6px solid #e74c3ce fundo levemente acinzentado (#f9f9f9).
🥇 Nível Ouro (Desafio)
- Escreva o código HTML e CSS de dois botões (
.btn-primarye.btn-secondary) dispostos lado a lado. Utilize o Box Model para definir paddings confortáveis de clique (12px 24px), bordas arredondadas e margens de afastamento lateral entre eles.
💡 Gabaritos Sanfonados de Resposta
💡 Ver Gabarito do Nível Bronze
- A propriedade
box-sizing: border-boxinclui opaddinge aborderdentro da largura (width) e altura (height) totais especificadas para o elemento, evitando que o layout quebre ao adicionar espaçamentos. - O
paddingé o espaço interno entre o conteúdo e a borda. Amarginé o espaço externo transparente entre o elemento e os outros elementos vizinhos.
💡 Ver Gabarito do Nível Prata & Ouro (Código CSS)
.painel-aviso {
box-sizing: border-box;
width: 400px;
padding: 20px;
background-color: #f9f9f9;
border-left: 6px solid #e74c3c;
border-top: 1px solid #e0e0e0;
border-right: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
border-radius: 4px;
margin: 20px 0;
}📚 Referências Teóricas Oficiais
- W3C RECOMMENDATION. CSS Box Model Module Level 3 (https://www.w3.org/TR/css-box-3/).
- MDN WEB DOCS. The Box Model (Mozilla Developer Network).
⬅️ Capítulo Anterior (Cores e Cores de Fundo) | Voltar ao Sumário | Próximo Capítulo (Tipografia no CSS) ➡️