Flex elements nulgrådighed i CSS
Hvis flex-grow er nul for et element,
så vil dette element ikke deltage
i fordelingen af ledig plads.
Som standard er grådigheden netop
nul, og derfor deler elementer uden tildelt
flex-grow ikke den ledige plads
imellem sig.
Lad os som eksempel lave en beregning.
Antag, at vi har tre flex-elementer,
hver med en bredde på 100px. Lad det første
element ikke have flex-grow (eller at det
er 0), det andet element har flex-grow,
som er 2, og det tredje - 3.
Antag, at forælderens bredde er 500px.
Så vil den ledige plads være
200px, og pr. flex-grow enhed
vil der være . Resultatet bliver, at bredden
af det første element forbliver 200px / 5 = 40px100px,
da det ikke deltager i fordelingen,
bredden af det andet vil være , og bredden af det tredje - 100px + 2 * 40px
= 180px.
100px
+ 3 * 40px = 220px
Praktiske opgaver
I alle opgaver nedenfor vil du blive præsenteret for
noget kode med flex-elementer, der har
bredde og flex-grow. Ud fra den præsenterede
kode skal du beregne, hvilke størrelser hvert
af elementerne vil have. Kør derefter koden
og kontroller dine beregninger ved at måle de faktiske
bredder af elementerne.
<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: 0;
}
.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: 900px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 300px;
flex-grow: 0;
}
.elem2 {
width: 200px;
flex-grow: 3;
}
.elem3 {
width: 100px;
flex-grow: 2;
}
<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: 700px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 200px;
flex-grow: 0;
}
.elem2 {
width: 200px;
flex-grow: 0;
}
.elem3 {
width: 100px;
flex-grow: 1;
}
.elem4 {
width: 100px;
flex-grow: 1;
}