CSS3 Flexible Box (Flex Box)
Flexbox ist ein neuer Layoutmodus in CSS3.
CSS3 Flexible Box (Flexible Box oder Flexbox) ist ein Layoutmodus, der sicherstellt, dass sich Elemente angemessen verhalten, wenn die Seite sich an verschiedene Bildschirmgrößen und Gerätetypen anpassen muss.
Der Zweck der Einführung des Flexbox-Layoutmodells besteht darin, eine effizientere Möglichkeit zu bieten, leeren Raum zwischen untergeordneten Elementen innerhalb eines Containers anzuordnen, auszurichten und zu verteilen.
Browser-Unterstützung
Die Zahlen in der Tabelle geben die Versionsnummer des ersten Browsers an, der die Eigenschaft unterstützt.
Das unmittelbar auf die Zahl folgende -webkit- oder -moz- ist das Präfix für den angegebenen Browser.
| Eigenschaft | |||||
|---|---|---|---|---|---|
| Grundlegende Unterstützung (einzeilige Flexbox) |
29.0 21.0 -webkit- |
11.0 | 22.0 18.0 -moz- |
6.1 -webkit- | 12.1 -webkit- |
| Mehrzeilige Flexbox | 29.0 21.0 -webkit- |
11.0 | 28.0 | 6.1 -webkit- | 17.0 15.0 -webkit- 12.1 |
CSS3-Flexbox-Inhalt
Flexbox besteht aus einem Flex-Container und Flex-Elementen.
Ein Flex-Container wird als Flex-Container definiert, indem die display-Eigenschaft auf flex oder inline-flex gesetzt wird.
Der Flex-Container enthält ein oder mehrere Flex-Elemente.
Hinweis:Alles außerhalb des Flex-Containers und innerhalb von Flex-Elementen wird normal gerendert. Flexbox definiert nur, wie Flex-Elemente innerhalb des Flex-Containers angeordnet werden.
Flex-Elemente werden normalerweise in einer Zeile innerhalb der Flexbox angezeigt. Standardmäßig hat jeder Container nur eine Zeile.
Die folgenden Elemente zeigen Flex-Elemente, die in einer Zeile von links nach rechts angezeigt werden:
Beispiel
Selbst ausprobieren »
Natürlich können wir die Anordnung ändern.
Wenn wirdirectionDie Eigenschaft istrtl(von rechts nach links) setzen, ändert sich auch die Anordnung der Flex-Elemente, und das Seitenlayout ändert sich entsprechend:
Beispiel
Selbst ausprobieren »
flex-direction
flex-directionDie Eigenschaft legt die Position von Flex-Elementen innerhalb des übergeordneten Containers fest.
Syntax
flex-direction: row | row-reverse | column | column-reverse
flex-directionDie Werte sind:
- row: Horizontal von links nach rechts angeordnet (linksbündig), die Standardanordnung.
- row-reverse: Umgekehrte horizontale Anordnung (rechtsbündig, von hinten nach vorne, wobei das letzte Element zuerst platziert wird).
- column: vertikale Anordnung.
- column-reverse: Umgekehrte vertikale Anordnung, von hinten nach vorne, wobei das letzte Element oben platziert wird.
Das folgende Beispiel zeigtrow-reverseVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtcolumnVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtcolumn-reverseVerwendung:
Beispiel
Selbst ausprobieren »
justify-content-Eigenschaft
Die Eigenschaft justify-content wird auf den Flex-Container angewendet, um Flex-Elemente entlang der Hauptachse des Flex-Containers auszurichten.
Die Syntax für justify-content lautet wie folgt:
justify-content: flex-start | flex-end | center | space-between | space-around
Erklärung der einzelnen Werte:
- flex-start:
Flex-Elemente werden dicht zum Anfang der Zeile hin gepackt. Dies ist der Standardwert. Die main-start-Außenabstandskante des ersten Flex-Elements wird an die main-start-Kante der Zeile gesetzt, und nachfolgende Flex-Elemente werden in Reihenfolge bündig platziert.
- flex-end:
Flex-Elemente werden dicht zum Ende der Zeile hin gepackt. Die main-end-Außenabstandskante des ersten Flex-Elements wird an die main-end-Kante der Zeile gesetzt, und nachfolgende Flex-Elemente werden in Reihenfolge bündig platziert.
- center:
Flex-Elemente werden dicht zur Mitte hin gepackt. (Wenn der verbleibende freie Raum negativ ist, laufen die Flex-Elemente gleichmäßig in beide Richtungen über.)
- space-between:
Flex-Elemente werden gleichmäßig über die Linie verteilt. Wenn der verbleibende Raum negativ ist oder nur ein Flex-Element vorhanden ist, entspricht dieser Wert flex-start. Andernfalls wird der Außenabstand des ersten Flex-Elements an der main-start-Kante der Linie ausgerichtet, und der Außenabstand des letzten Flex-Elements wird an der main-end-Kante der Linie ausgerichtet; danach werden die übrigen Flex-Elemente mit gleichmäßigem Abstand zwischen benachbarten Elementen entlang der Linie verteilt.
- space-around:
Flex-Elemente werden gleichmäßig entlang der Linie verteilt, wobei auf beiden Seiten die Hälfte des Zwischenraums frei bleibt. Wenn der verbleibende Raum negativ ist oder nur ein Flex-Element vorhanden ist, entspricht dieser Wert center. Andernfalls werden die Flex-Elemente mit gleichmäßigem Abstand zwischen ihnen entlang der Linie verteilt (zum Beispiel 20px), während zwischen dem ersten und letzten Element und dem Flex-Container der halbe Abstand (1/2*20px=10px) frei bleibt.
Effektvorschau:

