CSSda to'g'ri chekinishli plitkachalar

Keling, haqiqatan ham muammosiz ishlaydigan marginlar yordamida chekinishli plitkachani yasaymiz. Boshlang'ich holatda chekinishlari bo'lmagan shunday plitkachamiz bor deb faraz qilaylik:

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

Результат:

Keling, elementlar orasidagi gorizontal chekinishlarni margin yordamida yasaymiz.

Buning uchun barcha child elementlarga margin-right ni 10px qilib belgilaymiz, har uchinchi child uchun esa bu margin ni nolga tenglaymiz. Buning uchun nth-child psevdoklassidan foydalanamiz, uning parametrini har uchinchi elementni olishimiz uchun mos qilib qo'yamiz.

Chekinishlar uchun joy ochish maqsadida parent elementning kengligini 320px ga oshiramiz va natijani ko'rib chiqamiz:

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

Результат:

Demak, hammasi ishlayapti. Keling, oxirgi qatorda kamroq element bo'lishi uchun oxirgi elementni olib tashlaymiz va oxirgi qator bilan bog'liq muammolar bo'lmasligiga ishonch hosil qilamiz:

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

Har qatorda ikkitadan element bo'lgan, elementlar orasidagi masofa 20px bo'lgan plitkachani yasang.