Responsywny kafelki bez odstępów w CSS

Zróbmy kafelki, które będą miały różną liczbę bloków w rzędzie w zależności od szerokości ekranu. Oto przykład tego, co powinniśmy uzyskać:

Najpierw napiszmy kod HTML:

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 dodajmy style dla rodzica bloków:

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

Teraz ustawmy style samym blokom, nie ustawiając im szerokości:

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

Oczywiście, szerokość bloków powinna być w procentach, aby przy zmianie ekranu bloki płynnie zmieniały swoją szerokość. Jednocześnie w określonych punktach ekranu powinniśmy zmieniać szerokość bloków tak, aby w rzędzie mieściła się określona liczba tych bloków.

Napiszmy kod, który ustawi cztery bloki w rzędzie:

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

A teraz ustawmy trzy bloki w rzędzie:

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

A teraz ustawmy dwa bloki w rzędzie:

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

Jeden blok w rzędzie:

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

Zbierzmy cały kod razem:

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

Przerób mój kod tak, aby szerokość bloków była obliczana za pomocą funkcji calc.

Задание 2

Zrób kafelki, które przy zmniejszaniu ekranu będą miały najpierw cztery elementy w rzędzie, potem dwa elementy w rzędzie, a potem jeden element w rzędzie.

Задание 3

Zrób kafelki, które przy zmniejszaniu ekranu będą miały najpierw sześć elementów w rzędzie, potem trzy elementy w rzędzie, a potem jeden element w rzędzie.