flex-grow CSS property
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Die flex-grow CSS Eigenschaft legt den Flex-Wachstumsfaktor fest, der angibt, wie viel vom positiven freien Raum des Flex-Containers, sofern vorhanden, der Hauptgröße des Flex-Elements zugewiesen werden soll.
Wenn die Hauptgröße des Flex-Containers größer ist als die kombinierte Hauptgröße seiner Flex-Elemente, kann dieser positive freie Raum unter den Flex-Elementen verteilt werden, wobei das Wachstum jedes Elements seinem Wachstumsfaktor-Wert als Anteil an der Gesamtsumme aller Flex-Wachstumsfaktoren der Flex-Elemente entspricht.
Hinweis:
Es wird empfohlen, die flex Kurzschreibweise mit einem Schlüsselwortwert wie auto oder initial zu verwenden, anstatt flex-grow allein festzulegen. Die Schlüsselwortwerte erweitern sich zu verlässlichen Kombinationen von flex-grow, flex-shrink, und flex-basis, die dazu beitragen, die häufig gewünschten Flex-Verhalten zu erreichen.
Probieren Sie es aus
flex-grow: 1;
flex-grow: 2;
flex-grow: 3;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">I grow</div>
<div>Item Two</div>
<div>Item Three</div>
</section>
.default-example {
border: 1px solid #c5c5c5;
width: auto;
max-height: 300px;
display: flex;
}
.default-example > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 10px;
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
}
Syntax
/* <number> values */
flex-grow: 3;
flex-grow: 0.6;
/* Global values */
flex-grow: inherit;
flex-grow: initial;
flex-grow: revert;
flex-grow: revert-layer;
flex-grow: unset;
Werte
Diese Eigenschaft wird als <number> angegeben:
Beschreibung
Diese Eigenschaft gibt an, wie viel des verbleibenden Raums im Flex-Container dem Element zugewiesen werden soll (der Flex-Wachstumsfaktor).
Die Hauptgröße ist entweder die Breite oder die Höhe des Elements, abhängig vom flex-direction Wert.
Der verbleibende Raum oder positive freie Raum ist die Größe des Flex-Containers minus der Größe aller Flex-Elemente zusammen. Wenn alle benachbarten Elemente denselben Flex-Wachstumsfaktor haben, erhalten alle Elemente den gleichen Anteil des verbleibenden Raums. Die gängige Praxis besteht darin, flex-grow: 1 festzulegen, aber das Festlegen des Flex-Wachstumsfaktors für alle Flex-Elemente auf 88, 100, 1.2 oder einen anderen Wert größer als 0 erzielt das gleiche Ergebnis: Der Wert ist ein Verhältnis.
Falls die flex-grow-Werte unterschiedlich sind, wird der positive freie Raum entsprechend dem Verhältnis der verschiedenen Flex-Wachstumsfaktoren verteilt. Die flex-grow-Faktorwerte aller benachbarten Flex-Elemente werden zusammengezählt. Der positive freie Raum des Flex-Containers, sofern vorhanden, wird dann durch diese Gesamtsumme geteilt. Die Hauptgröße jedes Flex-Elements mit einem flex-grow-Wert größer als 0 wächst um diesen Quotienten multipliziert mit seinem eigenen Wachstumsfaktor.
Zum Beispiel: Wenn vier 100px Flex-Elemente in einem 700px Container sind und die Flex-Elemente flex-grow-Faktoren von 0, 1, 2 und 3 haben, beträgt die Gesamthauptgröße der vier Elemente 400px, was bedeutet, dass 300px positiver freier Raum verteilt werden müssen. Die Summe der vier Wachstumsfaktoren (0 + 1 + 2 + 3 = 6) beträgt sechs. Daher ist jeder Wachstumsfaktor gleich 50px ((300px / 6 ). Jedes Flex-Element erhält 50px freien Raum multipliziert mit seinem flex-grow Faktor — also 0, 50px, 100px und 150px jeweils. Die Gesamtgröße der Flex-Elemente wird somit 100px, 150px, 200px und 250px jeweils.
flex-grow wird in der Regel neben den anderen flex Kurzschreibweisen flex-shrink und flex-basis verwendet. Die Verwendung der flex Kurzschreibweise wird empfohlen, um sicherzustellen, dass alle Werte gesetzt sind.
Formale Definition
| Anfangswert | 0 |
|---|---|
| Anwendbar auf | flexible Elemente einschließlich In-Flow-Pseudo-Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | Nummer |
Formale Syntax
flex-grow =
<number [0,∞]>
Beispiele
>Festlegung des Wachstumsfaktors von Flex-Elementen
In diesem Beispiel beträgt die Summe von sechs flex-grow-Faktoren acht, was bedeutet, dass jeder Wachstumsfaktorwert 12,5% des verbleibenden Raums beträgt.
HTML
<h1>This is a <code>flex-grow</code> example</h1>
<p>
A, B, C, and F have <code>flex-grow: 1</code> set. D and E have
<code>flex-grow: 2</code> set.
</p>
<div id="content">
<div class="box1">A</div>
<div class="box2">B</div>
<div class="box3">C</div>
<div class="box4">D</div>
<div class="box5">E</div>
<div class="box6">F</div>
</div>
CSS
#content {
display: flex;
}
div > div {
border: 3px solid rgb(0 0 0 / 20%);
}
.box1,
.box2,
.box3,
.box6 {
flex-grow: 1;
}
.box4,
.box5 {
flex-grow: 2;
border: 3px solid rgb(0 0 0 / 20%);
}
.box1 {
background-color: red;
}
.box2 {
background-color: lightblue;
}
.box3 {
background-color: yellow;
}
.box4 {
background-color: brown;
}
.box5 {
background-color: lightgreen;
}
.box6 {
background-color: brown;
}
Ergebnis
Wenn die sechs Flex-Elemente entlang der Hauptachse des Containers verteilt werden, wird, falls die Summe des Hauptinhalts dieser Flex-Elemente kleiner ist als die Größe der Hauptachse des Containers, der zusätzliche Raum unter den Flex-Elementen verteilt. A, B, C und F erhalten jeweils 12,5% des verbleibenden Raums und D und E erhalten jeweils 25% des zusätzlichen Raums.
Spezifikationen
| Spezifikation |
|---|
| CSS Flexible Box Layout Module Level 1> # flex-grow-property> |
Browser-Kompatibilität
Siehe auch
flexKurzschreibweise- Grundprinzipien von Flexbox
- Kontrolle der Verhältnisse von Flex-Elementen entlang der Hauptachse
- CSS flexibles Box-Layout Modul
flex-growist seltsam. Oder doch nicht? via CSS-Tricks (2017)