Um layout de blocos com margens corretas em CSS

Vamos criar um layout de blocos realmente funcional e sem problemas, com espaçamentos usando margens. Suponha que inicialmente temos este layout de blocos sem espaçamentos:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
  <div class="child">9</div>
</div>
css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 300px;
  border: 1px solid red;
}
.child {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  border: 1px solid green;
}

Результат:

Vamos criar espaçamentos horizontais entre os elementos usando margin.

Para isso, vamos definir para todos os elementos filhos margin-right com o valor 10px, e para cada terceiro filho, vamos zerar esta margin. Vamos usar o pseudo-classe nth-child, configurando seu parâmetro para selecionar cada terceiro elemento.

Vamos também aumentar a largura do elemento pai para 320px, para dar espaço para as margens, e ver o resultado:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
  <div class="child">9</div>
</div>
css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 320px;
  border: 1px solid red;
}
.child {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  margin-right: 10px;
  border: 1px solid green;
}
.child:nth-child(3n) {
  margin-right: 0;
}

Результат:

Então, está funcionando. Vamos remover o último elemento, para que a última linha tenha menos elementos, e verificar que não teremos problemas com esta última linha:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
  <div class="child">4</div>
  <div class="child">5</div>
  <div class="child">6</div>
  <div class="child">7</div>
  <div class="child">8</div>
</div>
css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 320px;
  border: 1px solid red;
}
.child {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  margin-right: 10px;
  border: 1px solid green;
}
.child:nth-child(3n) {
  margin-right: 0;
}

Результат:

Задание 1

Crie um layout de blocos com dois elementos por linha e com distância entre os elementos de 20px.