A box-sizing
propriedade em CSS controla como o modelo de caixa é tratado para o elemento ao qual se aplica.
.module ( box-sizing: border-box; )
Uma das maneiras mais comuns de usá-lo é aplicá-lo a todos os elementos da página, incluindo os pseudoelementos:
*, *::before, *::after ( box-sizing: border-box; )
Isso geralmente é chamado de “tamanho de caixa universal” e é uma boa maneira de trabalhar! O (literal) que width
você define é a largura que você obtém, sem ter que fazer cálculos mentais e gerenciar a complexidade que vem de larguras que vêm de várias propriedades. Temos até um dia de conscientização do tamanho da caixa por aqui.
Valores
content-box
: o padrão. Os valores de largura e altura aplicam-se apenas ao conteúdo do elemento. O preenchimento e a borda são adicionados na parte externa da caixa.padding-box
: Os valores de largura e altura se aplicam ao conteúdo do elemento e seu preenchimento. A borda é adicionada do lado de fora da caixa. Atualmente, apenas o Firefox oferece suporte aopadding-box
valor.border-box
: Os valores de largura e altura se aplicam ao conteúdo, preenchimento e borda.inherit
: herda o tamanho da caixa do elemento pai.
Exemplo
Esta imagem de exemplo compara o padrão content-box
(superior) com border-box
(inferior):
A linha vermelha entre as imagens representa o valor da largura dos elementos. Observe que o elemento com o padrão box-sizing: content-box;
excede a largura declarada quando o preenchimento e a borda são adicionados fora da caixa de conteúdo, enquanto o elemento com box-sizing: border-box;
aplicado se ajusta completamente à largura declarada.
Usando o dimensionamento da caixa
Digamos que você defina um elemento como width: 100px; padding: 20px; border: 5px solid black;
. Por padrão, a caixa resultante tem 150px de largura. Isso ocorre porque o modelo de dimensionamento de caixa padrão é content-box
, que aplica a largura declarada de um elemento apenas ao seu conteúdo, colocando o preenchimento e a borda fora da caixa do elemento. Isso aumenta efetivamente a quantidade de espaço que o elemento ocupa.
Se você alterar box-sizing
para padding-box
, o preenchimento será colocado dentro da caixa do elemento. Então, a caixa teria 110 px de largura, com 20 px de preenchimento na parte interna e 10 px de borda na parte externa. Se quiser colocar o preenchimento e a borda dentro da caixa, você pode usar border-box
. A caixa teria então 100 px de largura - 10 px de borda e 20 px de preenchimento são colocados dentro da caixa do elemento.
Demo
Veja a comparação de caneta de valores de tamanho de caixa por CSS-Tricks (@ css-tricks) em CodePen.
Relacionado
width
height
padding
border
Suporte para navegador
cromada | Safári | Raposa de fogo | Ópera | IE | Android | iOS |
---|---|---|---|---|---|---|
Nenhum *† | 3 * † | 1 ‡ | 7 * | 8 * | 2,1 * † | Nenhum * |
* padding-box
não suportado
† versões mais antigas exigem -webkit
prefixo (Chrome 1-9, Safari 3-5, Android 2.1-3.x)
‡ -moz
prefixo necessário até a versão 28, sem prefixo a partir de 29.