Responzívna mriežka bez medzier v CSS

Vytvorme mriežku, ktorá bude mať rôzny počet blokov v rade v závislosti od šírky obrazovky. Tu je príklad toho, čo by sme mali dostať:

Najprv napíšme HTML kód:

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 class="child">10</div>
  <div class="child">11</div>
  <div class="child">12</div>
</div>

Teraz pridajme štýly rodičovskému elementu blokov:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}

Teraz nastavme štýly samotným blokom, bez nastavenia ich šírky:

css.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

Je zrejmé, že šírka blokov musí byť v percentách, aby pri zmene obrazovky bloky plynule menili svoju šírku. Zároveň v určitých medzných bodoch obrazovky musíme meniť šírku blokov tak, aby do radu sa zmestil určitý počet týchto blokov.

Napíšme kód, ktorý umiestni štyri bloky do radu:

css@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}

A teraz umiestnime tri bloky do radu:

css@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}

A teraz umiestnime dva bloky do radu:

css@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}

Jeden blok v rade:

css@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}

Poďme spojiť celý kód dohromady:

css.parent {
  display: flex;
  flex-wrap: wrap;
  width: 95%;
  margin: 50px auto;
}
.child {
  box-sizing: border-box;
  height: 100px;
  padding: 20px;
  border: 1px solid green;
}

@media (max-width: 400px) {
  .child {
    width: 100%;
  }
}
@media (min-width: 400px) and (max-width: 700px) {
  .child {
    width: 50%;
  }
}
@media (min-width: 700px) and (max-width: 1000px) {
  .child {
    width: 33.3333%;
  }
}
@media (min-width: 1000px) {
  .child {
    width: 25%;
  }
}
Задание 1

Upravte môj kód tak, aby sa šírka blokov vypočítavala pomocou funkcie calc.

Задание 2

Vytvorte mriežku, ktorá pri zmenšovaní obrazovky bude mať najprv štyri prvky v rade, potom dva prvky v rade a potom jeden prvok v rade.

Задание 3

Vytvorte mriežku, ktorá pri zmenšovaní obrazovky bude mať najprv šesť prvkov v rade, potom tri prvky v rade a potom jeden prvok v rade.