12. Unterrichtsblock
Inhaltsverzeichnis
Flexbox
Vor dem Flexbox-Layoutmodul gab es vier Layoutmodi:
block
für Abschnitte auf einer Webseiteinline
, für Texttable
, für zweidimensionale Tabellendatenposition
, für die explizite Position eines Elements
Das Flexible-Box-Layout-Modul erleichtert das Entwerfen einer flexiblen, responsiven Layoutstruktur ohne Verwendung von Float oder Positionierung.
Flexbox-Elemente
Um mit der Verwendung des Flexbox-Modells zu beginnen, müssen wir zunächst einen Flex-Container definieren:
.flex-container {
display: flex;
background-color: pink;
}
.flex-container > div {
background-color: #f1f1f1;
margin: 10px;
padding: 20px;
font-size: 30px;
}
<div class="flex-container">
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
<div>E</div>
</div>
Ein Flexbox-Layout benötigt ein Eltern-Element mit der display Eigenschaft und dem Wert flex.
Direkte Kind-Elemente des flexiblen Eltern-Elements werden dadurch automatisch auch flexibel
Das obige Element repräsentiert einen Flex-Container (der rötliche Bereich) mit fünf Flex-Elementen.
Browser-Unterstützung
Aufgabe
Probiere display: flex; im Code Editor aus
Aufgaben
Erfülle alle Aufgaben der Reihe nach: https://flexboxfroggy.com/
Aufgabe 1: Einfaches Kartenlayout
Ziel: Erstelle ein responsives Layout für Produktkarten.
- Anweisungen:
- Erstelle einen Flex-Container, der mehrere Karten enthält.
- Jede Karte sollte ein Bild, eine Überschrift, eine kurze Beschreibung und einen Button enthalten.
- Die Karten sollten nebeneinander angezeigt werden, wenn genug Platz vorhanden ist, und untereinander, wenn der Bildschirm zu schmal wird.
Aufgabe 2: Navigation Menü
Ziel: Erstelle ein horizontales Navigationsmenü mit Flexbox.
- Anweisungen:
- Erstelle eine Navigationsleiste, die mehrere Links enthält.
- Verwende Flexbox, um die Links gleichmäßig im verfügbaren Raum zu verteilen.
- Stelle sicher, dass die Links zentriert sind und bei Hover einen stilistischen Effekt zeigen.
Aufgabe 3: Fußzeilenlayout
Ziel: Gestalte eine responsive Fußzeile mit sozialen Medien Icons, Kontaktinformationen und einem Newsletter-Anmeldeformular.
- Anweisungen:
- Erstelle einen Flex-Container für die Fußzeile.
- Verteile die Inhalte (soziale Medien Icons, Kontaktinformationen, Formular) gleichmäßig über die Fußzeile.
- Sorge dafür, dass die Inhalte bei kleineren Bildschirmen untereinander angeordnet werden.
Aufgabe 4: Galerie-Ansicht
Ziel: Entwickle eine Bildergalerie mit Flexbox.
- Anweisungen:
- Erstelle einen Flex-Container, der mehrere Bilder enthält.
- Die Bilder sollten in Reihen angeordnet sein und sich automatisch an die Breite des Bildschirms anpassen.
- Sorge dafür, dass zwischen den Bildern immer ein kleiner Abstand bleibt.
Aufgabe 5: Dashboard-Layout
Ziel: Erstelle ein einfaches Dashboard für eine Anwendung mit Flexbox.
- Anweisungen:
- Das Dashboard sollte Bereiche für eine Seitenleiste, einen Hauptinhalt und eine obere Leiste enthalten.
- Verwende Flexbox, um die Layoutstruktur zu definieren: die Seitenleiste sollte links angeordnet sein, der Hauptinhalt in der Mitte und die obere Leiste oben.
- Stelle sicher, dass das Layout responsiv ist und sich an unterschiedliche Bildschirmgrößen anpasst.
Aufgabe 6: Bildergalerie
Baue eine Bild-Gallerie mit 15 Bildern und ordne diese mit der Flexbox an.
- Die Bilder sollen bei kleineren Bildschirmen in die nächste Zeile hüpfen
- Bei einer Bildschirmgröße von unter 500px sollen alle Bilder untereinander dargestellt werden
Übergeordnetes Element (Container)
Dies ist ein Flex- Container (der grüne Bereich) mit drei Flex- Elementen:
1
2
3
Der Flex-Container wird flexibel, indem die display
-Eigenschaft auf flex
gesetzt wird:
.flex-container {
display: flex;
}
Wenn nur die Eigenschaft display:flex;
verwendet wird, kommen die Standardwerte für align-items
, justify-content
und flex-direction
zum tragen.
- Der Standardwert für
flex-direction
istrow
– von links nach rechts - Der Standardwert für
justify-content
istflex-start
: Die Items stehen am Anfang der Hauptachse, was normalerweise einer Positionierung links entspricht. - Der Standardwert für
align-items
iststretch
: Alle Items sind daher standardmäßig so hoch wie der Flex-Container.
Die Eigenschaften des CSS-Flexbox-Containers
Die folgende Tabelle listet alle CSS-Flexbox-Container-Eigenschaften auf:
Eigenschaft | Beschreibung |
---|---|
align-content | Ändert das Verhalten der Flex-Wrap-Eigenschaft. Es ist ähnlich wie align-items, aber anstatt Flex-Items auszurichten, richtet es Flex-Linien aus |
align-items | Richtet die flexiblen Elemente vertikal (auf der Kreuz-Achse) aus, wenn die Elemente nicht den gesamten verfügbaren Platz auf der Haupt-Achse verwenden |
display | Gibt den Typ der Box an, der für ein HTML-Element verwendet wird |
flex-direction | Gibt die Richtung der flexiblen Elemente in einem Flex-Container an |
flex-flow | Eine abgekürzte Eigenschaft für flex-direction und flex-wrap |
flex-wrap | Gibt an, ob die Flex-Elemente umbrechen bzw. nicht umbrechen sollen, wenn auf einer Flex-Linie nicht genügend Platz vorhanden ist |
justify-content | Richtet die flexiblen Elemente horizontal aus, wenn die Elemente nicht den gesamten verfügbaren Platz auf der Hauptachse verwenden |
Die Flex-Direction-Eigenschaft
Die flex-direction
-Eigenschaft definiert, in welche Richtung der Container die Flex-Items stapeln wird.
1
2
3
Der column
Wert stapelt die Flex-Elemente vertikal (von oben nach unten):
.flex-container {
display: flex;
flex-direction: column;
}
Der column-reverse
Wert stapelt die Flex-Elemente vertikal (aber von unten nach oben):
.flex-container {
display: flex;
flex-direction: column-reverse;
}
Der row
-Wert stapelt die Flex-Items horizontal (von links nach rechts):
.flex-container {
display: flex;
flex-direction: row;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der row-reverse
Wert stapelt die Flex-Elemente horizontal (aber von rechts nach links):
.flex-container {
display: flex;
flex-direction: row-reverse;
}
Aufgabe
Aufgabe 1: Horizontales vs. Vertikales Layout
Ziel: Wechsle zwischen horizontalem und vertikalem Layout.
- Anweisungen:
- Erstelle einen Flex-Container mit mindestens vier Kind-Elementen.
- Setze zunächst die
flex-direction
aufrow
. - Ändere die
flex-direction
aufcolumn
, und beobachte die Änderung im Layout. - Füge eine Schaltfläche hinzu, die beim Klicken zwischen diesen beiden Layouts wechselt.
Aufgabe 2: Reihenfolge umkehren
Ziel: Kehre die Reihenfolge der Flex-Items um.
- Anweisungen:
- Erstelle einen Flex-Container mit mehreren Kind-Elementen.
- Verwende
flex-direction: row-reverse
odercolumn-reverse
, um die Anordnung der Elemente umzukehren. - Vergleiche, wie sich die Darstellung der Elemente zwischen
row
,row-reverse
,column
undcolumn-reverse
unterscheidet.
Aufgabe 3: Responsive Kartenanordnung
Ziel: Erstelle ein responsives Kartenlayout, das seine Orientierung basierend auf der Bildschirmbreite ändert.
- Anweisungen:
- Erstelle mehrere „Karten“ (Divs mit Inhalt wie Bildern und Text).
- Setze die
flex-direction
standardmäßig aufrow
. - Verwende Media-Queries, um die
flex-direction
aufcolumn
zu ändern, wenn die Bildschirmbreite unter einen bestimmten Wert fällt.
Aufgabe 4: Navigation mit Flexbox
Ziel: Gestalte eine Navigation, die ihre Orientierung ändert.
- Anweisungen:
- Erstelle eine Navigationsleiste mit mehreren Links.
- Setze die
flex-direction
aufrow
. - Füge eine Schaltfläche hinzu, die bei Klick die
flex-direction
aufcolumn
ändert, um die Links vertikal anzuordnen.
Aufgabe 5: Info-Panel Layout
Ziel: Erstelle ein Info-Panel, das Inhalte in unterschiedlichen Orientierungen zeigt.
- Anweisungen:
- Erstelle einen Container, der zwei Hauptbereiche enthält: einen Titelbereich und einen Inhaltbereich.
- Verwende
flex-direction: row
für eine horizontale Anordnung der Bereiche. - Füge eine Option hinzu, um die
flex-direction
aufcolumn
zu ändern, sodass der Titel über dem Inhalt erscheint.
Die Flex-Wrap-Eigenschaft
Die flex-wrap
Eigenschaft gibt an, ob die Flex-Elemente umbrechen sollen oder nicht.
Die folgenden Beispiele haben 12 Flex-Elemente, um die flex-wrap
-Eigenschaft besser zu demonstrieren.
1
2
3
4
5
6
7
8
9
10
11
12
Der wrap
Wert gibt an, dass die Flex-Elemente bei Bedarf umbrochen werden:
.flex-container {
display: flex;
flex-wrap: wrap;
}
Aufgabe
Baue den Code im Code Editor mit 15 einzelnen Elementen nach.
Der nowrap
-Wert gibt an, dass die Flex-Elemente nicht umbrochen werden (dies ist die Standardeinstellung):
.flex-container {
display: flex;
flex-wrap: nowrap;
}
Aufgabe
Baue den Code im Code Editor mit 15 einzelnen Elementen nach.
Der wrap-reverse
Wert gibt an, dass die flexiblen Elemente bei Bedarf in umgekehrter Reihenfolge umwickelt werden:
.flex-container {
display: flex;
flex-wrap: wrap-reverse;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Die Flex-Flow-Eigenschaft
Die flex-flow
-Eigenschaft ist eine abgekürzte Eigenschaft zum Festlegen der Eigenschaften flex-direction
und flex-wrap
.
.flex-container {
display: flex;
flex-flow: row wrap;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Die justify-content-Eigenschaft
Die justify-content
Eigenschaft wird verwendet, um die Flex-Elemente auszurichten:
1
2
3
Der center
-Wert richtet die Flex-Elemente in der Mitte des Containers aus:
.flex-container {
display: flex;
justify-content: center;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-start
-Wert richtet die Flex-Elemente am Anfang des Containers aus (dies ist die Standardeinstellung):
.flex-container {
display: flex;
justify-content: flex-start;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-end
-Wert richtet die Flex-Elemente am Ende des Containers aus:
.flex-container {
display: flex;
justify-content: flex-end;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der space-around
-Wert zeigt die Flex-Elemente mit Leerzeichen vor, zwischen und nach den Zeilen an:
.flex-container {
display: flex;
justify-content: space-around;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der space-between
-Wert zeigt die Flex-Elemente mit Leerzeichen zwischen den Zeilen an:
.flex-container {
display: flex;
justify-content: space-between;
}
Die Eigenschaft align-items
Die align-items
-Eigenschaft wird verwendet, um die Flex-Elemente auszurichten. In diesen Beispielen verwenden wir einen 200 Pixel hohen Container, um die align-items
-Eigenschaft besser zu demonstrieren.
1
2
3
Der center
-Wert richtet die Flex-Items in der Mitte des Containers aus:
.flex-container {
display: flex;
height: 200px;
align-items: center;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-start
-Wert richtet die Flex-Elemente oben im Container aus:
.flex-container {
display: flex;
height: 200px;
align-items: flex-start;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-end
-Wert richtet die Flex-Elemente am unteren Rand des Containers aus:
.flex-container {
display: flex;
height: 200px;
align-items: flex-end;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der stretch
-Wert dehnt die Flex-Elemente aus, um den Container zu füllen (dies ist die Standardeinstellung):
.flex-container {
display: flex;
height: 200px;
align-items: stretch;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der baseline
-Wert richtet die Flex-Elemente wie ihre Grundlinien aus:
.flex-container {
display: flex;
height: 200px;
align-items: baseline;
}
Hinweis: Das Beispiel verwendet eine andere Schriftgröße, um zu demonstrieren, dass die Elemente an der Textgrundlinie ausgerichtet werden:
1
2
3
Die align-content-Eigenschaft
Die align-content
Eigenschaft wird verwendet, um die Flexlinien auszurichten.
1
2
3
4
5
6
7
8
9
10
11
12
In diesen Beispielen verwenden wir einen 600 Pixel hohen Container, dessen flex-wrap
Eigenschaft auf gesetzt ist , um die Eigenschaft wrap
besser zu demonstrieren .align-content
Der space-between
-Wert zeigt die Flexlinien mit gleichem Abstand zwischen ihnen an:
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: space-between;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der space-around
-Wert zeigt die Flex-Linien mit Leerzeichen davor, dazwischen und danach an:
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: space-around;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der stretch
-Wert streckt die Flexlinien, um den verbleibenden Platz einzunehmen (dies ist die Standardeinstellung):
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: stretch;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Die center
-Wertanzeigen zeigen die Flexlinien in der Mitte des Containers an:
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: center;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-start
-Wert zeigt die Flexlinien am Anfang des Containers an:
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: flex-start;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Der flex-end
-Wert zeigt die Flexlinien am Ende des Containers an:
.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: flex-end;
}
Aufgabe
Baue den Code im Code Editor mit 4 einzelnen Elementen nach.
Perfekte Zentrierung
Im folgenden Beispiel lösen wir ein sehr häufiges Stilproblem: perfekte Zentrierung.
LÖSUNG: Setzen Sie sowohl die Eigenschaften justify-content
als auch align-items
auf center
, und das Flex-Element wird perfekt zentriert:
.flex-container {
display: flex;
height: 300px;
justify-content: center;
align-items: center;
}