Prilagodljiva ploščica brez presledkov v CSS

Naredimo ploščico, ki bo imela različno število blokov v vrstici, odvisno od širine zaslona. Tukaj je primer, kaj moramo dobiti:

Najprej napišimo HTML kodo:

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>

Zdaj pa dodajmo sloge starševskemu elementu blokov:

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

Zdaj pa nastavimo sloge samim blokom, ne da bi jim določili širino:

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

Očitno mora biti širina blokov v odstotkih, da se ob spreminjanju zaslona bloki gladko spreminjajo svojo širino. Hkrati moramo na določenih točkah zaslona spreminjati širino blokov tako, da se v vrsto postavi določeno število teh blokov.

Napišimo kodo, ki bo postavila štiri bloke v vrsto:

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

Zdaj pa postavimo tri bloke v vrsto:

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

Zdaj pa postavimo dva bloka v vrsto:

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

En blok v vrsto:

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

Zdaj pa zberimo vso kodo skupaj:

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

Spremenite mojo kodo tako, da se širina blokov izračuna preko funkcije calc.

Задание 2

Naredite ploščico, ki bo ob zmanjševanju zaslona imela najprej štiri elemente v vrsti, nato dva elementa v vrsti in nato en element v vrsti.

Задание 3

Naredite ploščico, ki bo ob zmanjševanju zaslona imela najprej šest elementov v vrsti, nato tri elemente v vrsti in nato en element v vrsti.