Modul 04 · JIA Webentwicklung

Boxmodell & Layout

Jedes HTML-Element ist eine Box. Wie diese Boxen sich verhalten — Abstände, Rahmen, Anordnung — bestimmt das gesamte Layout deiner Seite.

Das CSS-Boxmodell

Jedes Element auf einer Webseite wird vom Browser als rechteckige Box behandelt. Diese Box besteht aus vier Schichten — von innen nach außen.

Margin
Border
Padding
Content

📦 Content

Der eigentliche Inhalt — Text, Bilder, etc.

↓ Details

Die Größe wird durch width und height bestimmt. Standardmäßig wächst der Content mit seinem Inhalt.

🟢 Padding

Innenabstand — Raum zwischen Inhalt und Rand.

↓ Details
padding: 20px; /* alle Seiten */ padding: 10px 20px; /* oben/unten links/rechts */ padding-top: 10px; /* nur oben */

Padding hat die Hintergrundfarbe des Elements — es „gehört" zum Element.

🔴 Border

Der sichtbare Rahmen um das Element.

↓ Details
border: 2px solid #E63946; border-radius: 8px; /* runde Ecken */ border-bottom: 3px dashed blue;

Border hat drei Teile: Dicke, Stil (solid/dashed/dotted) und Farbe.

🟡 Margin

Außenabstand — Raum zwischen diesem und anderen Elementen.

↓ Details
margin: 20px; margin: 0 auto; /* horizontal zentrieren! */ margin-bottom: 2rem;

Margin Collapse: Vertikale Margins zweier Nachbar-Elemente überlappen sich — es gilt der größere!

🎛️ Interaktives Boxmodell — schiebe die Regler!

Mit border-box zählen Padding + Border zur angegebenen Breite dazu.

box-sizing: content-box vs. border-box

content-box (Standard)

  • width/height = nur der Content
  • Padding und Border kommen oben drauf
  • Element wird breiter als angegeben
  • width: 200px + padding: 20px + border: 2px = 244px gesamt

border-box (empfohlen!)

  • width/height = alles inklusive
  • Padding und Border sind enthalten
  • Element bleibt exakt so breit wie angegeben
  • Deshalb: *, *::before, *::after { box-sizing: border-box; }

Flexbox — Elemente anordnen

Flexbox ist das mächtigste CSS-Tool für eindimensionale Layouts. Mit wenigen Zeilen Code kannst du Elemente horizontal oder vertikal ausrichten, verteilen und umordnen.

So aktivierst du Flexbox

CSS .container { display: flex; gap: 1rem; } /* Das reicht! Kinder werden automatisch nebeneinander angeordnet. */
Ergebnis
A
B
C

Ohne Flex: untereinander. Mit Flex: nebeneinander!

↔️ flex-direction

Hauptachse festlegen: row oder column.

↓ Details
flex-direction: row; /* horizontal (Standard) */ flex-direction: column; /* vertikal */ flex-direction: row-reverse; /* umgekehrt */

Die Hauptachse bestimmt, in welche Richtung die Kinder angeordnet werden.

⬅️➡️ justify-content

Verteilung entlang der Hauptachse.

↓ Details
justify-content: flex-start; /* links */ justify-content: center; /* mitte */ justify-content: space-between; /* gleichmäßig */ justify-content: space-around; /* mit Rand */

space-between ist besonders nützlich für Navigationen!

⬆️⬇️ align-items

Ausrichtung entlang der Querachse.

↓ Details
align-items: stretch; /* volle Höhe (Standard) */ align-items: center; /* vertikal zentriert */ align-items: flex-start; /* oben */ align-items: flex-end; /* unten */

Klassiker: display: flex; justify-content: center; align-items: center; = perfekte Zentrierung!

↩️ flex-wrap

Sollen Kinder umbrechen, wenn kein Platz ist?

↓ Details
flex-wrap: nowrap; /* kein Umbruch (Standard) */ flex-wrap: wrap; /* Umbruch in nächste Zeile */

Ohne wrap werden Kinder zusammengequetscht. Mit wrap entsteht ein flexibles Grid.

🧪 Flexbox-Playground — probier alle Kombinationen!

A
B
C
D

Jetzt bist du dran

