Veuillez consulter le code ci-dessous :
ul {
display: flex;
list-style-type: none;
flex-wrap: wrap;
}
li {
flex-grow: 1;
border: 1px solid;
width: 1000px;
}
<header>
<ul class="child">
<li>Monday</li>
<li>Tuesday</li>
<li>Wednesday</li>
<li>Thursday</li>
<li>Friday</li>
</ul>
</header>
Notez la largeur de 1000px. Lorsque je charge la page, il y a cinq rangées, comme je m'y attendais. Si je supprime le width
les cases apparaissent sur une seule ligne, comme prévu.
Maintenant, si j'ajoute une largeur de 1px, le seul changement est que toutes les cases ont la même taille, c'est-à-dire 372,28 pixels (et non 1px). Il me semble que le comportement est le suivant :
- Si une certaine largeur est ajoutée aux éléments flexibles, ce qui signifie qu'ils peuvent tous tenir sur une seule ligne, assurez-vous que toutes les cases ont la même taille.
- Si une largeur est ajoutée aux éléments flexibles, ce qui signifie qu'ils ne peuvent pas tous tenir sur une seule ligne, il faut alors honorer la largeur.
- Si une largeur n'est pas ajoutée, les cases peuvent être de n'importe quelle taille, par exemple, la case du mercredi est la plus grande dans ce cas, car le mercredi est le mot le plus long.
Ai-je bien compris et pourquoi la largeur affecte-t-elle les éléments flexibles de cette manière ?
J'ai fait mes propres recherches et j'ai trouvé des questions comme celle-ci : Quelles sont les différences entre flex-grow et width ? . Cependant, je n'ai pas trouvé de réponse à ma question. J'ai également lu des informations sur la propriété "flex grow" ici : https://www.w3.org/TR/2018/CR-css-flexbox-1-20181119/#flex-grow-property