====== 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 ==== * **Grid Container & Item:** Das Elternelement und seine direkten Kindelemente[cite: 14]. * **Grid Lines:** Die vertikalen und horizontalen Trennlinien des Rasters[cite: 14]. * **Grid Cell:** Die kleinste Einheit im Raster (eine einzelne Zelle zwischen vier Linien)[cite: 14]. * **Grid Area:** Ein zusammenhängender Bereich aus einer oder mehreren Zellen[cite: 14]. * **Grid Track:** Eine einzelne Spalte oder Zeile im Raster[cite: 14]. * **Achsen:** **Inline Axis** (horizontal) und **Block Axis** (vertikal)[cite: 14]. ===== 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]: * **Feste Längen & Prozente:** z. B. ''px'', ''em'', ''%''[cite: 14]. * **Bruch-Einheiten (Fractional Units - ''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]. * **Inhaltsbasierte Größen:** ''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]. ==== 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; } Wenn Bereiche benannt werden, generiert der Browser implizit Liniennamen mit den Suffixen ''-start'' und ''-end'' (und umgekehrt)[cite: 14]. ===== 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 ==== * ''grid-row-start'' / ''grid-row-end''[cite: 14] * ''grid-column-start'' / ''grid-column-end''[cite: 14] ==== 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]: * **grid-auto-rows / grid-auto-columns:** Legt die Größe automatisch generierter Spuren fest[cite: 14]. * **grid-auto-flow:** Steuert die Fließrichtung (''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]. ===== 7. Abstände & Ausrichtung ===== ==== Abstände (Gaps) ==== 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] ==== 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] | |