Inhaltsverzeichnis

CSS Grid Layout

Diese Dokumentation behandelt die Grundlagen, Eigenschaften und Ausrichtungsmethoden des CSS Grid Layouts basierend auf den Schulungsunterlagen[cite: 14].

1. Funktionsweise & Terminologie

Das CSS Grid ist ein zweidimensionales Layout-System[cite: 14]. Die Funktionsweise gliedert sich in drei Schritte[cite: 14]:

1. **Container festlegen:** Ein Element wird durch ''display: grid'' zum Grid Container[cite: 14].
2. **Spuren definieren:** Zeilen und Spalten werden explizit oder implizit eingerichtet[cite: 14].
3. **Elemente platzieren:** Kinder-Elemente (Grid Items) werden in Rasterbereiche eingeordnet[cite: 14].

Grundbegriffe

2. Container definieren & Spuren festlegen

#layout {
  display: grid;
  grid-template-rows: 100px 400px 100px;
  grid-template-columns: 200px 1fr 200px;
}

Spurgrößenwerte

Für die Längenangaben von Spalten und Zeilen stehen verschiedene Einheiten zur Verfügung[cite: 14]:

Liniennummern & Liniennamen

Browser nummerieren Rasterlinien automatisch von 1 bis zum Ende (sowie negativ von -1 rückwärts)[cite: 14]. Benannte Linien werden in eckigen Klammern angegeben[cite: 14]:

#layout {
  display: grid;
  grid-template-rows: [header-start] 100px [header-end content-start] 400px [content-end];
  grid-template-columns: [ads] 200px [main] 1fr [links] 200px;
}

3. Rasterbereiche (Grid Areas)

Mit grid-template-areas lässt sich ein visuelles Layout direkt im CSS definieren[cite: 14]:

#layout {
  display: grid;
  grid-template-areas:
    "header header header"
    "ads    main   links"
    "footer footer footer";
}
 
/* Zuweisung beim Grid Item */
#header { grid-area: header; }
#main   { grid-area: main; }

<note tip> Wenn Bereiche benannt werden, generiert der Browser implizit Liniennamen mit den Suffixen -start und -end (und umgekehrt)[cite: 14]. </note>

4. Kurzschreibweise (grid)

Die Eigenschaft grid führt Zeilen- und Spalteninformationen zusammen (Zeilen vor dem Schrägstrich, Spalten danach)[cite: 14]:

#layout {
  display: grid;
  grid: 100px 400px 100px / 200px 1fr 200px;
}

5. Elemente platzieren

Grid Items können anhand von Liniennummern, Liniennamen oder Spannen (span) positioniert werden[cite: 14]:

Einzelne Eigenschaften

Kurzschreibweisen

#one {
  /* Start / End */
  grid-row: 1 / 2;
  grid-column: 1 / span 3;
}

6. Implizites Grid & Automatischer Fluss

Wenn Elemente nicht explizit platziert werden, fließen sie automatisch in das Raster ein[cite: 14]:

7. Abstände & Ausrichtung

Abstände (Gaps)

Abstände werden zwischen den Spuren eingefügt, ohne zusätzliche Spuren zu erzeugen[cite: 14]:

Ausrichtung im Container & Element

Eigenschaft Ebene Achse / Ausrichtung
justify-items Container Horizontale Ausrichtung aller Elemente in ihren Zellen[cite: 14]
align-items Container Vertikale Ausrichtung aller Elemente in ihren Zellen[cite: 14]
justify-self Item Horizontale Ausrichtung eines einzelnen Elements[cite: 14]
align-self Item Vertikale Ausrichtung eines einzelnen Elements[cite: 14]
justify-content Container Horizontale Verteilung der gesamten Spuren im Container[cite: 14]
align-content Container Vertikale Verteilung der gesamten Spuren im Container[cite: 14]

Mögliche Werte: start, end, center, stretch, space-around, space-between, space-evenly[cite: 14].

8. Übersicht aller Grid-Eigenschaften

Container-Eigenschaften Item-Eigenschaften
display: grid \| inline-grid[cite: 14] grid-column (-start / -end)[cite: 14]
grid / grid-template[cite: 14] grid-row (-start / -end)[cite: 14]
grid-template-rows / -columns / -areas[cite: 14] grid-area[cite: 14]
grid-auto-rows / -columns / -flow[cite: 14] justify-self / align-self[cite: 14]
grid-gap (grid-row-gap, grid-column-gap)[cite: 14] order *(nicht Teil des Grid-Moduls)*[cite: 14]
justify-items / align-items[cite: 14] z-index *(nicht Teil des Grid-Moduls)*[cite: 14]
justify-content / align-content[cite: 14]