Skip to content

Kapitel 13: Häufige Anfängerfehler und Lösungen

13.1 Häufiger Fehler 1: Flexbox wirkt nicht (Ursache + Lösung)

Symptom

  • Flex-Elemente verhalten sich wie normale Block-Elemente
  • justify-content, align-items haben keine Wirkung

Ursachen und Lösungen

Ursache 1: display: flex vergessen

css
.container {
  /* display: flex;  ← VERGESSEN! */
  justify-content: center;  /* HAT KEINE WIRKUNG! */
}

Lösung:

css
.container {
  display: flex;  /* JETZT gesetzt */
  justify-content: center;  /* FUNKTIONIERT! */
}

Ursache 2: Tippfehler bei display: flex

css
.container {
  display: fleks;  /* TIPPFEHLER! */
  display: flexx;   /* TIPPFEHLER! */
  display: flx;     /* TIPPFEHLER! */
}

Lösung:

css
.container {
  display: flex;  /* Richtig schreiben! */
}

Ursache 3: Elemente sind keine direkten Kinder

html
<div class="container">       <!-- Flex-Container -->
  <div class="wrapper">       <!-- KEIN Flex-Element -->
    <div class="item">1</div> <!-- ABER: .item ist KEIN direktes Kind! -->
  </div>
</div>

Lösung 1: HTML anpassen

html
<div class="container">
  <div class="item">1</div>  <!-- JETZT direktes Kind -->
  <div class="item">2</div>
</div>

Lösung 2: Verschachtelte Flexbox verwenden

css
.container {
  display: flex;
}

.wrapper {
  display: flex;  /* JETZT ist .wrapper auch ein Flex-Container */
}

13.2 Häufiger Fehler 2: Hauptachsen-Richtung geändert, Ausrichtung wirkt nicht mehr

Symptom

  • justify-content oder align-items wirken nicht wie erwartet
  • Layout sieht "kaputt" aus

Ursache

Wenn flex-direction geändert wird, ändert sich auch die Richtung, in der justify-content und align-items wirken.

Beispiel (falsch erwartet):

css
.container {
  display: flex;
  flex-direction: column;  /* Hauptachse jetzt vertikal! */
  justify-content: center;  /* Zentriert JETZT vertikal, nicht horizontal! */
  align-items: center;      /* Zentriert JETZT horizontal, nicht vertikal! */
}

Lösung

Immer die Hauptachse im Kopf behalten:

css
/* Wenn flex-direction: row (Standard) */
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;  /* Horizontal zentrieren */
  align-items: center;      /* Vertikal zentrieren */
}

/* Wenn flex-direction: column */
.container {
  display: flex;
  flex-direction: column;
  justify-content: center;  /* JETZT: Vertikal zentrieren */
  align-items: center;      /* JETZT: Horizontal zentrieren */
}

Merksatz:

justify-content = Ausrichtung auf der Hauptachsealign-items = Ausrichtung auf der Querachse


13.3 Häufiger Fehler 3: Elementgrößen außer Kontrolle (flex-grow/flex-shrink falsch verwendet)

Symptom

  • Elemente werden zu breit oder zu schmal
  • Layout bricht beim Skalieren

Ursache 1: flex-grow ohne Bedacht verwendet

css
.item {
  flex-grow: 1;  /* Alle Elemente wachsen gleichmäßig */
  width: 200px;    /* WIRD IGNORIERT! */
}

Problem:

  • width wird ignoriert, weil flex-grow: 1 den Platz gleichmäßig verteilt

Lösung:

css
.item {
  flex: 0 0 200px;  /* Nicht wachsen, nicht schrumpfen, 200px breit */
  /* Oder */
  flex-basis: 200px;  /* Flex-Basis setzen */
  flex-grow: 0;       /* Nicht wachsen */
}

Ursache 2: flex-shrink verhindert Schrumpfung

css
.item {
  flex-shrink: 0;  /* NICHT schrumpfen! */
  width: 300px;
}

.container {
  width: 500px;  /* Container ist zu schmal */
}

Problem:

  • Elemente überlaufen den Container, weil sie nicht schrumpfen dürfen

Lösung:

css
.item {
  flex-shrink: 1;  /* Schrumpfen erlauben */
  flex-basis: 300px;  /* Aber: Basis ist 300px */
  min-width: 0;       /* Erlaubt Schrumpfung unter die Basis-Größe */
}

Ursache 3: flex-basis und width gleichzeitig verwenden

css
.item {
  width: 200px;     /* WIRD IGNORIERT! */
  flex-basis: 300px; /* DIESES wird verwendet */
}

Lösung:

  • Entweder width oder flex-basis verwenden, nicht beide!
css
.item {
  /* width: 200px; → Weglassen */
  flex-basis: 300px;  /* JETZT wird dieser Wert verwendet */
}

13.4 Häufiger Fehler 4: align-content wirkt nicht (Umbruch vergessen)

Symptom

  • align-content hat keinerlei Wirkung
  • Zeilen werden nicht wie erwartet ausgerichtet

Ursache

align-content wirkt nur wenn flex-wrap: wrap oder wrap-reverse gesetzt ist!

css
.container {
  display: flex;
  flex-wrap: nowrap;  /* EIN Zeile! */
  align-content: center;  /* WIRKT NICHT! */
}

