CSS – Layout und Flexbox

1. Was bedeutet Layout in CSS?

Das Layout beschreibt die Anordnung und Positionierung der Elemente auf einer Webseite.

Mit CSS können Elemente nebeneinander, untereinander, zentriert oder an bestimmten Positionen dargestellt werden.

Merken: Wichtige Layouttechniken sind display, position, Flexbox und Grid.

2. Die Eigenschaft display

Die CSS-Eigenschaft display bestimmt, wie ein Element im Layout dargestellt wird.

Wert Bedeutung
block Beginnt normalerweise in einer neuen Zeile
inline Wird innerhalb einer Textzeile dargestellt
inline-block Inline-Anordnung mit einstellbarer Breite und Höhe
none Element wird nicht im Layout dargestellt
flex Aktiviert ein Flexbox-Layout
grid Aktiviert ein Grid-Layout

3. display: block

Blockelemente beginnen normalerweise in einer neuen Zeile und nehmen die verfügbare Breite ein.

CSS-Code

.box {
    display: block;
}

Ergebnis

Blockelement 1
Blockelement 2

4. display: inline

Inline-Elemente werden innerhalb einer Zeile dargestellt. width und height wirken bei normalen Inline-Elementen nicht wie bei Blockelementen.

CSS-Code

span {
    display: inline;
}

Ergebnis

Element 1 Element 2 Element 3

5. display: inline-block

Inline-block-Elemente können nebeneinander stehen. Gleichzeitig lassen sich Breite und Höhe festlegen.

CSS-Code

.box {
    display: inline-block;
    width: 120px;
    padding: 12px;
}

Ergebnis

Box 1 Box 2 Box 3

6. display: none

Mit display: none wird ein Element vollständig aus dem Layout entfernt.

.versteckt {
    display: none;
}
Unterschied: display: none entfernt das Element aus dem Layout. visibility: hidden macht das Element unsichtbar, lässt seinen Platz aber bestehen.

7. Die Eigenschaft position

Mit position kann bestimmt werden, wie ein Element positioniert wird.

Wert Beschreibung
static Normale Positionierung im Dokumentfluss
relative Verschiebung relativ zur ursprünglichen Position
absolute Positionierung relativ zum maßgeblichen Bezugselement
fixed Normalerweise relativ zum Viewport positioniert
sticky Verbindet normales Layout mit einer haftenden Position beim Scrollen

8. position: relative

Ein relativ positioniertes Element kann mit top, right, bottom und left verschoben werden. Sein ursprünglicher Platz bleibt dabei erhalten.

CSS-Code

.box {
    position: relative;
    left: 20px;
    top: 10px;
}

Ergebnis

Relative Position

9. position: absolute

Ein absolut positioniertes Element wird aus dem normalen Dokumentfluss herausgenommen.

Häufig wird ein Elternelement mit position: relative als Bezugselement verwendet.

CSS-Code

.container {
    position: relative;
}

.box {
    position: absolute;
    top: 45px;
    right: 15px;
}

Ergebnis

Bezugselement
Absolute Position

10. position: fixed

Mit position: fixed kann ein Element an einer festen Bildschirmposition bleiben, auch wenn die Seite gescrollt wird.

CSS-Code

.button {
    position: fixed;
    bottom: 20px;
    right: 20px;
}

Ein typisches Beispiel ist eine Schaltfläche zum Zurückkehren an den Seitenanfang.

Hinweis: Dieses Beispiel wird nur als Code gezeigt, damit keine feste Schaltfläche die Navigation der Lernseite überdeckt.

11. position: sticky

Ein sticky-Element bewegt sich zunächst im normalen Layout. Beim Scrollen kann es an einer festgelegten Position haften bleiben.

CSS-Code

.titel {
    position: sticky;
    top: 0;
}

Interaktives Beispiel

Sticky-Überschrift

Scrollen Sie in diesem Bereich.

Absatz 1 – Beispieltext

Absatz 2 – Beispieltext

Absatz 3 – Beispieltext

Absatz 4 – Beispieltext

Absatz 5 – Beispieltext

Absatz 6 – Beispieltext

Absatz 7 – Beispieltext


12. z-index – Ebenenreihenfolge

Mit z-index kann die Stapelreihenfolge überlappender Elemente innerhalb ihres Stacking-Kontexts beeinflusst werden.

CSS-Code

.box1 {
    position: absolute;
    z-index: 1;
}

.box2 {
    position: absolute;
    z-index: 2;
}

Ergebnis

z-index: 1
z-index: 2

Im Beispiel liegt die rote Box vor der blauen Box.


13. Was ist Flexbox?

Flexbox ist ein CSS-Layoutsystem, mit dem Elemente flexibel in einer Zeile oder Spalte angeordnet werden können.

Flexbox eignet sich besonders für Navigationen, Karten, Buttons und kleinere Layoutbereiche.

CSS-Code

.container {
    display: flex;
    gap: 12px;
}

Ergebnis

1
2
3

14. flex-direction

Mit flex-direction wird die Richtung der Flex-Elemente bestimmt.

