Eri levyiset elementit ja flex-lohkojen kutistuvuus CSS:ssä
Oletetaan nyt, että elementeillämme on eri leveydet. Tässä tapauksessa irrotettava palanen on verrannollinen elementin leveyteen ja se lasketaan seuraavalla kaavalla: neg. vapaa tila * (elementin leveys / kaikkien elementtien leveyksien summa).
Oletetaan, että meillä on 4 elementtiä. Oletetaan, että
ensimmäisen elementin leveys on 400px,
muiden elementtien leveys - 200px,
ja vanhemman leveys 900px.
Elementtien kokonaisleveys on:
400px + 3 * 200px = 1000px
Silloin negatiivinen vapaa tila on yhtä suuri kuin:
1000px - 900px = 100px
Lasketaan kuinka paljon irrotetaan ensimmäisestä elementistä:
100px * (400px / 1000px) = 40px
Eli sen leveys on:
400px - 40px = 360px
Lasketaan kuinka paljon irrotetaan kustasta muusta elementistä:
100px * (200px / 1000px) = 20px
Eli näiden elementtien leveys on:
200px - 20px = 180px
Toteuta kuvatut lohkot ja tarkista mittauksella, että elementtien leveys todella on yhtä suuri kuin laskemamme.
Laske lohkojen leveydet ja tarkista sitten laskelmat mittauksella:
<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;
}