Hintergrund
Um einen mit Flex Boxen zu arbeiten, muss man einen Flex-Container definieren, welcher, als Eltern-Element, die Flex Elemente umschließt. Ob sich der Flex Container wie ein inline oder ein block-Element verhält, bestimmt der gegebene Wert.
Hat man einen Flex Container definiert, so bestimmt dieser die flex Eigenschaften der beinhalteten Kind-Elemente.
Das Flexbox Layout ist ein Modul zielt darauf ab, einen effizienteren Weg anzubieten, um den Platz zu verteilen, aufzuteilen und auszurichten, welchen Elemente einnehmen. Selbst wenn deren Größe nicht bekannt ist und/oder dynamisch. Daher auch der Begriff "Flex".
Die Hauptidee hinter dem Flex Layout ist es, einem Container die Fähigkeit zu verleihen, die Höhe/Breite der Elemente seines Inhaltes zu verändern und anzuordnen, um den verfügbaren Platz bestmöglich auszunutzen. Primär um sich bestmöglich an alle Arten von Displays und Auflösungen anzupassen. |
Das Flexbox Layout ist ideal geeignet für die Komponenten einer Anwendung und Layout mit einem kleinen Maßstab. Das Raster Layout (Grid) hingegen ist für größere Maßstäbe gedacht.
display
Definiert einen Flex Container
Code:
.container {
display: flex / oder inline-flex / ;
}
|
CSS-Columns haben keinen Einfluss auf einen Flex-Container
flex-direction
definiert die Hauptachse, an der die Flex-Elemente im Flex-Container angeordnet werden. Flexbox ist ein Layout Konzept, gedacht ist um nur in eine Richtung gerichtet ist. Flex Elemente werden entweder in horizontalen oder vertikalen Spalten ausgerichtet.
Code:
.container {
flex-direction: row | row-reverse | column | column-reverse ;
}
|
row(default): ordnet von links nach rechts an
row-revers: ordnet von rechts nach links an
column: ordnet von oben nach unten an
column-reverse: ordnet die Elemente von unten nach oben an.
flex-wrap
Von Haus aus versuchen alle Flex-Elemente sich in einer Zeile anzuordnen. Ändern kann man dies mit dem flex-wrap
Attribut. Die Richtung spielt auch eine Rolle, in dem sie bestimmt, in welcher Richtung die neue Zeile aufgefüllt wird.
Code:
.container {
flex-wrap: nowrap | wrap | wrap-reverse ;
}
|
nowrap (Standard): Anordnung in einer Zeile von lnks nach rechts
wrap: Anordnung in mehreren Zeilen von links nach rechts
wrap-reverse: Anordnung in mehreren Zeilen von rechts nach links
align-items
Definiert das Standardverhalten wie Kind Elemente entlang der Hauptachse angeordnet werden.
Code:
.container {
align-items: flex-start | flex-end | center | stretch | baseline ;
}
flex-start: Alle Elemente werden am oberen Rand des Eltern Containers angeordnet.
flex-end: Alle Elemente werden am unteren Rand des Eltern Containers angeordnet.
center: Alle Elemente werden mittig im Eltern Container angeordnet.
stretch (Standard): Streckt alle Kind Elemente bis an den oberen und unteren Rand des Eltern Containers.
baseline: Alle Elemente werden entlang der Basislinie ihres Inhaltes ausgerichtet. |
Man kann align-items
als vertikale Version von justify-content
betrachten.
order
Grundsätzlich werden flex-Elemente in der Reihenfolge, wie sie im Quelltext stehen angezeigt.
Jedoch lässt sich, mittels order
, eine eigene Reihenfolge vorgeben, in welcher die Elemente angezeigt werden.
Code:
.item {
order: <integer> <integer> ...;
}
|
align-self
Erlaubt es, die Standardausrichtung oder der Ausrichtung, welche mittels align-item
definiert wurde, für ein einzelnes Kind Element zu überschreiben.
Code:
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch ;
}
Es gelten die gleichen Erklärungen der Attributwerte, wie sie für align-items
gelten. |
float
, clear
und vertical-align
haben keinerlei Auswirkungen auf ein Flex Element.
|
|
Grundlagen und Terminologie
Da Flexbox ein komplettes Modul ist und nicht nur ein einzelnes Attribut, beinhaltet es selbst eine ganze Anzahl an Attributen. Einige davon werden auf den umschliessenden Eltern Container angewendet, andere auf dessen Kind-Elemente.
Während ein normales Layout sowohl auf block als auch auf inline Fließrichtungen aufgebaut ist, basiert das Flexbox Layout auf dem flex-flow-Fluss. |
Legende
Attribute welche auf die Eltern Container angewendet werden, haben ein dunkleres Blau und Kind Elemente sind mit einem helleren Blau als dem, welches für Informationen verwendet wurde. |
flex-flow
Dies ist eine Kurzform für die Attribute flex-direction
und `flex-wrap, die zusammen das Verhalten für Quer und Längsachse eines Flex Containers definieren.
Code:
.container {
flex-flow: <flex-direction> || <flex-wrap> ;
}
|
Standardverhalten ist row nowrap
justify-content
Definiert die Anordnung entlang der hori- zontalen Achse. justify-content
hilft den übrigen freien Raum zu verteilen, wenn alleElemente in der Zeile unflexibel sind, oder wenn sie zwar flexibel sind, aber ihre maximale Größe bereits erreicht haben. Ermöglicht weiter die Anordnung von Elementen, wenn sie die Zeilenbreite überschreiten würden.
Code:
.container {
justify-content: flex-start | flex-end | center |space-between | space-around ;
}
flex-start (Standard): Die Elemente werden zum Anfang hin, nach links, verschoben.
flex-end: Die Elemente werden zum Ende hin, nach rechts, verschoben.
center: Die Elemente werden in der Mitte angeordnet.
space-between: Die Elemente werden gleichfürmig über die Zeile verteilt. Erstes Element ganz links, das Letzte ganz rechts.
space-around: Die Elemente werden gleichmäßig über die Zeile veteilt, haben aber an allen seiten den selben Abstand, sowohl zum Zeilenanfang/ende, als auch zum nächsten Element. |
Bei space-around
muss beachtet werden, da jedes Element immer den selben Abstand zum nächstgen Element hat, erzeugt das eine optisch ungleiche Verteilung. Das liegt daran, dass beim ersten Element links nur ein Abstand ist, aber zwischen den Elementen immer sich zwei Abstände addieren.
align-content
Ordnet die Zeilen der Kind Elemente an, sollte es noch Platz geben in der Horizontalen. Ähnlich wie justify-content
individuelle Elemente an der Hauptachse ausrichtet.
Code:
.container {
align-content: flex-start | flex-end | center | stretch | space-between | space-around ;
}
flex-start: Richtet alle Zeilen nach oben links am Eltern Container aus.
flex-end: Richtet alle Zeilen nach unten links am Eltern Container aus.
center: Richtet alle Elemente mittig im Eltern Container aus.
stretch (Standard): Richtet alle Elemente mittig im Eltern Container aus und verteilt sie gleichmäßig die Höhe der Elemente.
space-between: Richtet alle Zeilen über die volle Höhe des Eltern Containers aus. Die erste und letzte Zeile werden ganz an den Eltern Container angelegt.
space-around: Verteilt die Platz zwischen den Zeilen gleichmäßig. Jedoch ist auch hier das selbe optische "ungleichgewicht" zu beachten, wie es auch bei justify-content
entsteht. |
Hat keine Auswirkungen wenn es nur eine Zeile an Kind Elementen gibt.
flex-grow
Definiert die Fähigkeit eines Elementes seine Größe zu verändern, sollte es nötig sein. flex-grow
akzeptiert einheitenlose Werte als Proportion. Dies definiert wie viel des maximalen Platzes ein Elementes, innerhalb eines Containers, ausnutzen kann.
Haben alle Elemente das Attribut flex-grow
auf 1 gesetzt bekommen, wird der Platz zwischen den Elementen gleichmäßig unter seinen Kind-Elementen aufgeteilt.
Code:
.item {
flex-grow: <Zahl> ;
}
|
Negative Zahlen sind nicht zulässig! Der Standardwert für flex-grow
ist 0.
flex-shrink
Definiert die Fähigkeit eines Kind Elementes zu schrumpfen.
Code:
.element {
flex-shrink: <zahl> ;
}
|
Standardeinstellung für den Zahlenwert ist 1. Negative Zahlen sind nicht erlaubt.
flex-basis
Definiert die Ausgangsgröße eines Elementes bevor der verbliebene Platz verteilt wird. Es kann sowohl ein Prozentwert (z.B. 25%), als auch ein fixer Wert (z.B. 3em|125px) angegeben werden. Aber auch ein Schlüsselwort ist möglich. Der Schlüssel auto
bedeutet, "beziehe dich auf die mir zugewiesene Breite/Höhe". Der Schlüssel content
bedeutet, die Größe ist anhängig vom Inhalt. Leider wird dieser Schlüssel noch nicht sonderlich gut unterstützt, daher ist es schwierig zu sagen, wie das Element sich verhält, ganz zu schweigen von seinen Abarten max-content
, min-content
und fit-content
.
Code:
.element {
flex-basis: <wert> | <schlüsselwort> ;
}
|
Wird der Wert auf 0
gesetzt,
|
Created By
www.pixel-anarchy.de
Metadata
Favourited By
Comments
No comments yet. Add yours below!
Add a Comment
Related Cheat Sheets
More Cheat Sheets by The Exilant