CSS'te Doğru Boşluklu Kareler

Margin'lerle gerçekten sorunsuz çalışan boşluklu kareler yapalım. Başlangıçta boşluksuz böyle karelerimiz olduğunu varsayalım:

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;
}

Результат:

Şimdi elemanlar arasında yatay boşluklar yapalım margin kullanarak.

Bunun için tüm alt elemanlara margin-right değerini 10px olarak ayarlayalım, ve her üçüncü alt elemanın bu margin değerini sıfırlayalım. Bunun için nth-child sözde sınıfını kullanacağız, içine her üçüncü elemanı seçecek şekilde bir parametre vererek.

Ayrıca üst elemanın genişliğini 320px'ye çıkaralım, boşluklar için yer açmak için ve bakalım ne elde ediyoruz:

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;
}

Результат:

Yani, her şey çalışıyor. Şimdi son elemanı kaldıralım, böylece son sırada daha az eleman olsun ve bununla son sırada sorun yaşamadığımızdan emin olalım:

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

Elemanlar arası mesafesi 20px olan ikişer elemanlı sıralar halinde kareler yapın.