CSS Flexbox ist das bevorzugte Layoutsystem fur moderne Webentwicklung. Dieser vollstandige CSS Flexbox Guide deckt alles ab, von den Grundlagen bis zu fortgeschrittenen Patterns.
1. Was ist Flexbox und wann verwenden
Flexbox ist ein eindimensionales Layoutmodell zum Verteilen von Raum und Ausrichten von Elementen.
/* Use Flexbox when you need: */
/* 1. One-dimensional alignment (row OR column) */
.toolbar { display: flex; gap: 8px; }
/* 2. Content-driven sizing */
.tabs { display: flex; }
.tab { flex: 1; } /* equal-width tabs */
/* 3. Dynamic ordering */
.card { display: flex; flex-direction: column; }
.card-footer { order: 3; margin-top: auto; }
/* Use CSS Grid instead when you need: */
/* - Two-dimensional control (rows AND columns) */
/* - Layout-driven sizing (template areas) */
/* - Complex page-level layouts */2. Flex Container: Das Elternelement
Alles beginnt mit dem Flex Container. display: flex macht direkte Kinder zu Flex Items.
/* Block-level flex container */
.container {
display: flex;
}
/* Inline-level flex container */
.inline-container {
display: inline-flex;
}
/* flex-direction: controls the main axis direction */
.row { flex-direction: row; } /* left to right (default) */
.row-rev { flex-direction: row-reverse; } /* right to left */
.col { flex-direction: column; } /* top to bottom */
.col-rev { flex-direction: column-reverse; } /* bottom to top */
/* flex-flow: shorthand for direction + wrap */
.container {
flex-flow: row wrap;
/* same as: flex-direction: row; flex-wrap: wrap; */
}3. Hauptachse vs Querachse
Das Verstandnis der zwei Achsen ist der Schlussel zur Flexbox-Beherrschung.
/*
* flex-direction: row (default)
* ââââââââââââââââââââââââââââââââââââââââââââ
* â â â â â â â MAIN AXIS â â â â â â â â
* â â
* â â ââââââ ââââââ ââââââ â
* â â â 1 â â 2 â â 3 â CROSS â
* â â ââââââ ââââââ ââââââ AXIS â
* â â â
* ââââââââââââââââââââââââââââââââââââââââââââ
*
* flex-direction: column
* ââââââââââââââââââââ
* â âCROSS AXISâ â
* â â
* â â ââââââââââ â
* â â â 1 â â
* â â ââââââââââ â
* â â ââââââââââ â MAIN
* â â â 2 â â AXIS
* â â ââââââââââ â
* â â ââââââââââ â
* â â â 3 â â
* â ââââââââââ â
* ââââââââââââââââââââ
*
* KEY INSIGHT:
* - justify-content = main axis
* - align-items = cross axis
* - When flex-direction changes, the axes swap!
*/4. justify-content: Ausrichtung auf der Hauptachse
justify-content steuert die Verteilung entlang der Hauptachse.
.container {
display: flex;
/* Pack items to the start (default) */
justify-content: flex-start;
/* [1][2][3] */
/* Center items */
justify-content: center;
/* [1][2][3] */
/* Pack items to the end */
justify-content: flex-end;
/* [1][2][3] */
/* Equal space between items */
justify-content: space-between;
/* [1] [2] [3] */
/* Equal space around items */
justify-content: space-around;
/* [1] [2] [3] */
/* Equal space everywhere */
justify-content: space-evenly;
/* [1] [2] [3] */
}5. align-items: Ausrichtung auf der Querachse
align-items steuert die Positionierung auf der Querachse.
.container {
display: flex;
height: 200px;
align-items: stretch; /* Items fill container height (default) */
align-items: flex-start; /* Items at the top */
align-items: center; /* Items vertically centered */
align-items: flex-end; /* Items at the bottom */
align-items: baseline; /* Items aligned by text baseline */
}
/* Override for a single item */
.special-item {
align-self: center; /* This item centered, others follow container */
}
/* align-content: controls spacing between LINES (only with wrap) */
.multi-line {
display: flex;
flex-wrap: wrap;
align-content: flex-start; /* lines packed to top */
align-content: center; /* lines centered */
align-content: space-between; /* equal space between lines */
}6. Flex Item Eigenschaften: grow, shrink, basis
Die drei Eigenschaften steuern, wie Items den verfugbaren Raum teilen.
/* flex-grow: how much an item GROWS when extra space exists */
.item { flex-grow: 0; } /* default: don't grow */
.item { flex-grow: 1; } /* grow to fill available space */
.item { flex-grow: 2; } /* grow twice as much as flex-grow: 1 items */
/* flex-shrink: how much an item SHRINKS when space is tight */
.item { flex-shrink: 1; } /* default: shrink proportionally */
.item { flex-shrink: 0; } /* never shrink (fixed size) */
/* flex-basis: the STARTING SIZE before grow/shrink */
.item { flex-basis: auto; } /* use content width (default) */
.item { flex-basis: 0; } /* start from zero, grow equally */
.item { flex-basis: 200px; } /* start from 200px */
.item { flex-basis: 25%; } /* start from 25% of container *//* flex shorthand (recommended) */
.item { flex: 1; }
/* = flex-grow: 1, flex-shrink: 1, flex-basis: 0% */
/* Items grow equally from zero â equal widths */
.item { flex: auto; }
/* = flex-grow: 1, flex-shrink: 1, flex-basis: auto */
/* Items grow from content size â proportional widths */
.item { flex: none; }
/* = flex-grow: 0, flex-shrink: 0, flex-basis: auto */
/* Items are inflexible â use content width only */
.item { flex: 0 0 200px; }
/* = flex-grow: 0, flex-shrink: 0, flex-basis: 200px */
/* Fixed 200px item that never grows or shrinks */| Shorthand | Equivalent | Use Case |
|---|---|---|
flex: 1 | 1 1 0% | Equal-width columns |
flex: auto | 1 1 auto | Proportional to content |
flex: none | 0 0 auto | Fixed content size |
flex: 0 0 200px | 0 0 200px | Fixed pixel width |
flex: 1 0 300px | 1 0 300px | Responsive card (min 300px) |
7. Flex Wrap und mehrzeilige Layouts
flex-wrap erlaubt Items, in die nachste Zeile umzubrechen.
.container {
display: flex;
flex-wrap: nowrap; /* default â single line, may overflow */
flex-wrap: wrap; /* wrap to next line when needed */
flex-wrap: wrap-reverse; /* wrap in reverse order */
}
/* Practical example: responsive card grid */
.card-grid {
display: flex;
flex-wrap: wrap;
gap: 24px;
}
.card {
flex: 1 1 300px; /* grow, shrink, min-width 300px */
max-width: 400px; /* cap maximum width */
}
/* Result:
* Wide screen: [card] [card] [card] [card]
* Medium: [card] [card] [card]
* [card]
* Narrow: [card]
* [card]
* [card]
* [card]
*/8. Die gap Eigenschaft
gap fugt Abstande zwischen Items ohne aussere Margins hinzu.
.container {
display: flex;
flex-wrap: wrap;
gap: 16px; /* equal gap in both directions */
gap: 20px 12px; /* row-gap: 20px, column-gap: 12px */
row-gap: 20px; /* vertical spacing only */
column-gap: 12px; /* horizontal spacing only */
}
/* Why gap is better than margins: */
/* Old approach (margins) - awkward edge spacing */
.item { margin: 8px; }
/* Creates 8px margin on ALL sides, including outer edges */
/* Need negative margins on container to compensate */
/* Modern approach (gap) - clean spacing */
.container { display: flex; gap: 16px; }
/* Space ONLY between items, not on outer edges */9. Haufige Flexbox Layout-Patterns
Die am haufigsten verwendeten Flexbox-Patterns in realen Projekten.
Perfect Centering
/* Center anything horizontally and vertically */
.center-everything {
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* or any fixed height */
}
/* Alternative: margin auto trick */
.parent { display: flex; height: 100vh; }
.child { margin: auto; } /* centers in both axes */Navigation Bar
/* Logo left, links right */
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 24px;
height: 64px;
}
/* Logo left, links center, actions right */
.navbar-3-section {
display: flex;
align-items: center;
}
.navbar-3-section .logo { flex: 1; }
.navbar-3-section .links { flex: 0; display: flex; gap: 24px; }
.navbar-3-section .actions { flex: 1; display: flex; justify-content: flex-end; }Sticky Footer
/* Footer stays at bottom even with short content */
body {
display: flex;
flex-direction: column;
min-height: 100vh;
margin: 0;
}
header { flex-shrink: 0; } /* fixed height */
main { flex: 1; } /* fills all remaining space */
footer { flex-shrink: 0; } /* fixed height, stays at bottom */Sidebar Layout
/* Fixed sidebar + fluid main content */
.layout {
display: flex;
min-height: 100vh;
}
.sidebar {
flex: 0 0 280px; /* fixed 280px, never grow or shrink */
}
.main-content {
flex: 1; /* takes remaining space */
min-width: 0; /* prevents overflow */
}
/* Responsive: stack on mobile */
@media (max-width: 768px) {
.layout { flex-direction: column; }
.sidebar { flex-basis: auto; }
}Equal-Height Cards
/* Cards in a row, all same height, button at bottom */
.card-row {
display: flex;
gap: 24px;
}
.card {
flex: 1;
display: flex;
flex-direction: column;
}
.card-body {
flex: 1; /* fills remaining space, pushing footer down */
}
.card-footer {
margin-top: auto; /* always at the bottom */
}10. Flexbox vs CSS Grid
Flexbox und CSS Grid sind komplementar. Die Wahl hangt von der Dimensionalitat ab.
| Feature | Flexbox | CSS Grid |
|---|---|---|
| Dimensions | One (row OR column) | Two (rows AND columns) |
| Sizing | Content-driven | Layout-driven |
| Best for | Components, navbars, centering | Page layouts, dashboards |
| Item placement | Sequential (order property) | Any cell (grid-area) |
| Gap support | Yes (modern browsers) | Yes (all grid browsers) |
/* Use BOTH together for best results: */
/* Grid for page layout */
.page {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 250px 1fr;
}
/* Flexbox for components inside grid areas */
.header {
grid-area: header;
display: flex; /* Flexbox inside Grid */
justify-content: space-between;
align-items: center;
}Haufig gestellte Fragen
Wie zentriere ich ein div mit Flexbox?
display: flex; justify-content: center; align-items: center; height: 100vh.
Unterschied zwischen flex: 1 und flex: auto?
flex: 1 wachst von null, flex: auto von der Inhaltsgrosse.
Warum lauft mein Flex Item uber?
Fugen Sie min-width: 0 hinzu.
Flexbox fur Ganzseitenlayout?
Ja, mit flex-direction: column und min-height: 100vh.
Browser-Support fur Flexbox?
Uber 99% globaler Support. gap benotigt neuere Browser.
TL;DR
display: flexon the parent activates Flexboxjustify-content= main axis alignmentalign-items= cross axis alignmentflex: 1= equal-width items that fill available spaceflex-wrap: wrap= responsive multi-line layoutsgap= clean spacing between items (no outer margins)- Use
min-width: 0to fix overflow issues - Flexbox for components, CSS Grid for page layouts
- Combine both for the best results
Flexbox ist eine unverzichtbare Fahigkeit. Uben Sie mit unseren Tools.