⊗mkSpFxGr 86 of 128 menu

Flex-elementtien ahneus CSS:ssä

Oletetaan, että meillä on kaksi flex-lohkoa, joita on rivitetty peräkkäin. Näille lohkoille on asetettu leveys 100px, ja niiden vanhemmalle - 300px:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { width: 100px; height: 100px; border: 1px solid green; }

:

Kuten näet, elementtiemme kokonaisleveys on pienempi kuin vanhemman leveys, joten oikealle jää tyhjää tilaa.

Halutessa tämä tyhjä tila voidaan jakaa suhteellisesti elementtiemme kesken. Tämä tehdään käyttämällä ominaisuutta flex-grow, joka asetetaan flex-elementeille. Tämän ominaisuuden arvona on dimensioton numero.

Katsotaan käytännössä, miten tämä ominaisuus toimii.

Esimerkki

Nyt meillä on kaksi flex-lohkoa, joiden leveys on 100px. Niiden kokonaisleveys on 200px, ja vanhemman leveys - 300px. Saadaan, että jäljelle jää vapaa tila 100px.

Jos elementeille ei ole asetettu flex-grow, niin näemme vain tämän vapaan tilan. Jos se on asetettu, niin elementtien todellinen leveys tulee olemaan 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. Lasketaanpa, minkä osan vapaasta tilasta kukin elementti saa.

Aluksi 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 tulee olemaan 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 yhtä suuri kuin 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; }

:

Käytännön tehtävät

Kaikissa alla olevissa tehtävissä sinulle esitetään koodi, jossa on flex-elementtejä, joilla on leveys ja flex-grow. Esitetyn koodin perusteella laske, mitkä mitat kullakin elementeistä on. Suorita sitten koodi ja tarkista laskelmat mittaamalla elementtien todelliset leveydet.

<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: 500px; 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; } .elem3 { width: 100px; flex-grow: 1; }
<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: 700px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 200px; flex-grow: 3; }
<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: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; } .elem3 { width: 100px; flex-grow: 1; }
<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> <div class="child elem3">3</div> <div class="child elem4">4</div> </div> .parent { display: flex; width: 1000px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 100px; flex-grow: 4; } .elem4 { width: 100px; flex-grow: 3; }
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää