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 :
<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>
.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.
É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.
É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.