Box model CSS: margin, padding, border e display

Visualizador de box model CSS

Box model CSS: margin vs padding, border, display | We.Inc

Arraste os controles de conteúdo, padding, border e margin e veja o box model se redesenhar, com box-sizing, colapso de margens, estilos de borda e todos os valores de display comparados ao vivo.

Todo elemento é desenhado como retângulos aninhados: o conteúdo, depois o padding (espaço dentro da borda, pintado com o fundo), depois a border, depois a margin (espaço transparente do lado de fora que afasta os vizinhos). Com box-sizing: border-box, a largura que você define inclui padding e border, o que deixa os layouts muito mais previsíveis. A propriedade display decide como as caixas se distribuem.

As quatro camadas, de dentro para fora

Mova os quatro controles e o diagrama, o tamanho total medido e o CSS mudam juntos. Abaixo do visualizador você pode alternar o box-sizing, ver duas margens colapsarem em uma só e comparar block, inline, inline-block, flex, grid e none lado a lado nos mesmos três itens.

Perguntas frequentes

Qual é a diferença entre margin e padding?

O padding fica dentro da borda, então é preenchido pelo fundo do elemento e faz parte da área clicável. A margin fica fora da borda, é sempre transparente e só separa o elemento dos outros. Margens verticais entre blocos também podem colapsar, enquanto o padding nunca colapsa.

Por que meu elemento fica mais largo do que a largura que defini?

Com o padrão box-sizing: content-box, width se aplica só ao conteúdo, e padding e border são somados por cima. Uma caixa de 300px com 20px de padding e borda de 2px é renderizada com 344px de largura. Mude para box-sizing: border-box e ela fica com 300px, com o conteúdo encolhendo para caber.

Quando as margens colapsam?

As margens superior e inferior de caixas block no fluxo normal se fundem quando se tocam: entre irmãos, e entre um pai e seu primeiro ou último filho quando nenhuma borda, padding ou conteúdo inline os separa. A maior margem vence. Margens nunca colapsam dentro de contêineres flex ou grid, nem na horizontal.

Qual é a diferença entre display: none e visibility: hidden?

display: none remove o elemento do layout por completo, então o espaço se fecha e os leitores de tela o ignoram. visibility: hidden mantém o espaço reservado mas não pinta nada, e o conteúdo também fica oculto para tecnologias assistivas. opacity: 0 mantém tanto o espaço quanto a possibilidade de clicar ou focar.

Posso definir width em um elemento inline?

Não. Width, height e margens verticais são ignorados em uma caixa inline simples, como um span. O padding vertical é pintado, mas não afasta as linhas. Mude para inline-block, ou transforme o pai em um contêiner flex, e esses tamanhos passam a valer.

content-box versus border-box em números

Bordas além de uma linha simples

Como o display muda a caixa

Margin ou padding? Escolha pela função

Qual usar

Colapso de margens, ao vivo

O primeiro par mostra dois irmãos cujas margens de 24px e 40px se encontram: o espaço é de 40px, não 64px. O segundo par fica em um contêiner flow-root, que impede a fusão das margens do pai e do filho, e o terceiro usa flex, onde nada colapsa.

Colapso entre irmãos e entre pai e filho

Edite as margens e observe os espaços. Adicionar padding-top: 1px à caixa externa também impede a fusão entre pai e filho.

Estilos de borda e raio

Os oito estilos de borda visíveis

groove, ridge, inset e outset sombreiam a borda para simular profundidade. Ficam melhores com 4px ou mais.

Formatos com raio: arredondado, pílula, círculo, elipse

Um raio enorme, como 999px, cria uma pílula de qualquer comprimento. 50% em um quadrado gera um círculo.

Todos os valores de display nos mesmos três itens

Valores de display comparados

block, inline, inline-block, flex e grid lado a lado

Cada linha contém os mesmos três spans com width: 80px e padding. Só o inline ignora a largura.

display: none vs visibility: hidden vs opacity: 0

Três formas de ocultar, comparadas

O item do meio oculto de três formas

Repare no espaço deixado por visibility e opacity, e no espaço fechado com display: none.

O reset de border-box

Aplicar border-box em tudo

Os pseudo-elementos estão incluídos porque também são caixas. O Preflight do Tailwind já traz essa regra.

Equivalentes no Tailwind

Utilitários de box model no Tailwind (escala de espaçamento padrão, 1 unidade = 0.25rem)

Visualizador de box model

Camada de margin

Caixa renderizada (limite da borda)

Espaço ocupado, com as margens

Amarelo é a margin, a linha azul é a border, verde é o padding, azul-claro é o conteúdo.

largura da borda

Copiar CSS

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

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site