CSS Grid ist ein leistungsstarkes Layout-System, das es ermöglicht, Webseiteninhalte in einem zweidimensionalen Raster anzuordnen – sowohl horizontal (Zeilen) als auch vertikal (Spalten). Im Gegensatz zu Flexbox, das primär für eindimensionale Layouts gedacht ist (entweder Reihe oder Spalte), erlaubt Grid die präzise Steuerung beider Achsen gleichzeitig. Das macht es ideal für komplexere Layouts, wie z. B. Galerien, Dashboards oder ganze Seitenbereiche.
Unterschiede Grid zu Flexbox:
Eigenschaft | Flexbox | Grid |
---|---|---|
Achse | Eindimensional (Zeile oder Spalte) | Zweidimensional (Zeile und Spalte) |
Anwendung | Für einzelne Inhaltsreihen oder -spalten | Für komplette Layoutbereiche oder Raster |
Positionierung | Reihenfolge im HTML wichtig | Positionierung unabhängig vom HTML möglich |
Beispiel 1: Grid mit Überschrift und drei Spalten darunter
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Grid-Layout 3 Spalten</title>
<style>
.layout {
display: grid;
grid-template-rows: auto 1fr;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
background-color: #111;
padding: 20px;
color: white;
}
.layout h2 {
grid-column: 1 / -1; /* Überschrift über alle Spalten */
font-size: 24px;
margin: 0;
background-color: #0099ff;
}
.layout .spalte {
background-color: #40fe2a;
padding: 20px;
border-radius: 12px;
color: black;
}
</style>
</head>
<body>
<div class="layout">
<h2>Unsere drei Vorteile</h2>
<div class="spalte">Schnell</div>
<div class="spalte">Einfach</div>
<div class="spalte">Flexibel</div>
</div>
</body>
</html>
Mit gap: 20px;
erhalten wir einen Abstand von 20px zwischen alle Zellen im Grid. Diese Abstände gelten sowohl horizontal als auch vertikal. Das Grid erzeugt diesen Abstand intern, ganz unabhängig vom HTML-Quelltext. Du brauchst keine Margins oder Leerzeichen im HTML – das gap
regelt alles automatisch. Falls du z. B. horizontalen Abstand, also nur Spaltenabstände (und keine Zeilenabstände) willst, kannst du stattdessen schreiben: column-gap: 20px; row-gap: 0;
oder kurz gap: 0 20px;
Beispiel 2: Einfache Galerie mit Grid
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Grid-Layout 3 Spalten</title>
<style>
.galerie {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
padding: 20px;
}
.galerie div {
background-color: #0094ff;
height: 150px;
border-radius: 12px;
}
</style>
</head>
<body>
<div class="galerie">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
gap
→ Abstand zwischen den Grid-ElementenWir haben 16 Container in der Galerie. Da wir mit
repeat(4, 1fr)
angegeben haben, dass wir vier gleiche Spalten wünschen, ergibt dies 4 gleiche Zeilen. Schreibe das Beispiel mit 14 Containern und sieh was geschieht.
Bedeutung von 1fr:
1fr
steht für einen flexiblen Anteil des verbleibenden Platzes im Grid.grid-template-columns: 1fr 1fr 1fr
verwendest, teilt Grid den verfügbaren Platz gleichmäßig in drei Spalten auf – jede bekommt ein Drittel.Sadipscing elitr, sed diam nonumy eirmod.