Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Calculo de margens incorretos?

Configuramos o item para ter inicialmente 25%, porém foi necessário colocar uma margem de 1 %, então configuramos o box para ter 1%.

1% + 23% + 1% = 25% Porem ao zeramos as margens do 4 filho, o item inicial deixar de assumir 100% do pai! A Orienta na aula é essa mesmo, ou perdi algo?

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="utf-8">
    <title></title>

    <link rel="stylesheet" type="text/css" href="css/style.css">

    <style type="text/css">

    .grid{
        display: flex;
        width: 1000px;
        margin: auto;
        flex-wrap: wrap;
        background-color: blueviolet;
    }

    .box {
        height: 150px;
        width: 23%;
        background-color: green;
        margin: 1%;
    }

</style>

</head>
<body>

    <div class="grid">
        <div class="box">Ruby on Rails</div>
        <div class="box">Java</div>
        <div class="box">HTML</div>
        <div class="box">Python</div>
        <div class="box">Wordpress</div>
        <div class="box">Bootstrap</div>
        <div class="box">Java Web</div>
    </div>

</body>
</html>
*{
    margin: 0;
    padding: 0;
}

.grid .box:nth-child(4n) {
    margin-right: 0px;
}

.grid .box:nth-child(4n+1) {
    margin-left: 0px;
}

.box{
    font-weight: bold;
}
2 respostas

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

solução!

Olá Anderson, tudo bem?

Excelente! Seu raciocínio está correto.

Como você citou, primeiro colocamos uma largura de 25%, porém para colocar a margem de 1% horizontalmente, diminuímos a largura dos elementos para 23%.

.conteudoPrincipal-cursos-link {
    width: 23%;
}

Dessa forma, temos: width: 23% + margin-left: 1% + margin-right: 1%, totalizando 25% para cada elemento.

Após esse passo, como não faz sentido os elementos da primeira coluna ter margin-left e os da última coluna ter margin-right, retiramos essas propriedades dos elementos múltiplos de 4 (4, 8, 12) e dos elementos múltiplos de 4+1 (1, 5, 7, 9). Assim:

.conteudoPrincipal-cursos-link:nth-child(4n) {
    margin-right: 0;

}

.conteudoPrincipal-cursos-link:nth-child(4n+1) {
    margin-left: 0;

}

Com isso, a largura total de cada elemento incluindo as margens será:

  • Elemento 1: 24%
  • Elemento 2: 25%
  • Elemento 3: 25%
  • Elemento 4: 24%

Largura total: 98%, o elemento deixa de caber 100% no elemento pai. Isso ocorre somente porque a intenção era a retirada dessas margens, então ou os elementos ocupariam 100% (com as margens) ou menos que 100%, como foi o caso. Caso as larguras ficassem maiores do que nessas duas opções, os elementos iriam estourar o container pai.

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!