Flexbox oder Grid?
Die Faustregel: eine Dimension oder zwei?
Abschnitt betitelt „Die Faustregel: eine Dimension oder zwei?“- Flexbox: Ihr habt eine Reihe von Elementen, die in einer Richtung angeordnet werden - Navigation, Button-Reihe, eine Zeile mit Icon + Text
- Grid: Ihr wollt Zeilen und Spalten gleichzeitig kontrollieren - ein Seiten-Layout, eine Bildergalerie, ein Formular mit ausgerichteten Labels
Eine andere Unterscheidung: Will ich die größen der Spalten und Zeilen im Wrapper vorgeben, oder sollte das der Content selbst machen?
Abschnitt betitelt „Eine andere Unterscheidung: Will ich die größen der Spalten und Zeilen im Wrapper vorgeben, oder sollte das der Content selbst machen?“- Flexbox: Die jeweiligen Kinder innerhalb der Flexbox geben ihre eigenen Größen vor
- Grid: Du gibst im Wrapper vor, wie groß der Platz ist, den die jeweiligen Kinder einnehmen dürfen
Typische Anwendungsfälle im Vergleich
Abschnitt betitelt „Typische Anwendungsfälle im Vergleich“| Aufgabe | Bessere Wahl |
|---|---|
| Navigationsleiste (Logo links, Links rechts) | Flexbox |
| Reihe von Buttons mit Abstand | Flexbox |
| Card zentrieren (horizontal + vertikal) | Flexbox |
| Ganzes Seiten-Layout (Header/Sidebar/Main/Footer) | Grid |
| Bildergalerie mit gleich großen Kacheln | Grid |
| Formular mit ausgerichteten Labels und Feldern | Grid |
Die Falle: Prozentbreiten + gap in Flexbox
Abschnitt betitelt „Die Falle: Prozentbreiten + gap in Flexbox“Wollt ihr in einer Flexbox z.B. drei gleich breite Kinder mit width: 33.33% erzeugen und zusätzlich gap für den Abstand dazwischen, kommt es zum Überlauf:
.row { display: flex; gap: 16px;}
.row > * { width: 33.33%; /* Achtung! */}Die Lösung: Grid
Abschnitt betitelt „Die Lösung: Grid“Mit Grid gebt ihr die Breiten über grid-template-columns vor - gap wird dabei automatisch korrekt eingerechnet, nie addiert:
.row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px;}Sie schließen sich nicht aus
Abschnitt betitelt „Sie schließen sich nicht aus“In der Praxis kombiniert ihr beide fast immer: Grid für das große Seiten-Layout, Flexbox für die kleineren Bausteine darin.
/* Grid für das große Ganze */.page { display: grid; grid-template-columns: 250px 1fr; grid-template-areas: "sidebar main";}
/* Flexbox für eine Komponente innerhalb einer Grid-Zelle */.card-actions { display: flex; gap: 8px; justify-content: flex-end;}Weitere Quellen zum Vertiefen
Abschnitt betitelt „Weitere Quellen zum Vertiefen“- A Complete Guide to Flexbox - die Referenz für alle Flexbox-Properties
- A Complete Guide to Grid - dieselbe Referenz für Grid
- Flexboxfroggy.com - Flexbox spielerisch üben, mit Fröschen
- CSS Grid Garden - dasselbe Prinzip für Grid, mit einem Gemüsegarten
- Use Cases For Flexbox - vertieft die Entscheidung Grid vs. Flexbox anhand echter Beispiele
beantwortet: 0 / 0 (0%)
richtig: 0 / 0 (0%)