Diese Dokumentation behandelt die Grundlagen, Eigenschaften und Ausrichtungsmethoden des CSS Grid Layouts basierend auf den Schulungsunterlagen[cite: 14].
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].
#layout { display: grid; grid-template-rows: 100px 400px 100px; grid-template-columns: 200px 1fr 200px; }
Für die Längenangaben von Spalten und Zeilen stehen verschiedene Einheiten zur Verfügung[cite: 14]:
px, em, %[cite: 14].fr): Verteilt den verfügbaren freien Platz flexibel[cite: 14].minmax(min, max): Schränkt die Größe auf einen Bereich ein (z. B. minmax(15em, 45em))[cite: 14].min-content, max-content und auto[cite: 14].repeat(): Wiederholt Musterspuren (z. B. repeat(5, 20px 1fr))[cite: 14].auto-fill vs. auto-fit: Automatische Berechnung der Wiederholungen. auto-fill behält leere Spuren bei, auto-fit kollabiert leere Spuren[cite: 14].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; }
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>
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; }
Grid Items können anhand von Liniennummern, Liniennamen oder Spannen (span) positioniert werden[cite: 14]:
grid-row-start / grid-row-end[cite: 14]grid-column-start / grid-column-end[cite: 14]#one { /* Start / End */ grid-row: 1 / 2; grid-column: 1 / span 3; }
Wenn Elemente nicht explizit platziert werden, fließen sie automatisch in das Raster ein[cite: 14]:
row oder column)[cite: 14]. Das Schlüsselwort dense füllt Lücken im Raster auf, verändert jedoch evtl. die visuelle Reihenfolge[cite: 14].Abstände werden zwischen den Spuren eingefügt, ohne zusätzliche Spuren zu erzeugen[cite: 14]:
grid-row-gap / row-gap[cite: 14]grid-column-gap / column-gap[cite: 14]grid-gap: 20px 50px; (Zeile Spalte)[cite: 14]| 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].
| 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] |