⊗mkSpFxGr 86 of 128 menu

Das Greediness-Verhalten von Flex-Elementen in CSS

Nehmen wir an, wir haben zwei Flex-Blöcke, die in einer Reihe angeordnet sind. Diese Blöcke haben eine Breite von 100px, und ihrem Elternelement - 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; }

:

Wie Sie sehen, ist die Gesamtbreite unserer Elemente kleiner als die Breite des Elternelements, daher bleibt rechts freier Raum.

Wenn gewünscht, kann dieser freie Raum proportional zwischen unseren Elementen aufgeteilt werden. Dies geschieht mit der Eigenschaft flex-grow, die den Flex-Elementen zugewiesen wird. Der Wert dieser Eigenschaft ist eine dimensionslose Zahl.

Lassen Sie uns in der Praxis sehen, wie diese Eigenschaft funktioniert.

Beispiel

Derzeit haben wir zwei Flex-Blöcke mit einer Breite von 100px. Ihre Gesamtbreite beträgt 200px, und die Breite des Elternelements beträgt 300px. Somit bleibt ein freier Raum von 100px.

Wenn den Elementen kein flex-grow zugewiesen ist, sehen wir einfach diesen freien Raum. Wenn es jedoch zugewiesen ist, dann ist die tatsächliche Breite der Elemente größer als die angegebene - sie teilen den freien Raum proportional unter sich auf und addieren ihn zu ihrer eigenen Breite.

Nehmen wir zum Beispiel an, das erste Element hat einen flex-grow Wert von 1, und das zweite - 3. Lassen Sie uns berechnen, welchen Teil des freien Raums jedes Element erhält.

Zuerst müssen wir die Gesamtsumme der flex-grow-Einheiten aller unserer Elemente ermitteln. Beim ersten Element beträgt er 1, und beim zweiten - 3. Das bedeutet, dass die Summe 4 beträgt.

Teilen wir nun den 100px freien Raum durch 4 und erhalten, dass 25px auf eine flex-grow-Einheit entfällt. Somit wird zum ersten Element eine Einheit flex-grow addiert, also 25px, und zum zweiten - drei Einheiten, also 75px.

Die Breite des ersten Elements beträgt dann 125px, und die des zweiten - 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; }

:

Beispiel

Nehmen wir nun an, die Breite des Elternelements beträgt 400px, die Breite des ersten Elements 200px, und die Breite des zweiten Elements - 100px. Somit beträgt der freie Raum wieder 100px.

Weisen wir jedem Element einen flex-grow Wert von 1 zu. Die Summe beträgt 2, das heißt, der 100px freie Raum muss durch 2 geteilt werden. Somit entfallen 50px auf eine Einheit von Greediness (flex-grow).

Da alle Elemente den gleichen Wert für flex-grow haben, wird zu allen Elementen der gleiche Wert von 50px addiert. Das bedeutet, dass das erste Element 250px wird, und das zweite 150px wird:

<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; }

:

Beispiel

Nehmen wir wieder an, die Breite des Elternelements beträgt 400px, die Breite des ersten Elements 200px, und die Breite des zweiten Elements - 100px.

Setzen wir nun für das erste Element flex-grow auf den Wert 3, und für das zweite - auf den Wert 1. Die Summe von Greediness (flex-grow) beträgt dann 4. Dann entspricht eine Einheit Greediness 100px / 4 = 25px.

Zum ersten Element werden 75px addiert, und es wird zu 275px, und zum zweiten - 25px, es wird zu 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; }

:

Praktische Aufgaben

In allen folgenden Aufgaben wird Ihnen ein Code mit Flex-Elementen präsentiert, die Breite und flex-grow haben. Berechnen Sie anhand des präsentierten Codes, welche Abmessungen jedes der Elemente haben wird. Führen Sie dann den Code aus und überprüfen Sie Ihre Berechnungen, indem Sie die tatsächlichen Breiten der Elemente messen.

<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; }
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen