PFAD: ./module/css/css2/

DATEI: string(25) "00Inhaltsverzeichnis2.php"
DATEI: string(21) "11Flex-Grundlagen.php"
DATEI: string(19) "12Flex-Property.php"
DATEI: string(14) "13CSS-Grid.php"
DATEI: string(20) "14Grid-Placement.php"
DATEI: string(21) "15Grid-Ausrichten.php"

css mit Adi Prinz

CSS Grid Layout

CSS Grid ist ein zweidimensionales Layoutsystem für Zeilen und Spalten. Damit lassen sich einfache und komplexe Seitenlayouts übersichtlich aufbauen.

Ein Grid besteht aus einem übergeordneten Grid-Container und seinen direkten untergeordneten Grid-Items. Die Grid-Eigenschaften des Rasters werden am Container festgelegt.

CSS Grid aktivieren

Mit display: grid; wird ein Element zum Grid-Container. Seine direkten Kindelemente werden automatisch zu Grid-Items.

.wrapper {
  display: grid;
}

Mit grid-template-columns und grid-template-rows werden Spalten und Zeilen definiert. gap legt die Abstände zwischen den Tracks fest.

.wrapper {
  display: grid;
  grid-template-columns: 120px 1fr 80px;
  grid-template-rows: 50px 120px 80px;
  gap: 10px;
}

Basis-HTML und Basis-CSS der Beispiele

Alle Beispiele verwenden denselben Grid-Container und dieselben Grid-Items. Das gemeinsame Basis-CSS steht unter #wrapper. Nur die Klassen .wrapper1, .wrapper2 usw. enthalten die Grid-Eigenschaften, die sich im jeweiligen Beispiel ändern.

Basis-CSS

#wrapper {
  display: grid;
  max-width: 800px;
  margin: 20px 0;
  padding: 10px;
  border: 1px solid #ccc;
  background-color: #fcfcfc;
  font-family: Verdana, Geneva, Tahoma, sans-serif;
}

#wrapper .item {
  padding: 7px 20px;
  border-radius: 5px;
  background-color: #444;
  color: #fff;
  font-size: 1.2em;
}

#wrapper .item:nth-child(even) {
  background-color: #ccc;
  color: #000;
}

/* Hier stehen nur die Grid-Eigenschaften des Beispiels. */
.wrapper1 {
}

Basis-HTML

<div id="wrapper" class="wrapper1">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

Grid-Elemente und Grundbegriffe

Ein Grid wird durch Linien, Tracks, Zellen und Bereiche aufgebaut. Diese Begriffe sind wichtig, um die Funktionsweise von CSS Grid zu verstehen.

CSS Grid mit nummerierten Zeilen- und Spaltenlinien

Grid-Line

Grid-Lines sind die horizontalen und vertikalen Begrenzungslinien des Rasters. Sie werden nummeriert und später für die Platzierung von Grid-Items verwendet.

Horizontale und vertikale Grid-Lines

Grid-Track

Ein Grid-Track ist der Bereich zwischen zwei benachbarten Grid-Lines. Ein Track entspricht einer vollständigen Spalte oder Zeile.

Markierter Grid-Track zwischen zwei Grid-Lines

Grid-Cell

Eine Grid-Cell ist die kleinste Einheit des Rasters. Sie entsteht am Schnittpunkt einer Zeile und einer Spalte.

Markierte einzelne Grid-Cell

Grid-Area

Eine Grid-Area ist ein rechteckiger Bereich, der von vier Grid-Lines begrenzt wird. Sie kann aus einer oder mehreren Grid-Cells bestehen.

Markierte Grid-Area aus mehreren Grid-Cells

Explizite und implizite Grids

Das explizite Grid wird mit grid-template-columns, grid-template-rows oder grid-template-areas festgelegt.

Entstehen zusätzliche Zeilen oder Spalten, die nicht im Template definiert wurden, gehören sie zum impliziten Grid. Ihre Größe kann mit grid-auto-rows und grid-auto-columns gesteuert werden.

Explizites Grid

Im folgenden Beispiel werden drei Spalten und drei Zeilen ausdrücklich definiert. Die neun Grid-Items füllen dieses Raster automatisch.

Beispiel-CSS

.wrapper1 {
  grid-template-columns: 120px 1fr 80px;
  grid-template-rows: 50px 120px 80px;
  gap: 10px;
}

Beispiel-HTML

<div id="wrapper" class="wrapper1">
  <div class="item">1</div>
  <!-- Weitere 8 Items -->
</div>

Beispiel-Ausgabe

1
2
3
4
5
6
7
8
9

Implizites Grid

Die drei Spalten werden explizit definiert. Die benötigten Zeilen entstehen automatisch und erhalten durch grid-auto-rows jeweils eine Höhe von 50px.

Beispiel-CSS

.wrapper2 {
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 50px;
  gap: 10px;
}

Beispiel-HTML

<div id="wrapper" class="wrapper2">
  <div class="item">1</div>
  <!-- Weitere 8 Items -->
</div>

Beispiel-Ausgabe

1
2
3
4
5
6
7
8
9

Eigenschaften im Grid-Container

Die folgende Tabelle dient als vollständige Übersicht über die wichtigsten Eigenschaften eines Grid-Containers. Einige Eigenschaften werden auf den Seiten Placement und Ausrichten ausführlicher erklärt.

Grid-Container: Eigenschaften

Eigenschaft Beschreibung Beispiel Initialwert
display Definiert ein Element als Block- oder Inline-Grid-Container. display: grid;
display: inline-grid;
inline
grid-template-columns Legt Anzahl und Größe der expliziten Spalten fest. grid-template-columns: 100px 1fr 100px; none
grid-template-rows Legt Anzahl und Größe der expliziten Zeilen fest. grid-template-rows: 80px 1fr 60px; none
grid-template-areas Definiert benannte Bereiche innerhalb des expliziten Grids. grid-template-areas: "header header" "aside main"; none
grid-template Kurzschreibweise für grid-template-rows, grid-template-columns und grid-template-areas. grid-template: 80px 1fr / 200px 1fr; none
grid-auto-columns Bestimmt die Breite automatisch erzeugter Spalten. grid-auto-columns: 120px; auto
grid-auto-rows Bestimmt die Höhe automatisch erzeugter Zeilen. grid-auto-rows: 100px; auto
grid-auto-flow Steuert, wie automatisch platzierte Grid-Items in das Raster eingefügt werden. grid-auto-flow: column; row
row-gap Legt den Abstand zwischen den Grid-Zeilen fest. row-gap: 20px; normal
column-gap Legt den Abstand zwischen den Grid-Spalten fest. column-gap: 20px; normal
gap Kurzschreibweise für row-gap und column-gap. gap: 20px 10px; normal
grid-row-gap Ältere Bezeichnung für row-gap. grid-row-gap: 20px; normal
grid-column-gap Ältere Bezeichnung für column-gap. grid-column-gap: 20px; normal
grid-gap Ältere Bezeichnung für gap. grid-gap: 20px 10px; normal
justify-items Richtet alle Grid-Items innerhalb ihrer Grid-Areas entlang der Inline-Achse aus. justify-items: center; normal
align-items Richtet alle Grid-Items innerhalb ihrer Grid-Areas entlang der Block-Achse aus. align-items: center; normal
place-items Kurzschreibweise für align-items und justify-items. place-items: center; normal
justify-content Richtet das gesamte Grid innerhalb des Containers entlang der Inline-Achse aus. justify-content: space-between; normal
align-content Richtet das gesamte Grid innerhalb des Containers entlang der Block-Achse aus. align-content: center; normal
place-content Kurzschreibweise für align-content und justify-content. place-content: center space-between; normal
grid Kurzschreibweise für explizite und implizite Grid-Eigenschaften. grid: 80px 1fr / 200px 1fr; none

grid-template: Kurzschreibweise

grid-template fasst die expliziten Grid-Eigenschaften zusammen. Vor dem Schrägstrich stehen die Zeilen, danach die Spalten.

.wrapper3 {
  grid-template: 80px 120px / 20% 1fr 20%;
  gap: 10px;
}

grid: Kurzschreibweise

grid kann sowohl explizite als auch implizite Grid-Eigenschaften zusammenfassen. Die Kurzschreibweise ist kompakt, aber für Anfänger meist schwerer zu lesen.

.wrapper4 {
  grid: 60px 80px 80px / repeat(3, 1fr);
  gap: 10px;
}

Größenangaben und Grid-Funktionen

Spalten und Zeilen können mit festen, relativen oder inhaltsabhängigen Größen definiert werden. Zusätzlich stellt CSS Grid Funktionen wie repeat() und minmax() bereit.

Übersicht

