15. Unterrichtsblock
Inhaltsverzeichnis
CSS Grid-Items
Hauptmenü
Seitenleiste
Hauptinhalt
Weiterer Inhalt
Fußzeile
Festlegung der Spalten
Bevor mit den Grid-Items begonnen werden kann, müssen wir ein Grid-Raster erstellen. Hierzu kommen wir auf die Lektion aus Unterrichtsblock 14. zurück und verwenden die Eigenschaft: grid-template-columns
/* Erstellung eines Rasters mit 6 Spalten */
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto auto auto;
}
Hinweis: Wenn man mehr als 6 Elemente in einem 6-Spalten-Raster hat, wird dem Raster automatisch eine neue Zeile hinzugefügt, um die Elemente zu platzieren.
Die grid-template-columns
-Eigenschaft kann auch verwendet werden, um die Größe (Breite) der Spalten anzugeben.
/* Legt eine Größe für die 4 Spalten fest */
.grid-container {
display: grid;
grid-template-columns: 80px 200px auto 40px;
}
Untergeordnete Elemente (Items)
Ein Grid-Container enthält Grid-Items.
Standardmäßig hat ein Container ein Rasterelement für jede Spalte in jeder Zeile, aber man kann die Rasterelemente (Grid-Items) auch so gestalten, dass sie sich über mehrere Spalten und/oder Zeilen erstrecken.
Grid-Items können mit mehreren Eigenschaften angesteuert werden:
grid-column
grid-row
grid-area
Die grid-column-Eigenschaft:
Die grid-column
Eigenschaft definiert, auf welcher/n Spalte(n) ein Element (Item) platziert werden soll. Man kann somit definieren, wo das Element beginnt und wo das Element endet.
Hinweis: Die
grid-column
Eigenschaft ist eine Kurzformeigenschaft für diegrid-column-start
und diegrid-column-end
Eigenschaften.
Um ein Element zu platzieren, kann man sich auf Spaltennummern beziehen oder das Schlüsselwort „span
“ verwenden, um festzulegen, wie viele Spalten das Element umfassen soll.
/*
"elementA" beginnt in Spalte 1 und endet vor Spalte 5:
*/
.elementA {
grid-column: 1 / 5;
}
/*
"elementB" beginnt in Spalte 1 und umfasst insgesamt 3 Spalten:
*/
.elementB {
grid-column: 1 / span 3;
}
/*
"elementC" beginnt in Spalte 2 soll 3 Spalten umfassen:
*/
.elementC {
grid-column: 2 / span 3;
}
Aufgabe
Baue ein Grid-Raster mit 8 Spalten und 8 Zeilen und teste o.g. Codes.
Die grid-row-Eigenschaft:
Die grid-row
Eigenschaft definiert, in welcher Zeile ein Element platziert werden soll. Man kann somit definieren, wo das Element beginnt und wo das Element endet.
Hinweis: Die
grid-row
Eigenschaft ist eine Kurzformeigenschaft für diegrid-row-start
und diegrid-row-end
Eigenschaften.
Um ein Element zu platzieren, können Sie sich auf Zeilennummern beziehen oder das Schlüsselwort „span
“ verwenden, um zu definieren, wie viele Zeilen das Element umfassen soll:
/*
"elementD" beginnt startet bei Zeile 1 und soll Bei Zeilenlinie 4 enden:
*/
.elementD {
grid-row: 1 / 4;
}
/*
"elementE" soll in Zeile 1 beginnen und sich über 2 Zeilen erstrecken:
*/
.elementE {
grid-row: 1 / span 2;
}
Aufgabe
Baue ein Grid-Raster mit 8 Spalten und 8 Zeilen und teste o.g. Codes.
Die grid-area-Eigenschaft
Die grid-area
Eigenschaft kann als Kurzformeigenschaft für die Eigenschaften grid-row-start
, grid-row-end
, grid-column-start
und grid-column-end
verwendet werden.
A
Element A beginnt in Zeilenlinie 1 und in Spaltenlinie 1 und endet in Zeilenlinie 2 und Spaltenlinie 7.
B
C
D
E
F
G
Element H Hauptinhalt
Element H beginnt in Zeilenlinie 2 und in Spaltenlinie 2 und endet in Zeilenlinie 6 und Spaltenlinie 6.
I
J
K
L
M
N
/*
"elementA" soll in Zeilenlinie 1 und Spaltenlinie 1 beginnen und bei Zeilenlinie 2 und Spaltenlinie 7 enden:
*/
.elementA { Zeilenlinie Start Spaltenlinie Start Zeilenlinie Ende Spaltenlinie Ende
grid-area: 1 / 1 / 2 / 7;
}
/*
".elementC" soll auf Zeilenlinie 2 und Spaltenlinie 6 beginnen und bei Zeilenlinie 4 und Spaltenlinie 7 enden:
*/
.elementC {
grid-area: 2 / 6 / 4 / 7;
}
/*
Hier soll ".elementJ" auf Zeilenlinie 6 und Spaltenlinie 1 beginnen und sich über 1 Zeile und 2 Spalten erstrecken:
*/
.elementJ { Zeilenlinie Start Spaltenlinie Start Erstreckung über Zeilen Erstreckung über Spalten
grid-area: 6 / 1 / span 1 / span 2;
}
Aufgabe
Baue ein Grid-Raster mit 8 Spalten und 8 Zeilen und teste o.g. Codes.
Die Reihenfolge der Items
Das Grid-Layout ermöglicht es auch, die Elemente an beliebiger Stelle zu positionieren. Das erste Element im HTML-Code muss nicht auch als erstes Element im Raster erscheinen.
A
B
C
D
E
F
.elementA { grid-area: 1 / 3 / 2 / 4; }
.elementB { grid-area: 2 / 3 / 3 / 4; }
.elementC { grid-area: 1 / 1 / 2 / 2; }
.elementD { grid-area: 1 / 2 / 2 / 3; }
.elementE { grid-area: 2 / 1 / 3 / 2; }
.elementF { grid-area: 2 / 2 / 3 / 3; }
Man kann die Reihenfolge für bestimmte Bildschirmgrößen ändern, indem man Medienabfragen verwendet:
@media only screen and (max-width: 500px) {
.item1 { grid-area: 1 / span 3 / 2 / 4; }
.item2 { grid-area: 3 / 3 / 4 / 4; }
.item3 { grid-area: 2 / 1 / 3 / 2; }
.item4 { grid-area: 2 / 2 / span 2 / 3; }
.item5 { grid-area: 3 / 1 / 4 / 2; }
.item6 { grid-area: 2 / 3 / 3 / 4; }
}
Aufgabe
Probiere die grid
-Eigenschaften im Code Editor aus
Rasterelemente benennen
Die grid-area
Eigenschaft kann auch verwendet werden, um Rasterelementen Namen zuzuweisen.
Hauptmenü
Seitenleiste
- Punkt 1
- Punkt 2
- Punkt 3
Hauptinhalt
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Weiterer Inhalt
Text Text Text
Fußzeile
Auf benannte Grid-Elemente kann über die grid-template-areas
Eigenschaft des Grid-Containers verwiesen werden.
/*
Element1 erhält den Namen "flaeche" und erstreckt sich über alle fünf Spalten in einem fünfspaltigen Rasterlayout:
*/
.element1 {
grid-area: flaeche;
}
.grid-container {
grid-template-areas: 'flaeche flaeche flaeche flaeche flaeche';
}
<!-- Grid Container, mit der Aufteilung der Template-Areas -->
<div class="grid-container2" style="grid-template-areas:
'kopf kopf kopf kopf kopf kopf'
'navi inhalt inhalt inhalt rechts rechts'
'footer footer footer footer rechts rechts';">
<!--
Jede Zeile wird durch Apostrophe (' ') definiert.
Die Spalten in jeder Zeile werden innerhalb der Apostrophe definiert und durch ein Leerzeichen getrennt.
-->
<!-- Einzelne Grid-Elemente mit der Zuweisung der Template-Areas -->
<div style="grid-area: kopf">
<h3>Hauptmenü</h3>
</div>
<div style="grid-area: navi">
<h3>Seitenleiste</h3>
</div>
<div style="grid-area: inhalt">
<h3>Hauptinhalt</h3>
</div>
<div style="grid-area: rechts">
<h3>Weiterer Inhalt</h3>
</div>
<div style="grid-area: footer; margin-bottom: 0px;">
<h3>Fußzeile</h3>
</div>
</div>
Hinweis: Ein Punktzeichen steht für ein Gridelement ohne Namen.
/*
Hier umfasst "flaeche" zwei Spalten in einem Gridlayout mit insgesamt fünf Spalten (Die Punktzeichen
stehen für Elemente ohne Namen):
*/
.element1 {
grid-area: flaeche;
}
.grid-container {
grid-template-areas:
'flaeche flaeche . . .';
}
Um zwei Zeilen zu definieren, definiert man die Spalte der zweiten Zeile innerhalb eines anderen Satzes von Apostrophen.
/*
"element1" wird zwei Spalten und zwei Zeilen umfassen:
*/
.grid-container {
grid-template-areas:
'flaeche flaeche . . .'
'flaeche flaeche . . .';
}
/*
Benennung aller Elemente und Erstellung einer gebrauchsfertigen Webseitenvorlage:
*/
.element1 { grid-area: kopf; }
.element2 { grid-area: links; }
.element3 { grid-area: inhalt; }
.element4 { grid-area: rechts; }
.element5 { grid-area: footer; }
.grid-container {
grid-template-areas:
'kopf kopf kopf kopf kopf kopf'
'links inhalt inhalt inhalt inhalt rechts'
'footer footer footer footer footer footer';
}
Grid responsive Gestaltung
Aufgaben
Baue die Seite aus Unterrichtsblock 13 anschließend im Grid-Layout und folgenden Eigenschaften:
- Einmal mit grid-area und benannten Elementen
- Einmal mit grid-area und Zeilenlinien und Spaltenlinien
Beide Versionen sollen responsiv sein und die Elemente auf Mobilgeräten untereinander anzeigen.
Wenn o.g. Aufgaben erledigt wurden, wird nochmal das Video aus Unterrichtsblock 11. mit Kopfhörern angesehen.