O que é padding
Padding é o espaço dentro de um elemento, entre o conteúdo e a borda. Ele recebe o fundo do elemento, então é a propriedade que dá respiro a um botão, um card ou um badge.
A área azul é o conteúdo. A faixa verde em volta são os 24px de padding em cada lado, e a borda fica por fora disso.
O shorthand padding: 1, 2, 3 ou 4 valores
padding define os quatro lados em uma declaração. A quantidade de valores decide qual lado recebe qual, em sentido horário a partir do topo:
| Declaração | Topo | Direita | Base | Esquerda |
|---|---|---|---|---|
padding: 10px; | 10 | 10 | 10 | 10 |
padding: 10px 20px; | 10 | 20 | 10 | 20 |
padding: 10px 20px 30px; | 10 | 20 | 30 | 20 |
padding: 10px 20px 30px 40px; | 10 | 20 | 30 | 40 |
Dois valores significam "vertical, horizontal". Três valores significam "topo, horizontal, base". Quatro dão a volta no relógio: topo, direita, base, esquerda (em inglês, o macete é TRouBLe: top, right, bottom, left).
Digite qualquer shorthand abaixo. A caixa é redesenhada e o navegador informa o que cada lado recebeu:
Experimente 8px, 8px 24px, 0 0 40px e 1em 5%. Um valor inválido, como -10px, é ignorado e a caixa mantém o último padding válido.
Um lado de cada vez
Cada lado tem a própria propriedade, o que fica mais claro que um shorthand de quatro valores quando você só quer mudar um:
.card {
padding-top: 16px;
padding-right: 24px;
padding-bottom: 16px;
padding-left: 24px;
}
Um shorthand seguido de um lado é um padrão comum: defina tudo e depois ajuste um lado.
.card {
padding: 16px;
padding-bottom: 32px; /* only the bottom changes */
}
Aqui a ordem importa: um shorthand padding escrito depois de padding-bottom voltaria a base para 16px.
Padding lógico: padding-inline e padding-block
padding-left e padding-right são físicos: ficam do mesmo lado em qualquer idioma. As propriedades lógicas seguem a direção da escrita, que é o que você quer em um site que também é exibido da direita para a esquerda:
| Propriedade lógica | Em português (esquerda para direita) | Em árabe (direita para esquerda) |
|---|---|---|
padding-inline-start | esquerda | direita |
padding-inline-end | direita | esquerda |
padding-inline | esquerda e direita | direita e esquerda |
padding-block | topo e base | topo e base |
O padding aumenta a caixa (a menos que seja border-box)
Por padrão, width é a largura só do conteúdo, e o padding é somado por cima. Uma caixa width: 200px com padding: 20px tem 240px de largura:
box-sizing: border-box mantém a caixa em 200px e tira o padding de dentro. A página do box model mostra a conta completa.
Padding em porcentagem
Um padding em porcentagem é medido em relação à largura do pai, nos quatro lados, incluindo topo e base:
É daí que veio o velho truque "padding-top: 56.25%" para caixas de vídeo 16:9. Hoje aspect-ratio: 16 / 9 faz o mesmo trabalho diretamente.
Padding em botões e links
O padding é o jeito certo de aumentar um link ou botão, porque ele faz parte do elemento e, portanto, do que você pode clicar ou tocar. A margin acrescentaria espaço, mas não um alvo maior.
.btn {
display: inline-block; /* lets vertical padding take space in the line */
padding: 10px 18px; /* a comfortable touch target */
}
Valores que o padding aceita
| Valor | Exemplo | Observações |
|---|---|---|
| Comprimento | 12px, 1rem, 0.5em | em acompanha o tamanho da fonte do elemento |
| Porcentagem | 5% | Da largura do bloco que o contém |
0 | padding: 0 | Não precisa de unidade |
| Negativo | -10px | Inválido, ignorado |
auto | auto | Inválido para padding (funciona para margin) |
Erros comuns
- Ordem errada no shorthand de quatro valores. É topo, direita, base, esquerda, em sentido horário.
- Uma caixa que cresce quando você põe padding. Defina
box-sizing: border-box. - Usar padding para separar dois elementos. Espaço entre elementos é margin; padding é espaço dentro de um. Veja margin vs padding.
- Padding vertical em um link inline que invade outras linhas. Transforme-o em
inline-block. - Padding negativo ou
padding: auto. Os dois são inválidos e ignorados sem aviso.
Perguntas frequentes
O que é padding no CSS?
Padding é o espaço entre o conteúdo de um elemento e a borda dele. Ele faz parte do elemento, então mostra a cor de fundo do elemento e aumenta a área clicável de um link ou botão.
Em que ordem ficam os valores do shorthand padding?
Em sentido horário a partir do topo: padding: top right bottom left;. Com três valores é topo, esquerda e direita, base; com dois valores, topo e base e depois esquerda e direita; com um valor, os quatro lados.
O padding aumenta o tamanho do elemento?
Com o padrão box-sizing: content-box, sim: o padding é somado a width e height. Com box-sizing: border-box, o padding sai de dentro da largura, então o elemento mantém o tamanho que você definiu.
Um padding em porcentagem é relativo a quê?
À largura do bloco que o contém, nos quatro lados. padding-top: 50% é metade da largura do pai, não da altura, e é por isso que os antigos truques de proporção usavam padding vertical.
O padding pode ser negativo?
Não. Um valor de padding negativo é inválido e a declaração é ignorada. Para puxar o conteúdo para fora, use uma margin negativa.
Como colocar padding no HTML?
Com CSS, em uma folha de estilo ou em um atributo style: <div style="padding: 16px;">. O HTML não tem atributo de padding para elementos em geral; o antigo atributo cellpadding das tabelas está obsoleto e foi substituído por padding em td e th.