Largeur variable des éléments et compressibilité des blocs flex en CSS
Supposons maintenant que nos éléments aient des largeurs différentes. Dans ce cas, le fragment retranché sera proportionnel à la largeur de cet élément et sera calculé selon la formule suivante : espace libre négatif * (largeur de l'élément / somme de toutes les largeurs des éléments).
Supposons que nous ayons 4 éléments. Supposons que
la largeur du premier élément soit de 400px,
la largeur des autres éléments - 200px,
et la largeur du parent 900px.
La largeur totale des éléments est égale à :
400px + 3 * 200px = 1000px
Alors l'espace libre négatif sera égal à :
1000px - 900px = 100px
Trouvons combien sera retranché du premier élément :
100px * (400px / 1000px) = 40px
C'est-à-dire que sa largeur sera égale à :
400px - 40px = 360px
Trouvons combien sera retranché de chacun des autres éléments :
100px * (200px / 1000px) = 20px
C'est-à-dire que la largeur de ces éléments sera égale à :
200px - 20px = 180px
Implémentez les blocs décrits et vérifiez par mesure que la largeur des éléments sera bien égale à celle calculée par nous.
Calculez la largeur des blocs, puis vérifiez les calculs par mesure :
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.parent {
display: flex;
width: 300px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 300px;
}
.elem2 {
width: 100px;
}
.elem3 {
width: 100px;
}