Wert oder Funktion Beschreibung Beispiel
auto Die Größe richtet sich nach dem verfügbaren Platz und dem Inhalt. grid-template-columns: auto 1fr;
px Feste Größe in Pixel. grid-template-columns: 200px 1fr;
em, rem, vw, ch Relative Längeneinheiten mit unterschiedlichen Bezugspunkten. grid-template-columns: 20rem 1fr;
% Prozentualer Anteil an der Größe des Grid-Containers. grid-template-columns: 30% 70%;
fr Verteilt den verbleibenden Platz in Bruchteile. grid-template-columns: 1fr 2fr;
min-content Kleinste Größe, bei der der Inhalt möglichst stark umbrochen wird. grid-template-columns: min-content 1fr;
max-content Größe, die der Inhalt ohne vermeidbare Zeilenumbrüche benötigt. grid-template-columns: max-content 1fr;
fit-content() Passt die Track-Größe an den Inhalt an, begrenzt sie aber auf den angegebenen Maximalwert. grid-template-columns: fit-content(300px) 1fr;
minmax() Definiert eine Mindest- und eine Höchstgröße. grid-template-columns: minmax(200px, 1fr) 2fr;
repeat() Wiederholt eine Track-Definition. grid-template-columns: repeat(3, 1fr);
auto-fill Erzeugt so viele Spalten wie möglich und behält auch leere Tracks bei. repeat(auto-fill, minmax(200px, 1fr))
auto-fit Erzeugt so viele Spalten wie möglich und klappt ungenutzte Tracks zusammen. repeat(auto-fit, minmax(200px, 1fr))
Benannte Grid-Lines Grid-Lines können benannt und später für die Platzierung verwendet werden. [aside-start] 250px [main-start] 1fr [main-end]
subgrid Übernimmt die Track-Definition eines übergeordneten Grids für Zeilen oder Spalten. grid-template-columns: subgrid;

Beispiel mit repeat() und minmax()

Das folgende Grid erzeugt automatisch so viele Spalten, wie in den verfügbaren Platz passen. Jede Spalte ist mindestens 200px breit und kann den restlichen Platz gleichmäßig nutzen.

.wrapper5 {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px;
}

Beispiel-Ausgabe

1
2
3
4
5
6

Eigenschaften im Grid-Item

Die folgende Tabelle dient als vollständige Übersicht über Eigenschaften, die direkt auf ein Grid-Item angewendet werden können. Die Eigenschaften zur Platzierung werden auf der Seite Placement, die Eigenschaften zur Ausrichtung auf der Seite Ausrichten ausführlich erklärt.

Grid-Item: Eigenschaften

Eigenschaft Beschreibung Beispiel Initialwert
grid-column-start Legt die Startlinie eines Grid-Items entlang der Spaltenachse fest. grid-column-start: 2; auto
grid-column-end Legt die Endlinie eines Grid-Items entlang der Spaltenachse fest. grid-column-end: 4; auto
grid-column Kurzschreibweise für grid-column-start und grid-column-end. grid-column: 1 / span 2; auto / auto
grid-row-start Legt die Startlinie eines Grid-Items entlang der Zeilenachse fest. grid-row-start: 2; auto
grid-row-end Legt die Endlinie eines Grid-Items entlang der Zeilenachse fest. grid-row-end: 4; auto
grid-row Kurzschreibweise für grid-row-start und grid-row-end. grid-row: 1 / span 2; auto / auto
grid-area Legt eine benannte Grid-Area fest oder fasst grid-row-start, grid-column-start, grid-row-end und grid-column-end zusammen. grid-area: 2 / 1 / span 2 / span 3; auto
justify-self Richtet ein einzelnes Grid-Item innerhalb seiner Grid-Area entlang der Inline-Achse aus. justify-self: center; auto
align-self Richtet ein einzelnes Grid-Item innerhalb seiner Grid-Area entlang der Block-Achse aus. align-self: end; auto
place-self Kurzschreibweise für align-self und justify-self. place-self: center end; auto
order Beeinflusst die visuelle Reihenfolge eines Grid-Items innerhalb des Containers. order: 2; 0
z-index Bestimmt die Stapelreihenfolge überlappender Grid-Items. z-index: 2; auto

Hinweis: Mit order lässt sich die visuelle Reihenfolge verändern. Die Reihenfolge im HTML bleibt jedoch unverändert. Für Tastaturbedienung und Screenreader sollte deshalb weiterhin eine sinnvolle Dokumentreihenfolge verwendet werden.