Responzivní mřížka bez mezer v CSS

Pojďme vytvořit mřížku, která bude mít různý počet bloků v řadě v závislosti na šířce obrazovky. Zde je příklad toho, co bychom měli získat:

Napišme nejprve 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>

Nyní přidejme styly rodiči bloků:

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

Nyní nastavme styly samotným blokům, aniž bychom jim zadali šířku:

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

Je zřejmé, že šířka bloků by měla být v procentech, aby se bloky plynule měnily při změně obrazovky. Zároveň v určitých bodech obrazovky musíme měnit šířku bloků tak, aby do řady bylo umístěno určité množství těchto bloků.

Pojďme napsat kód, který umístí čtyři bloky do řady:

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

A nyní umístíme tři bloky do řady:

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

A nyní umístíme dva bloky do řady:

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

Jeden blok v řadě:

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

Pojďme spojit 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 se šířka bloků vypočítávala pomocí funkce calc.

Задание 2

Vytvořte mřížku, která se při zmenšení obrazovky změní nejprve na čtyři prvky v řadě, poté dva prvky v řadě a nakonec jeden prvek v řadě.

Задание 3

Vytvořte mřížku, která se při zmenšení obrazovky změní nejprve na šest prvků v řadě, poté tři prvky v řadě a nakonec jeden prvek v řadě.