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 200px / 5 = 40px. Resultatet bliver, at bredden af det første element forbliver 100px, da det ikke deltager i fordelingen, bredden af det andet vil være 100px + 2 * 40px = 180px, og bredden af det tredje - 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.

Задание 1
html<div class="parent">
  <div class="child elem1">1</div>
  <div class="child elem2">2</div>
  <div class="child elem3">3</div>
</div>
css.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;
}
Задание 2
html<div class="parent">
  <div class="child elem1">1</div>
  <div class="child elem2">2</div>
  <div class="child elem3">3</div>
</div>
css.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;
}
Задание 3
html<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>
css.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;
}