Wert Bedeutung
row Elemente in einer Zeile
row-reverse Umgekehrte Reihenfolge in einer Zeile
column Elemente in einer Spalte
column-reverse Umgekehrte Reihenfolge in einer Spalte

CSS-Code

.container {
    display: flex;
    flex-direction: column;
}

Ergebnis

Element 1
Element 2
Element 3

15. justify-content

Mit justify-content werden Flex-Elemente entlang der Hauptachse ausgerichtet.

Wert Funktion
flex-start Am Anfang der Hauptachse
center Zentriert
flex-end Am Ende der Hauptachse
space-between Freier Platz zwischen den Elementen
space-around Freier Platz um die Elemente herum
space-evenly Gleichmäßige Abstände

Beispiel: center

.container {
    display: flex;
    justify-content: center;
}
1
2
3

Beispiel: space-between

.container {
    display: flex;
    justify-content: space-between;
}
1
2
3

16. align-items

align-items richtet Flex-Elemente entlang der Querachse aus.

CSS-Code

.container {
    display: flex;
    align-items: center;
    min-height: 140px;
}

Ergebnis

1
2
3
Merken: Bei flex-direction: row ist die Hauptachse horizontal. Bei flex-direction: column ist sie vertikal.

17. flex-wrap

Mit flex-wrap können Flex-Elemente bei Platzmangel in die nächste Zeile wechseln.

CSS-Code

.container {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

Ergebnis

HTML
CSS
PHP
SQL
JavaScript

18. flex-grow und flex

Mit flex-grow wird festgelegt, wie Flex-Elemente zusätzlichen verfügbaren Platz aufteilen.

CSS-Code

.box1 {
    flex-grow: 1;
}

.box2 {
    flex-grow: 2;
}

Wenn beide Elemente die gleichen Ausgangsbedingungen haben, erhält das zweite Element einen größeren Anteil des freien Platzes.

Ergebnis

flex: 1
flex: 2

19. gap – Abstand zwischen Elementen

Die Eigenschaft gap legt Abstände zwischen Flex- oder Grid-Elementen fest.

CSS-Code

.container {
    display: flex;
    gap: 20px;
}

Im Unterschied zu margin wird der Abstand direkt zwischen den Flex-Elementen definiert.


20. Praktisches Beispiel: Navigation

Flexbox wird häufig für horizontale Navigationsleisten verwendet.

HTML-Code

<nav class="navigation">
    <a href="#">Startseite</a>
    <a href="#">HTML</a>
    <a href="#">CSS</a>
    <a href="#">PHP</a>
</nav>

CSS-Code

.navigation {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: #1959a6;
    padding: 12px;
}

.navigation a {
    color: white;
    text-decoration: none;
    padding: 9px 14px;
}

Ergebnis


21. Praktisches Beispiel: Sidebar und Inhalt

Mit Flexbox können eine Seitenleiste und ein Inhaltsbereich nebeneinander angeordnet werden.

CSS-Code

.layout {
    display: flex;
    gap: 15px;
}

.sidebar {
    flex: 0 0 180px;
}

.content {
    flex: 1;
    min-width: 0;
}

Ergebnis

Hauptinhalt

Hier befindet sich der Hauptinhalt der Webseite.


22. Praktische Übungen

Aufgabe 1

Welche Eigenschaft aktiviert Flexbox?

Lösung anzeigen
display: flex;

Aufgabe 2

Ordnen Sie drei Elemente untereinander mit Flexbox an.

Lösung anzeigen
.container {
    display: flex;
    flex-direction: column;
}

Aufgabe 3

Zentrieren Sie Flex-Elemente entlang der Hauptachse.

Lösung anzeigen
.container {
    display: flex;
    justify-content: center;
}

Aufgabe 4

Legen Sie einen Abstand von 20px zwischen Flex-Elementen fest.

Lösung anzeigen
.container {
    display: flex;
    gap: 20px;
}

Aufgabe 5

Positionieren Sie ein Element absolut 10px vom oberen und 20px vom rechten Rand seines positionierten Bezugselements entfernt.

Lösung anzeigen
.parent {
    position: relative;
}

.child {
    position: absolute;
    top: 10px;
    right: 20px;
}

Aufgabe 6

Welche Eigenschaft erlaubt den Zeilenumbruch innerhalb eines Flex-Containers?

Lösung anzeigen
flex-wrap: wrap;

Aufgabe 7

Wie wird ein Element vollständig aus dem Layout entfernt?

Lösung anzeigen
display: none;

Aufgabe 8

Welche Eigenschaft beeinflusst die Stapelreihenfolge überlappender Elemente?

Lösung anzeigen
z-index: 2;

23. Zusammenfassung

Mit display wird bestimmt, wie HTML-Elemente dargestellt werden. Mit position können Elemente relativ, absolut, fest oder sticky positioniert werden.

Flexbox ermöglicht flexible Layouts mit Zeilen und Spalten. Besonders wichtig sind flex-direction, justify-content, align-items, flex-wrap und gap.

Flexbox eignet sich besonders für Navigationen, Karten und kleinere Layoutbereiche. Für komplexere zweidimensionale Layouts steht CSS Grid zur Verfügung.