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
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,paddings eborders. - Se nenhum
heightfor 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
widthfor especificado, um elemento não-floatdo 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,figureeinput) 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
heightde um elemento é calculado pelaheightdo conteúdo. - A
widthde um elemento é calculada pelawidthdo conteúdo. - Por padrão (
box-sizing: content-box),paddings eborders não fazem parte dawidtheheightde um elemento.
Note que margins 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-sizinge segue as regras mencionadas acima.box-sizing: border-box: Awidthe aheightincluirã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.