13. Unterrichtsblock

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:

EigenschaftBeschreibung
align-selfGibt die Ausrichtung für ein Flex-Element an (überschreibt die Eigenschaft align-items des Flex-Containers)
flexEine abgekürzte Eigenschaft für die Eigenschaften flex-grow, flex-shrink und flex-basis
flex-basisGibt die Anfangslänge eines Flex-Elements an
flex-growGibt an, wie stark ein Flex-Element im Verhältnis zu den restlichen Flex-Elementen im selben Container wächst
flex-shrinkGibt an, wie stark ein Flex-Element im Verhältnis zu den restlichen Flex-Elementen im selben Container schrumpft
orderGibt 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-growflex-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.

  1. Erstellen Sie ein div-Element mit der Klasse container.
  2. Fügen Sie innerhalb dieses Containers drei div-Elemente mit der Klasse item hinzu.
  3. Wenden Sie CSS an, um den Container zu einem Flex-Container zu machen (display: flex).
  4. 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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die order-Eigenschaft zur CSS jedes Items hinzu.
  2. Setzen Sie die order des ersten Items auf 2, die des zweiten Items auf 3 und die des dritten Items auf 1.
  3. 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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die flex-grow-Eigenschaft zur CSS jedes Items hinzu.
  2. Setzen Sie die flex-grow des ersten Items auf 1, des zweiten Items auf 2 und des dritten Items auf 1.
  3. 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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1 und setzen Sie eine feste Breite (z.B. 200px) für jedes Item.
  2. Fügen Sie die flex-shrink-Eigenschaft zur CSS jedes Items hinzu.
  3. Setzen Sie die flex-shrink des ersten Items auf 1, des zweiten Items auf 2 und des dritten Items auf 1.
  4. Ä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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1 und fügen Sie die flex-basis-Eigenschaft zur CSS jedes Items hinzu.
  2. Setzen Sie die flex-basis des ersten Items auf 100px, des zweiten Items auf 200px und des dritten Items auf 100px.
  3. 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

hallo
hallo
hallo

Auf Mobilgeräten

hallo
hallo
hallo

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.

Hallo
Leute!

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

Page Title

Verkleinere das Browserfenster, um den responsiven Effekt zu sehen.

Webentwicklerkurs

Mit flexibler Gestaltung.

Über uns

Unser Büro:
Bild

Etwas Text über uns lorem ipsum officia deserunt mollit anim..

Mehr Text

Lorem ipsum dolor sit ame.

Bild

Bild

Bild

TITEL ÜBERSCHRIFT

Titel Beschreibung, 07.03.2023
Bild

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
Bild

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.

Fußzeile

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.

  1. Erstellen Sie einen div-Container mit der Klasse container.
  2. Fügen Sie vier div-Elemente mit der Klasse item hinzu.
  3. Verwenden Sie display: flex für den Container und setzen Sie flex-wrap: wrap.
  4. Geben Sie jedem Item eine feste Breite von 150px, eine Hintergrundfarbe und etwas Padding.
  5. Ü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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1.
  2. Setzen Sie für den Container die Eigenschaften justify-content: center und align-items: center.
  3. Stellen Sie sicher, dass der Container eine Mindesthöhe von 100vh hat.
  4. Ü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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1.
  2. Setzen Sie für den Container die Eigenschaften flex-direction: row und flex-wrap: wrap.
  3. Verwenden Sie Media Queries, um die flex-direction bei einer Bildschirmbreite unter 600px auf column zu ändern.
  4. Ü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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1.
  2. Setzen Sie die flex-basis der Items auf 25%.
  3. Verwenden Sie Media Queries, um die flex-basis bei einer Bildschirmbreite unter 800px auf 50% und bei einer Bildschirmbreite unter 500px auf 100% zu ändern.
  4. Ü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.

  1. Verwenden Sie die HTML-Struktur aus Aufgabe 1.
  2. Setzen Sie für den Container die Eigenschaft flex-direction: column und align-items: stretch.
  3. Fügen Sie innerhalb jedes Items Text hinzu, der sich in der Länge unterscheidet.
  4. Stellen Sie sicher, dass der Container eine Mindesthöhe von 100vh hat.
  5. Ü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.