Explique sua compreensão do modelo de caixa e como você diria ao navegador em CSS para renderizar seu layout em diferentes modelos de caixa.
Topics
CSS
Edit on GitHub
O modelo de caixa CSS descreve as caixas retangulares que são geradas para os elementos na árvore de documentos e dispostas de acordo com o modelo de formatação visual. Cada caixa tem uma área de conteúdo (por exemplo, texto, uma imagem, etc.) e áreas opcionais dos padding
, border
, e margin
.
O modelo da caixa CSS é responsável por calcular:
- O espaço que um elemento de bloco ocupa.
- Se as bordas e/ou margens se sobrepõem ou se colapsam.
- Dimensões de uma caixa.
Regras do Modelo da Caixa
- As dimensões de um elemento de bloco são calculadas por meio de
width
,height
,padding
s eborder
s. - Se nenhum
height
for especificado, um elemento do bloco será tão alto quanto o conteúdo que ele contém, maispadding
(a menos que existam floats, veja descreva flutuantes e como funcionam). - Se nenhum
width
for especificado, um elemento não-float
do bloco será expandido para caber a largura do seu pai menos opadding
, a não ser que tenha uma propriedade definida para 'max-width', neste caso não será maior do que a largura máxima especificada.- Alguns elementos de nível de bloco (por exemplo,
table
,figure
einput
) têm valores de largura inerentes ou padrão, e podem não expandir para preencher a largura total do seu recipiente pai. - Nota:
span
é um elemento em nível inline e não tem largura padrão, então ele não se expandirá para se ajustar.
- Alguns elementos de nível de bloco (por exemplo,
- O
height
de um elemento é calculado pelaheight
do conteúdo. - A
width
de um elemento é calculada pelawidth
do conteúdo. - Por padrão (
box-sizing: content-box
),padding
s eborder
s não fazem parte dawidth
eheight
de um elemento.
Note que margin
s não são contados para o tamanho real da caixa. Isso afeta o espaço total que a caixa ocupará na página, mas apenas o espaço fora da caixa. A área da caixa para no border
— ela não se estende até a margin
.
Extra
A propriedade box-sizing, que define como as dimensões totais largura e altura de um elemento são calculadas.
box-sizing: content-box
: Este é o valor padrão debox-sizing
e segue as regras mencionadas acima.box-sizing: border-box
: Awidth
e aheight
incluirão o conteúdo, padding e borda, mas não incluirão a margin. Esta é uma maneira muito mais intuitiva de pensar em caixas e, portanto, muitos frameworks CSS (por exemplo, Bootstrap, Tailwind, Bulma) definem* { box-sizing: border-box; }
globalmente, para que todos os elementos usem esse modelo de caixa por padrão. Veja a pergunta sobre o 'box-sizing: border-box' para mais informações.