Aufgabe 1: Sortiere die Box-Schichten von innen nach außen

Die innerste Schicht steht oben, die äußerste unten.

Border — Der sichtbare Rahmen
Content — Der Inhalt selbst
Margin — Außenabstand zu Nachbarn
Padding — Innenabstand zum Rand

Aufgabe 2: Flexbox-Challenge

Nutze den Playground oben und finde die richtige Kombination für diese Layouts:

Challenge 1

Elemente gleichmäßig verteilt, mit Abstand zum Rand.

↓ Lösung aufdecken
display: flex; justify-content: space-around; align-items: center;

space-around verteilt gleichmäßig und lässt auch am Rand Platz.

Challenge 2

Elemente vertikal gestapelt und horizontal zentriert.

↓ Lösung aufdecken
display: flex; flex-direction: column; align-items: center;

Bei column dreht sich die Achse — align-items wird zur horizontalen Ausrichtung!

Challenge 3

Perfekt zentriert — horizontal UND vertikal.

↓ Lösung aufdecken
display: flex; justify-content: center; align-items: center; /* Container braucht eine Höhe! */ min-height: 100vh;

Der „Holy Grail" des CSS: zwei Zeilen für perfekte Zentrierung. Funktioniert aber nur, wenn der Container eine definierte Höhe hat!

Quiz: Boxmodell & Flexbox

7 Fragen — von Margin Collapse bis justify-content.

Frage 1 von 7
Was beschreibt das CSS-Boxmodell?
Das Boxmodell beschreibt die vier Schichten jedes Elements: Content, Padding, Border und Margin.
Frage 2 von 7
Was ist der Unterschied zwischen Padding und Margin?
Padding = Abstand zwischen Inhalt und Rand. Margin = Abstand zwischen Element und Nachbarn.
Frage 3 von 7
Was bewirkt box-sizing: border-box?
Mit border-box bleibt ein Element exakt so breit wie angegeben — Padding und Border sind inklusive.
Frage 4 von 7
Was macht display: flex?
display: flex macht den Container zum Flex-Container — Kinder werden standardmäßig horizontal angeordnet.
Frage 5 von 7
Welche Eigenschaft verteilt Elemente gleichmäßig entlang der Hauptachse?
justify-content steuert die Verteilung auf der Hauptachse (horizontal bei row, vertikal bei column).
Frage 6 von 7
Was passiert bei „Margin Collapse"?
Wenn zwei vertikale Margins aufeinandertreffen, kollabieren sie — es gilt der größere Wert, nicht die Summe.
Frage 7 von 7
Wie zentriert man ein Element perfekt (horizontal + vertikal) mit Flexbox?
justify-content: center + align-items: center = perfekte Zentrierung auf beiden Achsen. Der Klassiker!

Begriffe zum Aufdecken

Boxmodell Klicken Konzept, dass jedes Element aus Content + Padding + Border + Margin besteht. Grundlage aller CSS-Layouts.
border-box Klicken Box-sizing-Modus, bei dem Padding und Border in der angegebenen Breite enthalten sind. Empfohlener Standard.
Margin Collapse Klicken Vertikale Margins zweier benachbarter Elemente überlappen sich — der größere Wert gewinnt statt Addition.
Flexbox Klicken CSS-Layoutmodus für eindimensionale Anordnung. Aktiviert mit display: flex auf dem Container.
Hauptachse Klicken Die Richtung, in der Flex-Kinder angeordnet werden. Bei row: horizontal. Bei column: vertikal.
justify-content Klicken Verteilung der Flex-Kinder entlang der Hauptachse (z.B. center, space-between, flex-end).
align-items Klicken Ausrichtung der Flex-Kinder entlang der Querachse (z.B. center, stretch, flex-start).
gap Klicken Abstand zwischen Flex- oder Grid-Kindern. Ersetzt Margin-Hacks und ist sauberer.
„Öffnet die DevTools (F12) auf einer beliebigen Webseite, wählt ein Element und sucht das Boxmodell-Diagramm. Verändert Padding und Margin live — was passiert mit dem Layout der Seite?"

Praxis-Übung in Zweierteams (5 Minuten). Teilt eure spannendsten Entdeckungen.