IT-Kurs CSS-Grundlagen 031_Rasterlayout Grid
Rasterlayout Grid
Ein Raster besteht aus einer Reihe von horizontalen und vertikalen Linien, die ein Layoutmuster bilden. Basierend auf dem Raster können wir Designelemente anordnen, um uns beim Entwerfen einer Reihe von Seiten mit Elementen fester Position und Breite zu helfen, wodurch unsere Website-Seiten einheitlicher werden.
Ein Raster verfügt in der Regel über viele Spalten (columns) und Zeilen (rows) sowie Abstände zwischen Zeilen und Spalten, die im Allgemeinen als Rinnen (gutter) bezeichnet werden.

Grundkonzepte
Das Grid-Layout besteht aus folgenden Grundkonzepten:
- Grid-Container (grid container): Das Grid-Layout besteht aus Grid-Containern und Grid-Items. Der Grid-Container ist der Container, der Grid-Items im Raster platziert. Der Grid-Container kann jedes Element sein, üblicherweise wird jedoch das
div-Element verwendet. - Grid-Item (grid item): Grid-Items sind Elemente, die im Grid-Container platziert werden. Grid-Items können beliebige Elemente sein, üblicherweise werden jedoch
div-Elemente verwendet. - Grid-Linie (grid line): Grid-Linien sind Linien, die den Grid-Container in Zeilen und Spalten unterteilen. Grid-Linien können horizontale oder vertikale Linien sein.
- Grid-Spalte (grid column): Grid-Spalten sind vertikale Linien im Grid-Container.
- Grid-Zeile (grid row): Grid-Zeilen sind horizontale Linien im Grid-Container.
Häufig verwendete Eigenschaften
Grid-Container-Eigenschaften
Der Grid-Container verfügt über folgende Eigenschaften zur Steuerung des Grid-Layouts:
display: Legt den Anzeigemodus des Grid-Containers fest. Der Grid-Container muss aufdisplay: gridoderdisplay: inline-gridgesetzt sein, um das Grid-Layout zu verwenden.grid-template-columns: Legt die Anzahl der Spalten und Spaltenbreiten des Grid-Containers fest (mit Einheiten wiefr,px,emusw.).grid-template-rows: Legt die Anzahl der Zeilen und Zeilenhöhen des Grid-Containers fest (mit Einheiten wiefr,px,emusw.).grid-template: Setzt gleichzeitiggrid-template-columnsundgrid-template-rows.grid-auto-columns: Legt die Spaltenbreiten des Grid-Containers fest.grid-auto-rows: Legt die Zeilenhöhen des Grid-Containers fest.
Grid-Item-Eigenschaften
Grid-Items verfügen über folgende Eigenschaften zur Steuerung des Layouts von Grid-Items im Raster:
grid-column: Legt die Spalte fest, in der sich das Grid-Item befindet.grid-row: Legt die Zeile fest, in der sich das Grid-Item befindet.grid-column-start: Legt die Startposition des Grid-Items in der Spalte fest.grid-column-end: Legt die Endposition des Grid-Items in der Spalte fest.grid-row-start: Legt die Startposition des Grid-Items in der Zeile fest.grid-row-end: Legt die Endposition des Grid-Items in der Zeile fest.grid-area: Legt den Bereich fest, in dem sich das Grid-Item befindet.grid-gap: Legt den Abstand zwischen Grid-Linien fest.
Rasterlayout
Festlegen von festen und adaptiven Spaltenbreiten und Zeilenhöhen
Beispiel:
.grid-example{ display: grid; grid-template-columns: 100px 200px auto; /* Erste Spalte 100px, zweite Spalte 200px, verbleibender Platz für adaptive Spalte */ grid-template-rows: 100px 200px auto; /* Erste Zeile 100px, zweite Zeile 200px, verbleibender Platz für adaptive Zeile */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> </div>Effekt:
Verwendung von Prozentsätzen zur Definition von Spaltenbreiten und Zeilenhöhen
Beispiel:
.grid-example{ display: grid; grid-template-columns: 30% 2fr 1fr; /* Erste Spalte 30%, zweite Spalte zwei Teile des verbleibenden Platzes, dritte Spalte ein Teil des verbleibenden Platzes */ grid-template-rows: 30% 2fr 1fr; /* Erste Zeile 30%, zweite Zeile zwei Teile des verbleibenden Platzes, dritte Zeile ein Teil des verbleibenden Platzes */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> </div>Effekt:
Gleichmäßige Aufteilung (durchschnittliche Zuteilung) von Spaltenbreiten und Zeilenhöhen
Beispiel:
.grid-example{ display: grid; grid-template-columns: repeat(3, 1fr); /* Drei gleiche Spalten, jede Spalte nimmt ein Teil des verbleibenden Platzes ein */ grid-template-rows: repeat(3, 1fr); /* Drei gleiche Zeilen, jede Zeile nimmt ein Teil des verbleibenden Platzes ein */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> </div>Effekt:
Verwendung von minmax zur Definition der minimalen und maximalen Breite und Höhe von Spalten und Zeilen
Beispiel:
.grid-example{ display: grid; grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr); /* Erste Spalte minimale Breite 100px, nimmt ein Teil des verbleibenden Platzes ein; zweite Spalte minimale Breite 200px, nimmt zwei Teile des verbleibenden Platzes ein */ grid-template-rows: minmax(100px, 1fr) minmax(200px, 2fr); /* Erste Zeile minimale Höhe 100px, nimmt ein Teil des verbleibenden Platzes ein; zweite Zeile minimale Höhe 200px, nimmt zwei Teile des verbleibenden Platzes ein */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> </div>Effekt:

Rasterabstände
Rasterabstände werden durch die beiden Eigenschaften grid-row-gap und grid-column-gap gesteuert. Darüber hinaus wurde in CSS Grid Level 2 die gap-Eigenschaft eingeführt, die gleichzeitig grid-row-gap und grid-column-gap steuern kann.
Beispiel:
.grid-example{ display: grid; grid-template-columns: 30% 30% 30%; grid-template-rows: 200px 200px; grid-row-gap: 50px; /* Zeilenabstand 50px */ grid-column-gap: 30px; /* Spaltenabstand 30px */ /* gap: 50px 30px; Zeilenabstand 50px, Spaltenabstand 30px */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> <div class="item">Grid-Demo</div> </div>Effekt:

Rasterpositionierung
Rasterpositionierung bezieht sich in der Regel auf die Verwendung von Eigenschaften wie grid-column, grid-row und grid-area zur Positionierung von Items im Grid-Layout. Diese Eigenschaften werden verwendet, um anzugeben, welche Spalten und Zeilen ein Item im Raster einnimmt, oder um direkt den Bereich anzugeben, in dem sich das Item befindet.
grid-columnist eine Eigenschaft zum Festlegen der Spalten, die ein Grid-Item überspannt. Es ist eine Abkürzung fürgrid-column-startundgrid-column-end. Mitgrid-columnkönnen Sie bequemer die Position und die Anzahl der überspannten Spalten eines Grid-Items in horizontaler Richtung definieren.grid-rowist eine Eigenschaft zum Festlegen der Zeilen, die ein Grid-Item überspannt. Es ist eine Abkürzung fürgrid-row-startundgrid-row-end. Mitgrid-rowkönnen Sie bequemer die Position und die Anzahl der überspannten Zeilen eines Grid-Items in vertikaler Richtung definieren.- Die
grid-area-Eigenschaft ist eine Abkürzungseigenschaft zum gleichzeitigen Festlegen der Eigenschaftengrid-row-start,grid-column-start,grid-row-endundgrid-column-end. Mitgrid-areakönnen Sie intuitiver die Position und Größe eines Grid-Items im Grid-Layout definieren.
Beispiel:
.example { display: grid; grid-template-columns: repeat(3, 1fr); /* Definiert 3 Spalten, jede Spalte nimmt 1 Teil Platz ein */ grid-template-rows: repeat(2, 150px); /* Definiert 2 Zeilen, jede Zeile hat eine Höhe von 150px */ gap: 10px; padding: 20px;}.item { background-color: #f2f2f2; padding: 20px; border: 1px solid #ddd; text-align: center;}/* Positionierung mit grid-column und grid-row */.item1 { grid-column: 1 / 3; /* Von Spalte 1 bis Spalte 3 (1+2 Spalten) */ grid-row: 1 / 2; /* Von Zeile 1 bis Zeile 2 (1 Zeile) */}/* Positionierung mit grid-area */.item2 { grid-area: 2 / 2 / 3 / 4; /* Von Zeile 2, Spalte 2 bis Zeile 3, Spalte 4 (2 Zeilen) (2+3 Spalten) */}<div class="example"> <div class="item item1">Item 1</div> <div class="item item2">Item 2</div> <div class="item">Item 3</div> <div class="item">Item 4</div> <div class="item">Item 5</div> <div class="item">Item 6</div></div>Effekt:

Beispiel:
body { margin: 0; padding: 0;}
.container { display: grid; grid-template-columns: 1fr 2fr; /* Definiert zwei Spalten, erste Spalte nimmt ein Teil, zweite Spalte nimmt zwei Teile */ grid-template-rows: auto; /* Definiert Zeilenhöhe, erste und dritte Zeile Höhe wird durch Inhalt bestimmt, zweite Zeile nimmt verbleibenden Platz */ grid-template-areas: "header header" "sidebar main" "footer footer"; /* Definiert Bereichslayout, jeder Bereich wird durch eine Zeichenfolge dargestellt, Leerzeichen trennen Zellen, Zeilenumbruch stellt neue Zeile dar */ min-height: 100vh; /* Setzt minimale Höhe, stellt sicher, dass footer auch bei Inhaltshöhe kleiner als Viewport sichtbar bleibt */}
.header { grid-area: header; /* Platziert .header im Bereich namens "header" */ background-color: #333; color: #fff; padding: 10px;}
.sidebar { grid-area: sidebar; /* Platziert .sidebar im Bereich namens "sidebar" */ background-color: #f2f2f2; padding: 10px;}
.main { grid-area: main; /* Platziert .main im Bereich namens "main" */ padding: 10px;}
.footer { grid-area: footer; /* Platziert .footer im Bereich namens "footer" */ background-color: #333; color: #fff; padding: 10px;} <div class="container"> <div class="header">Header</div> <div class="sidebar">Sidebar</div> <div class="main"> <h1>Main Content</h1> <p>This is the main content area.</p> </div> <div class="footer">Footer</div> </div>Effekt:
