Problèmes de mise en mosaïque avec les flexbox en CSS

Le premier problème de la mise en mosaïque est en réalité assez évident - il est très peu pratique que le parent doive définir explicitement la hauteur. Après tout, il est tout à fait possible que le nombre de blocs change dynamiquement et que leur nombre soit tantôt inférieur, tantôt supérieur à 9.

Et le deuxième problème surviendra si le nombre de blocs est tel que la dernière rangée aura un nombre insuffisant de blocs. Dans ce cas, la dernière rangée sera affreuse :

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>
css.parent {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  flex-wrap: wrap;
  width: 320px;
  border: 1px solid red;
}
.child {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  border: 1px solid green;
}

Результат:

Il s'avère que même horizontalement, la valeur space-between fonctionne mal dans notre cas.

Pour résumer : si le nombre de vos éléments enfants est toujours constant et tient correctement dans le parent, alors la mise en mosaïque avec space-between est une chose assez pratique. Dans le cas contraire, il faudra trouver autre chose.

Задание 1

Étant donné 12 éléments. Créez une mise en mosaïque de 4 éléments par rangée avec une largeur de chaque élément de 100px et un espace entre eux de 20px.

Задание 2

Étant donné 12 éléments. Créez une mise en mosaïque de 3 éléments par rangée avec une largeur de chaque élément de 150px et un espace entre eux de 10px.