3
respostas

Gostaria de saber para que serve (box-sizing: border-box)

Fiz o código conforme fui orientado pelo professor mas não ficou claro o uso desse estilo no css (box-sizing: border-box;) vou deixar todo o código do meu CSS para ficar mais claro.

header {
    background: #BBBBBB;
    padding: 20px 0;
}

.caixa {
    position: relative;
    width: 940px;
    margin: auto auto;
}

nav {
    position: absolute;
    top: 110px;
    right: 0;
}

nav li {
    display: inline;
    margin: 0 0 0 15px;
}

nav a {
    text-transform: uppercase;
    color: #000000;
    font-weight: bold;
    font-size: 22px;
    text-decoration: none;

}

.produtos {
    width: 940px;
    margin: 0 auto;
    padding: 50px auto;
}

.produtos li {
    display: inline-block;
    text-align: center;
    width: 30%;
    vertical-align: top;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

.produtos h2 {
    font-size: 30px;
    font-weight: bold;
}

.produto-descricao {
    font-size: 18px;
}

.produto-preco {
    font-size: 22px;
    font-weight: bold;
    margin-top: 10px;
}
3 respostas

Segue também o código HTML para ficar mais claro o entendimento.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Produtos - Barbearia Alura</title>
        <link rel="stylesheet" type="text/css" href="reset.css">
        <link rel="stylesheet" type="text/css" href="produtos.css">
    </head>
    <body>
        <header>
            <div class="caixa">
                <h1><img src="logo.png"></h1>

                <nav>
                    <ul>
                        <li><a href="index.html">Home</a></li>
                        <li><a href="produtos.html">Produtos</a></li>
                        <li><a href="contato.html">Contato</a></li>
                    </ul>
                </nav>
            </div>
        </header>
        <main>
            <ul class="produtos">
                <li>
                    <h2>Cabelo</h2>
                    <img src="cabelo.jpg">
                    <p class="produto-descricao">Na tesoura ou na máquina, como o cliente preferir</p>
                    <p class="produto-preco">R$ 25,00</p>
                </li>
                <li>
                    <h2>Barba</h2>
                    <img src="barba.jpg">
                    <p class="produto-descricao">Corte e desenho profissional de barba</p>
                    <p class="produto-preco">R$ 18,00</p>
                </li>
                <li>
                    <h2>Cabelo</h2>
                    <img src="cabelo+barba.jpg">
                    <p class="produto-descricao">Pacote completo de cabelo e barba</p>
                    <p class="produto-preco">R$ 35,00</p>
                </li>
            </ul>
        </main>
    </body>
</html>

Oi, Maurício, tudo bem?

Define como a largura e a altura de um elemento são calculadas: devem incluir preenchimento e bordas ou não. Então, o que o border-box faz é definir se os valores dados a width e a height serão calculados dentro da caixa. Veja esse exemplo:

<html>
<head>
<style> 
#example1 {
  box-sizing: content-box;  
  width: 300px;
  height: 100px;
  padding: 30px;  
  border: 10px solid blue;
}

#example2 {
  box-sizing: border-box;
  width: 300px;
  height: 100px;
  padding: 30px;  
  border: 10px solid blue;
}
</style>
</head>
<body>

<h2>box-sizing: content-box (default):</h2>
<div id="example1"><p>380px</p></div>

<h2>box-sizing: border-box:</h2>
<div id="example2"><p>300px</p></div>

</body>
</html>

No exemple1, que é modo padrão, será somado aos 300px de largura 20px de bordar (10px de direita e 10 de esquerda) + 60px de padding (30px da esquerda e 30px da direita) totalizando 380px. Com o box-sizing: border-box, no exemple2, todo esse comportamento é prevenido e deixando a caixa com os 300px de largura.

Se ficou alguma dúvida, é só falar!

Pronto então digamos que o estilo (box-sizing: border-box) define um limite para minha caixa ou container ? ou seja por mais que eu adicione uma marging ou um padding ao estilo (box-sizing: border-box) ele não deixa esse limite ser ultrapassado ?

Seria isso , outra coisa onde defino esse limite da caixa no (box-sizing: border-box) e já que vc colocou outro estilo no código qual seria a diferença entre o (box-sizing: border-box) e o )box-sizing: content-box;) ?