Lösung

css
.container {
  display: flex;
  flex-wrap: wrap;     /* JETZT: Mehrere Zeilen! */
  align-content: center;  /* FUNKTIONIERT! */
  height: 400px;       /* Höhe für Demonstration */
}

Wichtig:

align-content = Ausrichtung von Zeilen (nur bei Umbruch!) align-items = Ausrichtung von Elementen (immer!)


13.5 Häufige Kompatibilitätsprobleme (Alte Browser anpassen, optional)

Problem: Internet Explorer (IE9 und älter)

Symptom:

  • Flexbox wirkt in alten Browsern nicht

Lösung 1: Fallback mit Float oder Inline-Block

css
.container {
  /* Fallback für alte Browser */
  display: block;
}

.item {
  display: inline-block;  /* Fallback */
  width: 32%;            /* Fallback */
  margin-right: 2%;      /* Fallback */
}

/* Moderne Browser */
@supports (display: flex) {
  .container {
    display: flex;
  }
  
  .item {
    display: block;  /* Zurücksetzen */
    width: auto;     /* Zurücksetzen */
    margin-right: 0; /* Zurücksetzen */
    flex: 1;
  }
}

Lösung 2: -ms- Präfix für IE10/11

css
.container {
  display: -ms-flexbox;  /* IE10 */
  display: flex;           /* Moderne Browser */
}

Empfehlung:

Heutzutage musst du nur noch selten IE unterstützen. Flexbox wird von allen modernen Browsern unterstützt.


13.6 Debugging-Tipps: Flexbox-Probleme schnell finden

Tipp 1: Browser-Entwicklerwerkzeuge verwenden (F12)

Schritte:

  1. Drücke F12, um Entwicklerwerkzeuge zu öffnen
  2. Klicke auf das Element-Auswahl-Symbol (oder Ctrl + Shift + C)
  3. Klicke auf das Flex-Element im Browser
  4. Im Elements-Tab erscheint das Element
  5. Wenn display: flex gesetzt ist, siehst du ein flex-Badge neben dem Element
  6. Klicke auf das flex-Badge, um die Flexbox-Visualisierung zu aktivieren

Was du siehst:

  • Farbige Linien zeigen die Hauptachse und Querachse
  • Abstände zwischen Elementen werden visualisiert
  • Ausrichtungen werden farbig markiert

Tipp 2: Hintergrundfarben für Debugging verwenden

CSS:

css
/* Container markieren */
.container {
  display: flex;
  border: 3px solid red;       /* Container sichtbar machen */
  background-color: #ffe6e6;  /* Helle Hintergrundfarbe */
}

/* Elemente markieren */
.item {
  border: 2px solid blue;     /* Elemente sichtbar machen */
  background-color: #e6f2ff;  /* Helle Hintergrundfarbe */
}

Vorteil:

  • Du siehst sofort, ob der Container und die Elemente korrekt dargestellt werden
  • Du kannst die Größen und Abstände besser erkennen

Tipp 3: min-width: 0 für Schrumpfung verwenden

Problem:

css
.item {
  flex-shrink: 1;  /* Darf schrumpfen */
  width: 200px;     /* ABER: Schrumpft nicht unter 200px! */
}

Lösung:

css
.item {
  flex-shrink: 1;
  width: 200px;
  min-width: 0;    /* JETZT darf es unter 200px schrumpfen */
}

Tipp 4: flex: 1 für gleichmäßige Verteilung verwenden

Problem:

css
.item {
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: 0%;  /* Muss explizit gesetzt werden! */
}

Lösung (einfacher):

css
.item {
  flex: 1;  /* Kurzschreibweise für: flex-grow: 1, flex-shrink: 1, flex-basis: 0% */
}

Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Häufige Fehler 1: display: flex vergessen oder Tippfehler
  • ✅ Häufige Fehler 2: Hauptachsen-Richtung geändert, Ausrichtung wirkt nicht mehr
  • ✅ Häufige Fehler 3: flex-grow/flex-shrink falsch verwendet
  • ✅ Häufige Fehler 4: align-content ohne Umbruch verwendet
  • ✅ Kompatibilitätsprobleme mit alten Browsern
  • ✅ Debugging-Tipps für Flexbox

Nächstes Kapitel: In Kapitel 14 lernen wir fortgeschrittene Flexbox-Tipps kennen.


Übungsaufgaben

Aufgabe 13.1

Erstelle einen Container mit 3 Elementen. Setze display: flex, aber die Elemente verhalten sich nicht wie Flex-Elemente. Finde den Fehler (Tipp: Schau dir die HTML-Struktur genau an).

Aufgabe 13.2

Erstelle einen Container mit flex-direction: column. Versuche, die Elemente horizontal zu zentrieren. Warum wirkt justify-content: center nicht wie erwartet?

Aufgabe 13.3

Erstelle 3 Elemente und gib ihnen flex-grow: 1. Beobachte, dass width ignoriert wird. Löse das Problem.

Aufgabe 13.4

Erstelle einen Container mit flex-wrap: wrap und 6 Elementen. Versuche, align-content: center zu verwenden. Stelle sicher, dass es funktioniert.

Frei für alle Anfänger