Flex-grow-ominaisuus
Ominaisuus flex-grow määrittää sen,
kuinka paljon yksittäinen flex-lohko voi olla
naapurielementtejä suurempi, jos
se on tarpeen.
Esimerkiksi, jos kaikilla flex-lohkoilla flex-säiliön sisällä
on flex-grow:1, ne ovat samankokoisia.
Jos yhdellä niistä on flex-grow:2,
se on 2 kertaa suurempi kuin kaikki
muut.
Jos elementtien kokonaisleveys on
vähemmän kuin vanhemman leveys, niin oikealle jää
tyhjää tilaa. Halutessa tämä tyhjä tila voidaan
jakaa suhteellisesti elementtien kesken.
Tämä tehdään flex-grow-ominaisuudella,
joka asetetaan flex-elementeille. Tämän ominaisuuden
arvona on dimensioton numero.
Sovelletaan: yksittäiseen flex-lohkoon.
Tämä ominaisuus on osana lyhennettyä ominaisuutta
flex.
Syntaksi
valitsija {
flex-grow: positiivinen numero;
}
Oletusarvo: 0.
Esimerkki
Meillä on nyt kaksi flex-lohkoa, joiden leveys on
100px. Niiden kokonaisleveys on
200px, ja vanhemman leveys on 300px.
Saadaan, että jäljelle jää vapaata tilaa
100px.
Jos elementeille ei ole asetettu flex-grow,
näemme vain tämän vapaan tilan.
Jos se on niille asetettu, niin elementtien todellinen leveys
on suurempi kuin asetettu - ne jakavat vapaan tilan suhteellisesti
keskenään ja lisäävät sen omaan leveyteensä.
Olkoon esimerkiksi ensimmäisen elementin flex-grow
yhtä suuri kuin 1, ja toisen - 3. Lasketaan,
kuinka suuren osan vapaasta tilasta
kukin elementti saa.
Ensin on saatava kaikkien elementtiemme
flex-grow-yksiköiden kokonaismäärä.
Ensimmäisen elementin arvo on 1, ja
toisen - 3. Tämä tarkoittaa, että yhteensä
se on 4.
Jaetaan nyt 100px vapaata tilaa
4:llä ja saadaan, että 25px kohdistuu
yhteen flex-grow-yksikköön. Saadaan,
että ensimmäiseen elementtiin lisätään yksi yksikkö
flex-grow, eli 25px, ja
toiseen - kolme yksikköä,
eli 75px.
Ensimmäisen elementin leveys on 125px,
ja toisen - 175px:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
</div>
.parent {
display: flex;
width: 300px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 100px;
flex-grow: 1;
}
.elem2 {
width: 100px;
flex-grow: 3;
}
:
Esimerkki
Olkoon nyt vanhemman leveys yhtä suuri kuin 400px,
ensimmäisen elementin leveys 200px, ja toisen elementin leveys - 100px. Saadaan,
että vapaa tila on jälleen
yhtä suuri kuin 100px.
Asetetaan jokaiselle elementille flex-grow,
yhtä suuri kuin 1. Yhteensä saadaan 2,
eli 100px vapaata tilaa
on jaettava 2:lla. Saadaan, että
50px kohdistuu yhteen
ahneusyksikköön.
Koska kaikilla elementeillä on sama arvo
flex-grow, niin kaikkiin elementteihin lisätään
sama arvo, 50px. Tämä tarkoittaa,
että ensimmäinen elementistä tulee 250px, ja
toinen tulee 150px:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
</div>
.parent {
display: flex;
width: 400px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 200px;
flex-grow: 1;
}
.elem2 {
width: 100px;
flex-grow: 1;
}
:
Esimerkki
Olkoon jälleen vanhemman leveys yhtä suuri kuin 400px,
ensimmäisen elementin leveys 200px, ja toisen elementin leveys - 100px.
Asetetaan nyt ensimmäiselle elementille
flex-grow arvoksi 3, ja toiselle
- arvoksi 1. Saadaan, että ahneus
yhteensä on 4. Silloin yksi ahneusyksikkö
on .
100px / 4 = 25px
Ensimmäiseen elementtiin lisätään 75px,
ja siitä tulee 275px, ja toiseen -
25px, siitä tulee 125px:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
</div>
.parent {
display: flex;
width: 400px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 200px;
flex-grow: 3;
}
.elem2 {
width: 100px;
flex-grow: 1;
}
:
Katso myös
-
ominaisuus
flex-direction,
joka asettaa flex-lohkojen akseleiden suunnan -
ominaisuus
justify-content,
joka asettaa tasauksen pääakselilla -
ominaisuus
align-items,
joka asettaa tasauksen poikkidakselilla -
ominaisuus
flex-wrap,
joka asettaa flex-lohkojen monirivisyyden -
ominaisuus
flex-flow,
lyhenne flex-directionille ja flex-wraplle -
ominaisuus
order,
joka asettaa flex-lohkojen järjestyksen -
ominaisuus
align-self,
joka asettaa yhden lohkon tasauksen -
ominaisuus
flex-basis,
joka asettaa tietyn flex-lohkon koon -
ominaisuus
flex-shrink,
joka asettaa flex-lohkojen kutistuvuuden -
ominaisuus
flex,
lyhenne flex-growille, flex-shrinkille ja flex-basisille