Auf dieser Seite sind diverse Beispiele zur CSS3-Flexbox zu finden, es wird die Auswirkung der einzelnen Elemente dargestellt.
Entstanden sind diese Beispiele als Ergänzung zu einem Flexbox-Artikel im Fachmagazin www.screengui.de. Dort wird das Verhalten der einzelnen CSS3-Flexbox-Eigenschaften im Detail auf 6 Seiten beschrieben.
<div class="flexbox">
<div class="box-01">
<h2>Box 1</h2>
</div>
<div class="box-02">
<h2>Box 2</h2>
</div>
<div class="box-03">
<h2>Box 3</h2>
</div>
</div>
.flexbox {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
border: 2px solid #333;
}
Alle Beispiele basieren auf diesem HTML-Code.
Ebenfalls werden alle Beispiele über die CSS-Regel zur Flexbox gemacht.
initial (flex-direction: row)
Ohne weitere CSS-Regeln und bei wenig Inhalt fügen sich die Flexbox-Elemente von links nach rechts in die Flexbox ein.
initial (flex-direction: row)
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Bei viel Inhalt verteilen sich die drei Boxen gleichmäßig auf den verfügbaren Platz.
flex-direction: row-reverse
#beispiel-03 {
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
}
Über row-reverse
wird die Fließrichtung der Flexbox-Elemente umgekehrt.
flex-direction: column
#beispiel-04 {
-ms-flex-direction: column;
flex-direction: column;
}
Über flex-direction: column
wird eine Reihendarstellung definiert.
flex-direction: column-reverse
#beispiel-05 {
-ms-flex-direction: column-reverse;
flex-direction: column-reverse;
}
column-reverse
dreht die Reihenfolge der Flexbox-Elemente in der Reihendarstellung um.
order: 2; order: 3; order: 1;
#beispiel-06 .box-01 {
-ms-flex-order: 2;
order: 2;
}
#beispiel-06 .box-02 {
-ms-flex-order: 3;
order: 3;
}
#beispiel-06 .box-03 {
-ms-flex-order: 1;
order: 1;
}
Über order
kann die Reihenfolge der Flexbox-Elemente konkret gesteuert werden.
order: 2; order: 3; order: 1;
#beispiel-07 .box-01 {
-ms-flex-order: 2;
order: 2;
}
#beispiel-07 .box-02 {
-ms-flex-order: 3;
order: 3;
}
#beispiel-07 .box-03 {
-ms-flex-order: 1;
order: 1;
}
Die Box 4 hat keine order
-Deklaration - der Initialwert ist 0, die Box wird vor den anderen Boxen angezeigt, deren Position über order
gesteuert ist.
initial (align-items: stretch)
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Per Default dehnen sich alle Flexbox-Elemente auf die gleiche Höhe aus, welche durch die Höhe der Box mit dem meisten Inhalt bestimmt wird.
align-items: flex-start
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-09 {
-ms-flex-align: start;
align-items: flex-start;
}
#beispiel-09 div {
-ms-flex: 1 1 auto;
}
align-items: flex-start
steuert, dass die Flexbox-Elemente am oberen Rand angeordnet werden.
align-items: center
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-10 {
-ms-flex-align: center;
align-items: center;
}
#beispiel-10 div {
-ms-flex: 1 1 auto;
}
align-items: center
führt dazu, dass sich die Flexbox-Element mittig zueinander anordnen.
align-items: flex-end
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-11 {
-ms-flex-align: end;
align-items: flex-end;
}
#beispiel-11 div {
-ms-flex: 1 1 auto;
}
align-items: flex-end
lässt die Elemente am unteren Rand der Flexbox erscheinen.
align-items: baseline
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-12 {
-ms-flex-align: baseline;
align-items: baseline;
}
#beispiel-12 div {
-ms-flex: 1 1 auto;
}
#beispiel-12 h2 {
font-size: 2.5em;
}
align-items: baseline
richtet die Elemente so aus, dass die Grundlinie der jeweils ersten Zeilen auf einer Höhe sind.
initial (justify-content: flex-start)
Gleiches Beispiel wie Nr. 1. Per Default fließen die Flexbox-Elemente von links nach rechts ohne Lücken dazwischen.
justify-content: flex-end
#beispiel-14 {
-ms-flex-pack: end;
justify-content: flex-end;
}
justify-content: flex-end
führt dazu, dass die Flexbox-Elemente von links nach rechts ohne Lücken fließen.
justify-content: center
#beispiel-15 {
-ms-flex-pack: center;
justify-content: center;
}
justify-content: center
führt dazu, dass die Flexbox-Elemente mittig angeordnet werden. Wird nur sichtbar, wenn nicht die volle Breite der Flexbox ausgefüllt ist.
justify-content: space-between
#beispiel-16 {
-ms-flex-pack: justify;
justify-content: space-between;
}
justify-content: space-between
steuert, dass die Elemente gleichmäßig auf die volle Breite verteilt werden, der Raum zwischen den Elementen bleibt leer, die äußeren Elemente werden direkt am Rand der Flexbox angezeigt.
justify-content: space-around
#beispiel-17 {
justify-content: space-around;
}
justify-content: space-around
verteilt die Flexbox-Elemente ebenfalls auf die verfügbare Breite, allerdings werden die Elemente auch zum Rand hin mit Abstand dargestellt, welcher der Hälfte der Abstände der einzelnen Elemente zueinander entspricht.
initial (justify-content: flex-start)
#beispiel-18,
#beispiel-19,
#beispiel-20,
#beispiel-21,
#beispiel-22 {
-ms-flex-direction: column;
flex-direction: column;
min-height: 300px;
}
In der Reihendarstellung werden die Flexbox-Elemente in der Flexbox oben angeordnet. Dazu muss die Flexbox jedoch eine höhere Höhe haben, als die Summe der Höhe der Flexbox-Elemente.
justify-content: flex-end
#beispiel-19 {
justify-content: flex-end;
}
#beispiel-19 div {
-ms-flex-align: end;
}
justify-content: flex-end
steuert, dass die Flexbox-Elemente am unteren Rand der Flexbox angezeigt werden.
justify-content: center
#beispiel-20 {
justify-content: center;
}
justify-content: center
bewirkt die mittige Darstellung der Flexbox-Elemente.
justify-content: space-around
#beispiel-21 {
justify-content: space-around;
}
justify-content: space-around
verteilt die Elemente gleichmäßig in der Flexbox, hier ebenfalls mit Abstand zum Rand, der auch hier die Hälfte des Abstands zwischen den Flexbox-Elementen entspricht.
justify-content: space-between
#beispiel-22 {
justify-content: space-between;
}
justify-content: space-between
verteilt die Flexbox-Elemente ebenfalls gleichmäßig in der Flexbox, jedoch ohne Abstand zum Rand.
flex-grow
#beispiel-23 .box-01,
#beispiel-23 .box-02,
#beispiel-23 .box-03 {
-ms-flex: 1 1 auto;
flex-grow: 1;
}
flex-grow
steuert die bevorzugte Breite für die Verteilung innerhalb der Flexbox. Als Parameter wird ein positiver Integer erwartet, Standardwert ist 1, ohne spezielle Deklaration verteilen sich die Elemente gleichmäßig (bei gleicher Menge des Inhalts, bei unterschiedlicher Menge des Inhalts beeinflusst die Menge des Inhalts die Breite der einzelnen Flexbox-Elemente).
flex-grow
#beispiel-24 .box-01 {
-ms-flex: 1 1 auto;
flex-grow: 1;
}
#beispiel-24 .box-02 {
-ms-flex: 4 1 auto;
flex-grow: 4;
}
#beispiel-24 .box-03 {
-ms-flex: 1 1 auto;
flex-grow: 1;
}
Für die zweite Box in diesem Beispiel wird über flex-grow: 4;
der Ausdehnungsfaktor auf 4 gesetzt. Sie dehnt sich im Verhältnis mehr aus als die anderen Boxen.
Die Schreibweise -ms-flex: 4 1 auto;
ist für den Internet 10 notwendig, die nicht der W3C-Schreibweise entspricht.
flex-basis
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-25 .box-01 {
-ms-flex: 0 0 150px;
flex-basis: 150px;
}
#beispiel-25 .box-02 {
-ms-flex: 0 0 300px;
flex-basis: 300px;
}
#beispiel-25 .box-03 {
-ms-flex: 0 0 150px;
flex-basis: 150px;
}
Über flex-basis
wird die Basisbreite der Flexbox-Elemente definiert. Ist die Flexbox breiter als die Summe der einzelnen Elemente, bleibt die überschüssige Fläche frei.
flex-basis
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-26 .box-01 {
-ms-flex: 1 1 100px;
flex-basis: 100px;
flex-grow: 1;
}
#beispiel-26 .box-02 {
-ms-flex: 1 1 300px;
flex-basis: 300px;
flex-grow: 1;
}
#beispiel-26 .box-03 {
-ms-flex: 1 1 100px;
flex-basis: 100px;
flex-grow: 1;
}
flex-basis
in der Kombination mit flex-grow
bewirkt, dass die ganze Breite der Flexbox ausgefüllt wird. Dabei bestimmt die über flex-basis
definierte Breite die verhältnismäßige Ausdehnung der einzelnen Elemente.
flex-basis
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-27 .box-01 {
-ms-flex: 1 1 100px;
flex-basis: 100px;
flex-grow: 1;
}
#beispiel-27 .box-02 {
-ms-flex: 4 1 100px;
flex-basis: 100px;
flex-grow: 4;
}
#beispiel-27 .box-03 {
-ms-flex: 1 1 100px;
flex-basis: 100px;
flex-grow: 1;
}
flex-grow: 4
bewirkt in diesem Beispiel, dass die 2. Box verhältnismäßig breiter angezeigt wird.
flex-shrink
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
#beispiel-28 .box-01 {
-ms-flex: 1 4 auto;
flex-shrink: 4;
}
#beispiel-28 .box-02 {
-ms-flex: 1 5 auto;
flex-shrink: 5;
}
#beispiel-28 .box-03 {
-ms-flex: 1 6 auto;
flex-shrink: 6;
}
flex-shrink
steuert im Gegensatz zu flex-grow
den Stauchungsfaktor und erwartet auch einen positiven Integer. Umso höher der Wert, umso stärker das verhältnismäßige schrumpfen des Flexbox-Elements.
initial (flex-wrap: nowrap)
#beispiel-29 div,
#beispiel-30 div,
#beispiel-31 div,
#beispiel-32 div {
min-width: 200px;
}
Initial überfließen Flexbox-Elemente die Flexbox, wenn die einzelnen Elemente in der Flexbox die gesamte Breite der Flexbox überschreiten.
flex-wrap: wrap
#beispiel-30 {
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
flex-wrap: wrap
bewirkt, dass die einzelnen Flexbox-Elemente umbrechen, wenn sie nicht mehr in die verfügbare Breite passen.
flex-wrap: wrap-reverse
#beispiel-31 {
-ms-flex-wrap: wrap-reverse;
flex-wrap: wrap-reverse;
}
flex-wrap: wrap-reverse
bewirkt ebenfalls, dass die Flexbox-Elemente umbrechen, allerdings nach oben.
#beispiel-32 {
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
#beispiel-32 div {
-ms-flex: 1 1 auto;
flex-grow: 1;
}
flex-wrap
in der Kombination mit flex-grow
bewirkt, dass die Flexbox-Elemente umbrechen, außerdem die volle Breite ausgefüllt wird.
Kontakt gerne über info@css-wiki.com / www.css-wiki.com.
© 2014 - Stephan Heller [daik.de] - http://daik.de