O modelo de caixa
Dê a uma caixa width: 200px, 16px de padding e uma borda de 2px, e por padrão ela ocupa 236 pixels na tela, não 200.
Todo elemento é uma caixa
Para montar o layout de uma página, o navegador transforma cada elemento num retângulo. Cada caixa tem quatro camadas, de dentro para fora. A área de conteúdo guarda o texto ou a imagem. O padding é o espaço dentro da caixa, entre o conteúdo e a borda, e recebe a cor de fundo da caixa. A borda é uma linha em volta do padding. A margem é o espaço fora da borda que afasta as outras caixas; ela é sempre transparente. As ferramentas de desenvolvedor do navegador desenham exatamente este diagrama quando você inspeciona um elemento, com os números preenchidos.
Atalho para os quatro lados
padding, margin e border-width aceitam de um a quatro valores, em sentido horário a partir do topo. padding: 16px define os quatro lados. padding: 8px 16px define em cima e embaixo como 8 e esquerda e direita como 16. padding: 4px 8px 12px 16px define em cima, direita, embaixo e esquerda, nessa ordem. Cada lado também pode ser definido sozinho, como em margin-top. border: 2px solid #333 define largura, estilo e cor de uma vez; sem um estilo como solid ou dashed, nenhuma borda é desenhada.
box-sizing: a configuração que quase todo mundo muda
Por padrão, width e height definem só o tamanho da área de conteúdo, e padding e borda são somados por fora. Esse é o modelo content-box, e ele complica os layouts: duas caixas de width: 50% com qualquer padding já não cabem lado a lado. Com box-sizing: border-box, a largura inclui o padding e a borda, e a área de conteúdo encolhe para dar espaço. Muitas folhas de estilo começam aplicando isso a todos os elementos com *, *::before, *::after { box-sizing: border-box; }.
Caixas de bloco e inline
As caixas se comportam de modo diferente conforme o valor de display. Caixas de bloco, como p, h1 e section, começam numa linha nova e se esticam para preencher a largura do contêiner. Caixas inline, como a, strong e span, ficam dentro de uma linha de texto; width e height não valem para elas, e o padding e a margem verticais delas não afastam as outras linhas. display: inline-block fica no meio: a caixa corre dentro da linha como uma palavra, mas respeita largura, altura e padding, o que serve bem para etiquetas pequenas e botões.
Margens que colapsam
Uma regra surpreende quase todo mundo. Quando a margem de baixo de um bloco encontra a margem de cima do seguinte, elas não se somam; vence a maior. Um parágrafo com margin-bottom: 20px seguido de um título com margin-top: 30px fica a 30 pixels de distância, não 50. Isso se chama colapso de margens, e só acontece com margens verticais entre blocos no fluxo normal, não dentro de contêineres flex ou grid. Para centralizar um bloco na horizontal, dê a ele um width ou max-width e margin: 0 auto: as duas margens laterais automáticas dividem o espaço livre igualmente.
outline: none, troque por outro estilo de foco bem visível.| caixa de conteúdo | Onde ficam o texto e as imagens |
| padding | Espaço dentro da borda; mostra o fundo |
| borda | Linha em volta do padding; precisa de um estilo |
| margem | Espaço transparente fora da borda |
| box-sizing: border-box (borda incluída na largura) | width inclui padding e borda |
| colapso de margens | Margens verticais que se tocam: vence a maior |
| inline-block | Corre na linha, mas respeita largura e padding |
- Ponha as camadas em ordem, de dentro para fora.
- content-box: width 300px, padding 20px, borda 5px. Qual é a largura total?
- border-box: width 300px, padding 20px, borda 5px. Qual é a largura da área de conteúdo?
- O que
margin: 10px 20pxdefine?- 10 em cima e embaixo, 20 à esquerda e à direita
- 10 à esquerda e à direita, 20 em cima e embaixo
- 10 em cima, 20 embaixo
padding: 1px 2px 3px 4px: quanto fica à esquerda?- Um margin-bottom de 20px encontra um margin-top de 30px. Qual é o tamanho do espaço?
- Por que
border: 2px #333não desenha nada?- Não há um estilo de borda como solid
- A cor é escura demais
- Bordas precisam de margem
- Qual valor de display deixa um span ter largura e padding vertical sem sair da linha?
- inline-block
- inline
- none
- Como centralizar na horizontal um bloco de 600px de largura?
- margin: 0 auto
- padding: auto
- text-align: center on the block
- Qual parte da caixa mostra a cor de fundo?
- Conteúdo e padding (e embaixo da borda)
- Só o conteúdo
- A margem também
- Conteúdo, padding, borda, margem.
- content-box soma padding e borda ao width; border-box os inclui.
- O atalho segue o sentido horário a partir do topo; margens verticais que se tocam colapsam.
Fontes deste curso (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
Data de verificação: 2026-10-17