Menu

Margin vs padding no CSS: a diferença lado a lado

Padding é o espaço dentro da borda de um elemento; margin é o espaço fora dela. Veja os dois na mesma caixa, lado a lado e ao vivo, e descubra qual usar para fundos, área de clique, espaço entre elementos e centralização.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

A diferença em uma imagem

O padding fica dentro da borda. A margin fica fora. As duas caixas abaixo têm o mesmo conteúdo e o mesmo valor de 24px; só a propriedade muda. O cinza é o contêiner atrás delas.

Com padding, os 24px são azuis: fazem parte da caixa, ficam dentro da borda, e a caixa cresce. Com margin, os 24px são cinza: a caixa fica justa em volta do texto e o espaço de fora afasta as bordas do contêiner.

Teste os dois em uma caixa

Mexa os dois controles deslizantes. O padding aumenta a caixa azul; a margin afasta a caixa das bordas cinza sem alterá-la.

Observe a linha do tamanho: ela muda quando você mexe no padding e fica igual quando você mexe na margin.

Margin vs padding em resumo

PaddingMargin
OndeDentro da bordaFora da borda
FundoMostra o fundo do elementoSempre transparente
Faz parte da área de cliqueSimNão
Soma no tamanho do elementoSim, com content-boxNão
Aceita autoNãoSim (margin: 0 auto centraliza)
Aceita valor negativoNãoSim
Valores verticais colapsamNuncaSim, margens verticais vizinhas colapsam
Porcentagem relativa aLargura do bloco que o contémLargura do bloco que o contém
Uso típicoEspaço dentro de botões, cards, inputsEspaço entre elementos, centralização

Cada propriedade tem a própria página com todos os detalhes: padding CSS e margin CSS.

Qual usar

Faça uma pergunta: o espaço pertence ao elemento ou fica entre elementos?

  • O respiro em volta do rótulo de um botão, o interior de um card, o espaço entre o texto de um input e a borda: padding. Ele leva o fundo e aumenta o alvo.
  • O espaço entre dois parágrafos, entre cards, em volta de uma seção: margin, ou gap quando o pai é um contêiner flex ou grid.

A área de clique é onde a escolha mais importa. Os dois links abaixo ocupam o mesmo espaço na página, mas o espaço do primeiro é padding e o do segundo é margin. Só o primeiro é fácil de acertar:

O contorno âmbar tracejado é a borda do elemento, que é a área que responde a cliques e toques. A margin em volta do segundo link é um espaço vazio que não faz nada.

Espaço entre itens: margin ou gap

Para uma linha ou grade de itens, gap no pai flex ou grid costuma ser mais limpo que margens em cada filho: ele só fica entre os itens, nunca antes do primeiro nem depois do último, então não há nada para desfazer.

Aqui o contêiner cinza usa padding (espaço dentro dele, cinza), os itens usam padding (espaço dentro de cada um, verde) e o gap cuida do espaço entre eles.

Erros comuns

  • Usar margin para um espaço que deveria ter cor. A margin é transparente. Se o espaço deve mostrar o fundo, é padding.
  • Usar margin para aumentar um link. A área de clique termina na borda; use padding.
  • Esperar que duas margens verticais de 20px deem 40px. Margens verticais vizinhas colapsam para 20px. O padding nunca colapsa.
  • Tentar padding: auto para centralizar. Só a margin aceita auto.
  • Esquecer que o padding aumenta a caixa. Acrescente box-sizing: border-box para que width o inclua.

Perguntas frequentes

Qual a diferença entre margin e padding?

Padding é o espaço entre o conteúdo de um elemento e a borda dele, dentro do elemento. Margin é o espaço fora da borda, entre o elemento e os vizinhos. O padding mostra o fundo do elemento; a margin é sempre transparente.

Quando usar padding em vez de margin?

Use padding para o espaço que pertence ao elemento: o respiro em volta do texto de um botão, o interior de um card, tudo o que deve ter o mesmo fundo ou ser clicável. Use margin (ou gap em flex e grid) para o espaço entre elementos separados.

Padding ou margin aumenta o tamanho do elemento?

O padding aumenta, com o padrão box-sizing: content-box: ele é somado à largura e à altura. A margin nunca é somada ao tamanho do elemento; ela acrescenta espaço em volta (um bloco com width: auto até fica mais estreito, porque as margens ocupam parte da largura disponível). Com box-sizing: border-box, o padding sai de dentro da largura.

O padding pode ser negativo como a margin?

Não. Padding negativo é inválido e ignorado, enquanto margens negativas são permitidas e podem fazer elementos se sobreporem. O padding também não aceita auto, e é por isso que a centralização usa margin: 0 auto.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR