Die flex
Eigenschaft ist eine Untereigenschaft des Moduls Flexible Box Layout.
Dies ist die Abkürzung für flex-grow
, flex-shrink
und flex-basis
. Der zweite und dritte Parameter ( flex-shrink
und flex-basis
) sind optional.
Syntax
flex: none | ( ? || ) .flex-item ( /* this */ flex: 1 100px; /* is the same as */ flex-grow: 1; flex-basis: 100px; /* and it leaves the flex-shrink property alone, which would be */ flex-shrink: inherit; /* defaults to 1 */ )
Hier ist die Übersicht darüber, was die Werte abhängig von der Anzahl der von Ihnen angegebenen Werte abbilden:
flex: none /* value 'none' case */ flex: /* One value syntax, variation 1 */ flex: /* One value syntax, variation 2 */ flex: /* Two values syntax, variation 1 */ flex: /* Two values syntax, variation 2 */ flex: /* Three values syntax */ flex: inherit
Gemeinsame Werte für flex
flex: 0 auto;
Dies ist dasselbe wie flex: initial;
und die Abkürzung für den Standardwert : flex: 0 1 auto
. Die Größe des Elements basiert auf seinen width
/ height
Eigenschaften (oder seinem Inhalt, falls nicht festgelegt).
Es macht das Flex-Element unflexibel, wenn noch Platz frei ist, lässt es jedoch auf ein Minimum schrumpfen, wenn nicht genügend Platz vorhanden ist. Die Ausrichtungsfähigkeiten oder auto
-ränder können verwendet werden, um flexible Elemente entlang der Hauptachse auszurichten.
flex: auto;
Dies entspricht flex: 1 1 auto
. Beachten Sie, dass dies nicht der Standardwert ist. Die Größe des Elements basiert auf seinen width
/ height
Eigenschaften, macht es jedoch vollständig flexibel, sodass sie zusätzlichen Platz entlang der Hauptachse absorbieren.
Wenn alle Elemente entweder sind flex: auto
, flex: initial
oder flex: none
jeder verbleibende Raum nach den Einzelteilen bemessen wurde , wird mit gleichmäßig auf die Positionen verteilt werden flex: auto
.
flex: keine;
Dies entspricht flex: 0 0 auto
. Es dimensioniert den Artikel entsprechend seinen width
/ height
Eigenschaften, macht ihn jedoch vollständig unflexibel.
Dies ist ähnlich, flex: initial
außer dass es auch in einer Überlaufsituation nicht schrumpfen darf.
biegen:
Entspricht flex: 1 0px
. Es macht das Flex-Element flexibel und setzt die Flex-Basis auf Null, was zu einem Element führt, das den angegebenen Anteil des verbleibenden Platzes erhält.
Wenn alle Elemente im Flex-Container dieses Muster verwenden, sind ihre Größen proportional zum angegebenen Flex-Faktor.
Demo
Die folgende Demo zeigt dank der flex
Eigenschaft ein sehr einfaches Layout mit Flexbox :
Hier ist das offenbarte Stück Code:
.header, .footer ( flex: 1 100%; ) .sidebar ( flex: 1; ) .main ( flex: 2; )
Erstens haben wir Flex-Elemente autorisiert, die in mehreren Zeilen mit angezeigt werden sollen flex-flow: row wrap
.
Dann weisen wir sowohl die Kopf- als auch die Fußzeile an, 100% der aktuellen Ansichtsfensterbreite zu übernehmen, egal was passiert.
Der Hauptinhalt und beide Seitenleisten teilen sich dieselbe Zeile und teilen sich den verbleibenden Platz wie folgt: 66% (2 / (1 + 2)) für den Hauptinhalt, 33% (1 / (1 + 2)) für die Seitenleiste .
Browser-Unterstützung
- ( h ) bedeutet , die kürzlich von der Syntax - Spezifikation (z
display: flex;
) - (hybrid) bedeutet eine ungerade nicht offizielle Syntax ab 2011 (z
display: flexbox;
) - (alt) bedeutet die alte Syntax von 2009 (zB
display: box;
)
Chrom | Safari | Feuerfuchs | Oper | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (modern) 20- (alt) | 3.1+ (alt) | 2-21 (alt) 22+ (neu) | 12.1+ (modern) | 10+ (Hybrid) | 2.1+ (alt) | 3,2+ (alt) |
Blackberry Browser 10+ unterstützt die neue Syntax.
Weitere Informationen zum Mischen von Syntaxen, um die beste Browserunterstützung zu erhalten, finden Sie in diesem Artikel (CSS-Tricks) oder in diesem Artikel (DevOpera).