Das folgende Beispiel zeigtflex-endVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtcenterVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtspace-betweenVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtspace-aroundVerwendung:
Beispiel
Selbst ausprobieren »
align-items-Eigenschaft
align-itemsLegt die Ausrichtung von Flexbox-Elementen in Richtung der Querachse (vertikale Achse) fest oder ruft sie ab.
Syntax
align-items: flex-start | flex-end | center | baseline | stretch
Erklärung der einzelnen Werte:
- flex-start: Die Grenze der Startposition des Flexbox-Elements auf der Querachse (vertikale Achse) liegt bündig an der Startkante der Querachse der Linie an.
- flex-end: Die Grenze der Startposition des Flexbox-Elements auf der Querachse (vertikale Achse) liegt bündig an der Endkante der Querachse der Linie an.
- center: Das Flexbox-Element wird auf der Querachse (vertikale Achse) der Linie zentriert. (Wenn die Größe der Linie kleiner als die Größe des Flexbox-Elements ist, läuft es in beide Richtungen gleichmäßig über.)
- baseline: Wenn die Inline-Achse und die Querachse der Flexbox-Elemente identisch sind, ist dieser Wert gleichbedeutend mit 'flex-start'. In anderen Fällen nimmt dieser Wert an der Baseline-Ausrichtung teil.
- stretch: Wenn der Wert der Eigenschaft, die die Querachsen-Größe angibt, 'auto' ist, wird die Margin-Box-Größe des Elements so nah wie möglich an die Größe der Linie angepasst, während weiterhin die Beschränkungen der Eigenschaften 'min/max-width/height' beachtet werden.
Das folgende Beispiel zeigtstretch(默认值)Verwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtflex-startVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtflex-endVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtcenterVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtbaselineVerwendung:
Beispiel
Selbst ausprobieren »
flex-wrap-Eigenschaft
flex-wrapDie Eigenschaft wird verwendet, um das Umbruchverhalten der untergeordneten Elemente des Flex-Containers anzugeben.
Syntax
flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;
Erklärung der einzelnen Werte:
- nowrap- Standard. Der Flex-Container ist einzeilig. In diesem Fall können Flex-Elemente den Container überlaufen.
- wrap- Der Flex-Container ist mehrzeilig. In diesem Fall werden die überlaufenden Teile von Flex-Elementen in neue Zeilen gesetzt, und Zeilenumbrüche treten innerhalb der Elemente auf.
- wrap-reverse- Umgekehrte Umbruchanordnung.
Das folgende Beispiel zeigtnowrapVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtwrapVerwendung:
Beispiel
Selbst ausprobieren »
Das folgende Beispiel zeigtwrap-reverseVerwendung:
Beispiel
Selbst ausprobieren »
align-content-Eigenschaft
align-contentDie Eigenschaft wird verwendet zum Ändern
flex-wrapdes Verhaltens der Eigenschaft. Ähnlich wiealign-items, aber es legt nicht die Ausrichtung von Flex-Elementen fest; vielmehr legt es die Ausrichtung jeder Zeile fest.
Syntax
align-content: flex-start | flex-end | center | space-between | space-around | stretch
Erklärung der einzelnen Werte:
stretch- Standard. Jede Zeile wird gestreckt, um den verbleibenden Platz einzunehmen.flex-start- Zeilen werden zur Startposition des Flex-Containers hin gestapelt.flex-end- Zeilen werden zur Endposition des Flex-Containers hin gestapelt.center- Zeilen werden zur Mittelposition des Flex-Containers hin gestapelt.space-between- Zeilen werden gleichmäßig im Flex-Container verteilt.space-around- Zeilen werden gleichmäßig im Flex-Container verteilt, wobei an beiden Enden die halbe Größe des Abstands zwischen den Kindelementen beibehalten wird.
Das folgende Beispiel zeigtcenterVerwendung:
Beispiel
Selbst ausprobieren »
Eigenschaften von Flex-Kindelementen
Sortierung
Syntax
order:
Erklärung der einzelnen Werte:
- <integer>: Ein ganzzahliger Wert wird verwendet, um die Reihenfolge festzulegen, wobei kleinere Werte zuerst platziert werden. Negative Werte sind zulässig.
orderDie Eigenschaft legt die Attribute von Flex-Elementen innerhalb des Flex-Containers fest:
Beispiel
Selbst ausprobieren »
align
Wird der Wert "margin" auf "auto" gesetzt, wird automatisch der verbleibende Platz im Flex-Container eingenommen. Daher können Flex-Elemente durch das Setzen des vertikalen margin-Werts auf "auto" in beiden Achsenrichtungen des Flex-Containers vollständig zentriert werden.
Das folgende Beispiel legt für das erste Flex-Element fest:margin-right: auto;. Dadurch wird der verbleibende Platz auf der rechten Seite des Elements platziert:
Beispiel
Selbst ausprobieren »
Perfekte Zentrierung
Das folgende Beispiel löst perfekt das Zentrierungsproblem, auf das wir normalerweise stoßen.
Mit Flexbox wird das Zentrieren sehr einfach; Sie müssen nurmargin: auto;Es kann Flex-Elemente in beiden Achsenrichtungen vollständig zentrieren:
Beispiel
Selbst ausprobieren »
align-self
align-selfDie Eigenschaft wird verwendet, um die Ausrichtung des Flex-Elements selbst in Richtung der Querachse (vertikale Achse) festzulegen.
Syntax
align-self: auto | flex-start | flex-end | center | baseline | stretch
Erklärung der einzelnen Werte:
- auto: Wenn der Wert von 'align-self' 'auto' ist, ist sein berechneter Wert der Wert von 'align-items' des übergeordneten Elements. Wenn es kein übergeordnetes Element hat, ist der berechnete Wert 'stretch'.
- flex-start: Die Grenze der Startposition des Flexbox-Elements auf der Querachse (vertikale Achse) liegt bündig an der Startkante der Querachse der Linie an.
- flex-end: Die Grenze der Startposition des Flexbox-Elements auf der Querachse (vertikale Achse) liegt bündig an der Endkante der Querachse der Linie an.
- center: Das Flexbox-Element wird auf der Querachse (vertikale Achse) der Linie zentriert. (Wenn die Größe der Linie kleiner als die Größe des Flexbox-Elements ist, läuft es in beide Richtungen gleichmäßig über.)
- baseline: Wenn die Inline-Achse und die Querachse der Flexbox-Elemente identisch sind, ist dieser Wert gleichbedeutend mit 'flex-start'. In anderen Fällen nimmt dieser Wert an der Baseline-Ausrichtung teil.
- stretch: Wenn der Wert der Eigenschaft, die die Querachsen-Größe angibt, 'auto' ist, wird die Margin-Box-Größe des Elements so nah wie möglich an die Größe der Linie angepasst, während weiterhin die Beschränkungen der Eigenschaften 'min/max-width/height' beachtet werden.
Das folgende Beispiel zeigt die Auswirkungen verschiedener auf Flex-Elemente angewendeter align-self-Werte:
Beispiel
Selbst ausprobieren »
flex
flexDie Eigenschaft wird verwendet, um anzugeben, wie Flex-Elemente den Platz zuweisen.
Syntax
flex: auto | initial | none | inherit | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]
Erklärung der einzelnen Werte:
- auto: berechneter Wert ist 1 1 auto
- initial: berechneter Wert ist 0 1 auto
- none: berechneter Wert ist 0 0 auto
- inherit: erbt vom Elternelement
- [ flex-grow ]: Definiert das Vergrößerungsverhältnis eines Flexbox-Elements.
- [ flex-shrink ]: Definiert das Schrumpfungsverhältnis eines Flexbox-Elements.
- [ flex-basis ]: Definiert den Standard-Basiswert eines Flexbox-Elements.
Im folgenden Beispiel belegt das erste Flex-Element 2/4 des Platzes und die beiden anderen belegen jeweils 1/4 des Platzes:
Beispiel
Selbst ausprobieren »
Weitere Beispiele
Mit Flexbox responsive Seiten erstellen
CSS3-Flexbox-Eigenschaften
Die folgende Tabelle listet die in Flexbox häufig verwendeten Eigenschaften auf:
| Eigenschaft | Beschreibung |
|---|---|
| display | Gibt den Box-Typ des HTML-Elements an. |
| flex-direction | Gibt die Anordnung der Kindelemente innerhalb des Flex-Containers an. |
| justify-content | Legt die Ausrichtung von Flexbox-Elementen in Richtung der Hauptachse (horizontale Achse) fest. |
| align-items | Legt die Ausrichtung von Flexbox-Elementen in Richtung der Querachse (vertikale Achse) fest. |
| flex-wrap | Legt fest, ob die Kindelemente des Flex-Containers umbrechen, wenn sie den übergeordneten Container überschreiten. |
| align-content | Ändert das Verhalten der flex-wrap-Eigenschaft, ähnlich wie align-items, legt aber anstelle der Ausrichtung der Kindelemente die Zeilenausrichtung fest. |
| flex-flow | Kurzschreibweise für flex-direction und flex-wrap. |
| order | Legt die Anordnungsreihenfolge der Kindelemente des Flex-Containers fest. |
| align-self | Wird auf Flex-Elemente angewendet. Überschreibt die align-items-Eigenschaft des Containers. |
| flex | Legt fest, wie die Kindelemente des Flex-Containers den Platz aufteilen. |