Skip to main content

Box Model | CSS

  • Box Model | CSS

Documentação sobre box-sizing no CSS

Introdução ao Modelo de Caixa CSS

O Modelo de Caixa (Box Model) é fundamental para o layout de páginas web. Ele descreve como os elementos HTML ocupam o espaço dentro de uma página. Cada elemento é representado como uma caixa retangular composta por quatro áreas:

  1. Conteúdo (Content): Onde o conteúdo real do elemento é exibido, como texto, imagens ou outros elementos.
  2. Preenchimento (Padding): O espaço entre o conteúdo e a borda do elemento. Serve para criar um afastamento entre o conteúdo e a borda.
  3. Borda (Border): A linha que envolve o elemento. A borda pode ter largura e cor definidas.
  4. Margem (Margin): O espaço entre a borda do elemento e os outros elementos ao redor. Ajuda a separar os elementos da página.

Com esses quatro componentes, um único elemento pode afetar significativamente o layout de uma página, dependendo de como as propriedades de largura e altura são calculadas.

O que é box-sizing?

A propriedade box-sizing no CSS determina como o tamanho total de um elemento (ou seja, a largura e a altura) é calculado, levando em consideração as áreas de conteúdo, padding, borda e margem. Essa propriedade permite controlar se a largura e a altura de um elemento incluem o preenchimento e a borda ou não.

Valores de box-sizing

O box-sizing pode ter dois valores principais:

  1. content-box (Padrão):

    • No valor padrão de box-sizing, que é content-box, a largura e altura especificadas para um elemento refletem apenas o conteúdo. Ou seja, o padding e a borda não estão incluídos na largura e altura.
    • O tamanho total da caixa será o valor definido para width/height, mais o padding e as bordas.

    Exemplo:

    .box {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 5px solid black;
    }

    O cálculo da largura total será:

    • Largura Total = 200px (conteúdo) + 20px (padding) + 20px (padding) + 5px (borda) + 5px (borda) = 250px.
  2. border-box:

    • Quando você define box-sizing: border-box;, a largura e altura especificadas incluem o padding e a borda. Isso facilita o controle do layout, pois o tamanho do elemento será exatamente o valor de width e height especificado, independentemente do tamanho do padding ou da borda.
    • Ou seja, o espaço ocupado pelo elemento será o total de width e height, incluindo padding e borda.

    Exemplo:

    .box {
    width: 200px;
    height: 100px;
    padding: 20px;
    border: 5px solid black;
    box-sizing: border-box;
    }

    O cálculo da largura total será:

    • Largura Total = 200px (total, incluindo conteúdo, padding e borda). O conteúdo será reduzido para caber no tamanho total da caixa.

Por que Usar box-sizing: border-box;?

Usar box-sizing: border-box; traz vários benefícios, especialmente ao trabalhar com layouts mais complexos. Aqui estão algumas razões pelas quais muitos desenvolvedores preferem usar esse valor:

  1. Previsibilidade no Layout:

    • Com box-sizing: border-box;, o tamanho do elemento já inclui padding e borda, o que facilita o controle do layout. Isso é útil quando você precisa garantir que os elementos se ajustem a um tamanho específico sem ultrapassar as dimensões esperadas.
  2. Maior Facilidade de Ajuste de Layout:

    • Quando você define width ou height, não precisa se preocupar em adicionar manualmente o padding e as bordas ao tamanho total. Isso torna o ajuste de layouts mais intuitivo e sem erros.
  3. Facilidade com Layouts Responsivos:

    • Em projetos com layouts fluidos e responsivos, box-sizing: border-box; torna o trabalho com porcentagens de largura e altura muito mais fácil, sem surpresas com o impacto do padding e das bordas.
  4. Compatibilidade com Frameworks:

    • Muitos frameworks de CSS populares, como o Bootstrap, utilizam box-sizing: border-box; como padrão. Isso garante que os layouts funcionem de maneira previsível em todos os dispositivos e tamanhos de tela.

Exemplo de Uso Prático

Aqui está um exemplo de como a propriedade box-sizing pode afetar o layout de uma página. Suponha que você tenha dois elementos, um usando content-box e outro usando border-box.

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de box-sizing</title>
<style>
.content-box {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
background-color: lightblue;
}

.border-box {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
background-color: lightcoral;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="content-box">Content Box</div>
<div class="border-box">Border Box</div>
</body>
</html>
  • O primeiro div (.content-box) tem um tamanho total de 250px de largura (incluindo o padding e a borda), enquanto o segundo div (.border-box) tem exatamente 200px de largura, pois o padding e a borda são incluídos no valor de width.

Conclusão

A propriedade box-sizing é crucial para controlar como os elementos ocupam o espaço em uma página. Usar box-sizing: border-box; é uma prática comum entre desenvolvedores, pois oferece mais controle e previsibilidade sobre o layout, especialmente ao lidar com bordas e preenchimentos.

Recomenda-se que, ao iniciar um projeto CSS, defina box-sizing: border-box; para todos os elementos, garantindo um layout mais simples e fácil de ajustar.