13. Unterrichtsblock
Inhaltsverzeichnis
Flexbox Items
Die direkten untergeordneten Elemente eines Flex-Containers werden automatisch zu flexiblen (Flex-)Elementen.
1
2
3
4
5
6
Das obige Element repräsentiert sechs grüne Flex-Elemente in einem grauen Flex-Container.
<div class="flex-container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
Die flex-item-Eigenschaften sind:
Eigenschaft | Beschreibung |
---|---|
align-self | Gibt die Ausrichtung für ein Flex-Element an (überschreibt die Eigenschaft align-items des Flex-Containers) |
flex | Eine abgekürzte Eigenschaft für die Eigenschaften flex-grow , flex-shrink und flex-basis |
flex-basis | Gibt die Anfangslänge eines Flex-Elements an |
flex-grow | Gibt an, wie stark ein Flex-Element im Verhältnis zu den restlichen Flex-Elementen im selben Container wächst |
flex-shrink | Gibt an, wie stark ein Flex-Element im Verhältnis zu den restlichen Flex-Elementen im selben Container schrumpft |
order | Gibt die Reihenfolge der Flex-Elemente innerhalb desselben Containers an |
Die order Eigenschaft
Die order
-Eigenschaft gibt die Reihenfolge der Flex-Elemente an. Das erste flex
-Element im Code muss nicht als erstes Element im Layout erscheinen.
1
2
3
4
Der order
-Wert muss eine Zahl sein, der Standardwert ist 0. Die order
– Eigenschaft kann die Reihenfolge der Flex-Elemente ändern:
<div class="flex-container">
<div style="order: 3">1</div>
<div style="order: 2">2</div>
<div style="order: 4">3</div>
<div style="order: 1">4</div>
</div>
Die flex-grow-Eigenschaft
Die flex-grow
-Eigenschaft gibt an, wie stark ein Flex-Element im Verhältnis zu den übrigen Flex-Elementen wächst. Der Wert muss eine Zahl sein, der Standardwert ist 0. Lässt das erste Flex-Item sich achtmal weiter ausdehnen als die anderen Flex-Items:
1
2
3
<div class="flex-container">
<div style="flex-grow: 8">1</div>
<div style="flex-grow: 1">2</div>
<div style="flex-grow: 1">3</div>
</div>
Die flex-shrink-Eigenschaft
Die flex-shrink
-Eigenschaft gibt an, wie stark ein Flex-Element im Verhältnis zu den übrigen Flex-Elementen schrumpft.
Der Wert muss eine Zahl sein, der Standardwert ist 1.
1
2
3
4
5
6
7
8
9
10
Das dritte Flex-Item wird nicht so stark schrumpfen wie die anderen Flex-Items:
<div class="flex-container">
<div>1</div>
<div>2</div>
<div style="flex-shrink: 0">3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
</div>
<!-- Damit flex-shrink greift, benötigen die Items zuvor einen width-Wert -->
<style>
.flex-container div {
width: 100px;
margin: 5px;
padding: 20px;
text-align: center;
font-size: 30px;
background-color: lightgreen;
}
</style>
Die Flex-Basis-Eigenschaft
Die flex-basis
-Eigenschaft gibt die Anfangslänge eines Flex-Elements an.
1
2
3
4
Folgendes Beispiel legt die Anfangslänge des dritten Flex-Elements auf 200 Pixel fest:
<div class="flex-container">
<div>1</div>
<div>2</div>
<div style="flex-basis: 200px">3</div>
<div>4</div>
</div>
Die flex-Eigenschaft
Die flex
-Eigenschaft ist eine abgekürzte Eigenschaft für die Eigenschaften flex-grow
, flex-shrink
und flex-basis
.
Dieses Beispiel macht das dritte Flex-Element nicht erweiterbar (0), nicht schrumpfbar (0) und setzt die Anfangslänge auf 200 Pixel:
<div class="flex-container">
<div>1</div>
<div>2</div>
<div style="flex: 0 0 200px">3</div>
<div>4</div>
</div>
Die Eigenschaft align-self
Die align-self
-Eigenschaft gibt die Ausrichtung für das ausgewählte Element innerhalb des flexiblen Containers an.
Die align-self
-Eigenschaft überschreibt die Standardausrichtung, die von der align-items
-Eigenschaft des Containers festgelegt wird.
1
2
3
4
In diesen Beispielen wird ein 200 Pixel hoher Container verwendet, um die align-self
-Eigenschaft besser zu demonstrieren:
Folgendes Beispiel richtet das dritte Flex-Element in der Mitte des Containers aus:
<div class="flex-container">
<div>1</div>
<div>2</div>
<div style="align-self: center">3</div>
<div>4</div>
</div>
Richten Sie das zweite Flex-Element oben im Container und das dritte Flex-Element unten im Container aus:
<div class="flex-container">
<div>1</div>
<div style="align-self: flex-start">2</div>
<div style="align-self: flex-end">3</div>
<div>4</div>
</div>
Aufgabe
Probiere die flex-item-Eigenschaften im Code Editor aus
Aufgabe 1: Grundlegende Flex-Items
Ziel: Erstellen Sie einen einfachen Flex-Container und fügen Sie einige Flex-Items hinzu.
- Erstellen Sie ein
div
-Element mit der Klassecontainer
. - Fügen Sie innerhalb dieses Containers drei
div
-Elemente mit der Klasseitem
hinzu. - Wenden Sie CSS an, um den Container zu einem Flex-Container zu machen (
display: flex
). - Geben Sie jedem Item eine unterschiedliche Hintergrundfarbe und etwas Padding.
Aufgabe 2: Reihenfolge der Flex-Items ändern
Ziel: Ändern Sie die Reihenfolge der Flex-Items mithilfe der order
-Eigenschaft.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die
order
-Eigenschaft zur CSS jedes Items hinzu. - Setzen Sie die
order
des ersten Items auf 2, die des zweiten Items auf 3 und die des dritten Items auf 1. - Beobachten Sie, wie sich die Reihenfolge der Items im Layout ändert.
Aufgabe 3: Flex-Grow
Ziel: Lassen Sie ein Flex-Item mehr Platz einnehmen, indem Sie die flex-grow
-Eigenschaft verwenden.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die
flex-grow
-Eigenschaft zur CSS jedes Items hinzu. - Setzen Sie die
flex-grow
des ersten Items auf 1, des zweiten Items auf 2 und des dritten Items auf 1. - Beachten Sie, wie das zweite Item mehr Platz einnimmt als die anderen.
Aufgabe 4: Flex-Shrink
Ziel: Kontrollieren Sie, wie Flex-Items schrumpfen, mithilfe der flex-shrink
-Eigenschaft.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1 und setzen Sie eine feste Breite (z.B.
200px
) für jedes Item. - Fügen Sie die
flex-shrink
-Eigenschaft zur CSS jedes Items hinzu. - Setzen Sie die
flex-shrink
des ersten Items auf 1, des zweiten Items auf 2 und des dritten Items auf 1. - Ändern Sie die Größe des Browserfensters und beobachten Sie, wie die Items unterschiedlich schrumpfen.
Aufgabe 5: Flex-Basis
Ziel: Setzen Sie eine Grundgröße für Flex-Items mithilfe der flex-basis
-Eigenschaft.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die
flex-basis
-Eigenschaft zur CSS jedes Items hinzu. - Setzen Sie die
flex-basis
des ersten Items auf100px
, des zweiten Items auf200px
und des dritten Items auf100px
. - Beachten Sie, wie die initiale Größe der Items unterschiedlich ist.
Responsive Gestaltung
Wie im Unterrichtsblock-10 veranschaulicht, können mit Medienabfragen unterschiedliche Layouts für unterschiedliche Bildschirmgrößen und Geräte erstellt werden.
Auf Desktopgeräten
Auf Mobilgeräten
Die „flex-direction: row;“ lagert die Flex-Items auf der Hauptachse von rechts nach links.
Die „flex-direction: column;“ stapelt die Flex-Items auf der Kreuzachse von oben nach unten.
Wenn man beispielsweise ein zweispaltiges Layout für die meisten Bildschirmgrößen und ein einspaltiges Layout für kleine Bildschirmgrößen (z. B. Telefone und Tablets) erstellen möchte, dann kann man an einem bestimmten Haltepunkt (z. B. 800 Pixel) flex-direction
: row
in column
umwandeln:
.flex-container {
display: flex;
flex-direction: row;
}
/* Responsive Gestaltung - macht aus mehreren Spalten eine */
@media (max-width: 800px) {
.flex-container {
flex-direction: column;
}
}
Eine andere Möglichkeit besteht darin, den Prozentsatz der flex
-Eigenschaft bei den Flex-Elementen zu ändern, um unterschiedliche Layouts für unterschiedliche Bildschirmgrößen zu erstellen. Hier ist zu beachten, dass flex-wrap: wrap;
in den Flex-Container eingefügt werden muss, damit dieses Beispiel funktioniert:
.flex-container {
display: flex;
flex-wrap: wrap;
}
.flex-item-left {
flex: 50%;
}
.flex-item-right {
flex: 50%;
}
/* Responsive layout - makes a one column layout instead of a two-column layout */
@media (max-width: 800px) {
.flex-item-right, .flex-item-left {
flex: 100%;
}
}
Responsive Website mit Flexbox
Verkleinere das Browserfenster, um den responsiven Effekt zu sehen.
Webentwicklerkurs
Mit flexibler Gestaltung.
Über uns
Unser Büro:
Etwas Text über uns lorem ipsum officia deserunt mollit anim..
Mehr Text
Lorem ipsum dolor sit ame.
TITEL ÜBERSCHRIFT
Titel Beschreibung, 07.03.2023
Etwas Text…
Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.
TITEL ÜBERSCHRIFT
Titel Beschreibung, 02.02.2023
Etwas Text…
Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.
Aufgaben
Aufgabe 1: Bauen Sie o.g. Webseite mit der Flexbox nach.
Achten Sie dabei auch auf die Media-Queries.
Aufgabe 2: Flex-Container erstellen und anpassen
Ziel: Erstellen Sie einen flexiblen Container, der sich an verschiedene Bildschirmgrößen anpasst.
- Erstellen Sie einen
div
-Container mit der Klassecontainer
. - Fügen Sie vier
div
-Elemente mit der Klasseitem
hinzu. - Verwenden Sie
display: flex
für den Container und setzen Sieflex-wrap: wrap
. - Geben Sie jedem Item eine feste Breite von
150px
, eine Hintergrundfarbe und etwas Padding. - Überprüfen Sie, wie sich die Items bei verschiedenen Bildschirmgrößen anordnen.
Aufgabe 3: Flex-Items zentrieren
Ziel: Zentrieren Sie Flex-Items sowohl horizontal als auch vertikal.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1.
- Setzen Sie für den Container die Eigenschaften
justify-content: center
undalign-items: center
. - Stellen Sie sicher, dass der Container eine Mindesthöhe von
100vh
hat. - Überprüfen Sie, wie die Items bei verschiedenen Bildschirmgrößen zentriert bleiben.
Aufgabe 4: Responsive Spaltenanordnung
Ziel: Ändern Sie die Anordnung der Flex-Items von einer Zeile zu einer Spalte bei kleineren Bildschirmgrößen.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1.
- Setzen Sie für den Container die Eigenschaften
flex-direction: row
undflex-wrap: wrap
. - Verwenden Sie Media Queries, um die
flex-direction
bei einer Bildschirmbreite unter600px
aufcolumn
zu ändern. - Überprüfen Sie, wie sich die Anordnung der Items bei verschiedenen Bildschirmgrößen ändert.
Aufgabe 5: Responsive Flex-Basis
Ziel: Ändern Sie die Basisgröße der Flex-Items bei verschiedenen Bildschirmgrößen.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1.
- Setzen Sie die
flex-basis
der Items auf25%
. - Verwenden Sie Media Queries, um die
flex-basis
bei einer Bildschirmbreite unter800px
auf50%
und bei einer Bildschirmbreite unter500px
auf100%
zu ändern. - Überprüfen Sie, wie sich die Größe der Items bei verschiedenen Bildschirmgrößen anpasst.
Aufgabe 6: Flex-Container mit variabler Höhe
Ziel: Erstellen Sie einen Flex-Container, dessen Höhe sich dynamisch an den Inhalt anpasst.
- Verwenden Sie die HTML-Struktur aus Aufgabe 1.
- Setzen Sie für den Container die Eigenschaft
flex-direction: column
undalign-items: stretch
. - Fügen Sie innerhalb jedes Items Text hinzu, der sich in der Länge unterscheidet.
- Stellen Sie sicher, dass der Container eine Mindesthöhe von
100vh
hat. - Überprüfen Sie, wie sich die Höhe der Items bei verschiedenen Bildschirmgrößen und Inhaltsmengen anpasst.
Baue anschließend an der Firefox-Startseite inkl. Nachrichtenbeiträgen weiter.