Responsiv CSS-rutnät utan marginaler

Låt oss skapa ett rutnät som kommer att ha olika antal block per rad beroende på skärmbredden. Här är ett exempel på vad vi borde få:

Låt oss först skriva HTML-koden:

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>

Låt oss nu lägga till stilar för föräldern till blocken:

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

Låt oss nu ange stilar för själva blocken, utan att ange deras bredd:

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

Uppenbarligen bör blockens bredd vara i procent, så att blocken jämnt ändrar sin bredd när skärmen ändras. Samtidigt bör vi vid vissa skärmstorlekar ändra blockens bredd så att ett visst antal av dessa block får plats i en rad.

Låt oss skriva kod som placerar fyra block i rad:

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

Och nu tre block i rad:

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

Och nu två block i rad:

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

Ett block i rad:

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

Låt oss samla all kod tillsammans:

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

Ändra min kod så att blockens bredd beräknas via funktionen calc.

Задание 2

Skapa ett rutnät som när skärmen minskar först har fyra element i rad, sedan två element i rad, och sedan ett element i rad.

Задание 3

Skapa ett rutnät som när skärmen minskar först har sex element i rad, sedan tre element i rad, och sedan ett element i rad.