CSS-Eigenschaften im Zusammenhang mit dem Rasterlayout
Dieser Artikel erklärt CSS-Eigenschaften im Zusammenhang mit dem Rasterlayout.
Sie können lernen, wie man Raster und Inline-Raster beschreibt.
YouTube Video
HTML zur Vorschau
css-grid.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-grid.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Layout</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Layout Related Properties</h2>
20 </header>
21 <article>
22 <h3>grid</h3>
23 <section style="width: 100%; height: 350px;">
24 <header><h4>display: grid; grid-template-columns: 100px 200px auto; grid-template-rows: 100px auto 50px;</h4></header>
25 <section class="sample-view">
26 <div class="grid-box">
27 <div class="grid-item">Item 1</div>
28 <div class="grid-item">Item 2</div>
29 <div class="grid-item">Item 3</div>
30 <div class="grid-item">Item 4</div>
31 <div class="grid-item">Item 5</div>
32 <div class="grid-item">Item 6</div>
33 </div>
34 </section>
35 </section>
36 <section style="width: 100%; height: 550px;">
37 <header><h4>display: grid; grid-template-columns: 120px 1fr 80px; grid-template-rows: 100px 1fr 100px;</h4></header>
38 <section class="sample-view">
39 <div class="grid-container" style="color: #666;">
40 <header class="grid-header">Header</header>
41 <aside class="grid-sidebar">Sidebar</aside>
42 <article class="grid-content">
43 <p>Content</p>
44 </article>
45 <aside class="grid-ads">Ads</aside>
46 <footer class="grid-footer">Footer</footer>
47 </div>
48 </section>
49 </section>
50 </article>
51 <article>
52 <h3>gap</h3>
53 <section style="height: 300px;">
54 <header><h4>display: grid; gap: 30px 10px;</h4></header>
55 <section class="sample-view">
56 <div class="gap-grid-container">
57 <div>Item 1</div>
58 <div>Item 2</div>
59 <div>Item 3</div>
60 <div>Item 4</div>
61 <div>Item 5</div>
62 <div>Item 6</div>
63 </div>
64 </section>
65 </section>
66 <section>
67 <header><h4>display: flex; gap: 50px;</h4></header>
68 <section class="sample-view">
69 <div class="gap-flex-container">
70 <div>Item 1</div>
71 <div>Item 2</div>
72 <div>Item 3</div>
73 </div>
74 </section>
75 </section>
76 </article>
77 <article>
78 <h3>grid-template-areas</h3>
79 <section style="height: 350px;">
80 <header><h4>grid-template-areas: "header header" "sidebar content" "footer footer";</h4></header>
81 <section class="sample-view">
82 <div class="grid-template-areas-container">
83 <div class="grid-template-areas-header">Header</div>
84 <div class="grid-template-areas-sidebar">Sidebar</div>
85 <div class="grid-template-areas-content">Content</div>
86 <div class="grid-template-areas-footer">Footer</div>
87 </div>
88 </section>
89 </section>
90 </article>
91 <article>
92 <h3>inline-grid</h3>
93 <section>
94 <header><h4>display: inline-grid</h4></header>
95 <section class="sample-view">
96 Here is an inline grid:
97 <span class="inline-grid-container">
98 <div class="inline-grid-item">1</div>
99 <div class="inline-grid-item">2</div>
100 <div class="inline-grid-item">3</div>
101 <div class="inline-grid-item">4</div>
102 </span>
103 This is contained within a paragraph.
104 </section>
105 </section>
106 </article>
107 </main>
108</body>
109</html>
Rasterlayout
grid
1.grid-box {
2 display: grid;
3 grid-template-columns: 100px 200px auto;
4 grid-template-rows: 100px auto 50px;
5 gap: 10px;
6 background-color: lightblue;
7 border: none;
8 height: 200px;
9}
10
11.grid-item {
12 background-color: lightskyblue;
13 width: 100%;
14 padding: 0;
15 text-align: center;
16 border: 2px solid black;
17}
Ein Raster ist ein Layoutsystem zur Ausrichtung von Elementen in zweidimensionalen Zeilen und Spalten. Mit einem Raster können Sie einfach und flexibel komplexe Layouts erstellen, die mit herkömmlichen float
- oder position
-Methoden schwierig waren. Während Flexbox bei eindimensionalen Layouts hervorragend ist, eignet sich das Raster für zweidimensionale Layouts.
- Die Klasse
grid-box
wendet ein Rasterlayout an, indem siegrid
in derdisplay
-Eigenschaft angibt. Dieses Element wird als Rastercontainer bezeichnet. - Die Eigenschaft
grid-template-columns
legt die Breite der Rasterspalten fest. In diesem Beispiel ist die erste Spalte 100px breit, die zweite Spalte 200px und die dritte Spalte nimmt den verbleibenden Platz ein (auto
). - Die Eigenschaft
grid-template-rows
legt die Höhe der Rasterzeilen fest. Die erste Zeile ist 100px hoch, die zweite Zeile ist automatisch (auto
) und die dritte Zeile ist 50px hoch. - Die Eigenschaft
gap
legt den Abstand zwischen Rasterelementen fest. 10px Abstand zwischen Spalten und Zeilen hinzufügen.
Grundlegende Terminologie
- Ein Rastercontainer ist ein Element, bei dem die
display
-Eigenschaft aufgrid
gesetzt ist, und dessen Kinder werden zu Rasterelementen. - Rasterelemente sind die unter einem Rastercontainer direkt platzierten Kindelemente.
Wichtige Rastereigenschaften
grid-template-columns
& grid-template-rows
1.container {
2 grid-template-columns: 1fr 2fr 1fr;
3}
- Die Eigenschaften
grid-template-columns
undgrid-template-rows
definieren die Größe jeder Spalte und Reihe. - Es können Einheiten wie
px
und%
sowiefr
(Anteil) verwendet werden, um ein Verhältnis des verbleibenden Platzes anzugeben.- In diesem Beispiel gibt es drei Spalten, und die zweite Spalte ist doppelt so breit wie die anderen.
grid-column
& grid-row
1.container {
2 display: grid;
3 grid-template-columns: repeat(4, 1fr); /* 4 columns */
4 grid-template-rows: repeat(3, 100px); /* 3 rows */
5}
6
7.item {
8 grid-column: 2 / 4;
9 grid-row: 1 / 3;
10}
grid-column
undgrid-row
geben an, in welcher Spalte oder Zeile das Gitterelement platziert wird.- In diesem Beispiel erstreckt sich das Element von der 2. Spalte bis zur 4. Spalte und von der 1. Zeile bis zur 3. Zeile.
grid-auto-rows
& grid-auto-columns
1.container {
2 display: grid;
3 grid-template-rows: 100px 200px; /* Explicitly define 2 rows */
4 grid-template-columns: 1fr 2fr; /* Explicitly define 2 columns */
5 grid-auto-rows: 150px; /* Automatically added rows will be 150px */
6 grid-auto-columns: 100px; /* Automatically added columns will be 100px */
7}
8
9.item {
10 grid-column: 3; /* Positioned in the 3rd column (auto-generated) */
11 grid-row: 3; /* Positioned in the 3rd row (auto-generated) */
12}
grid-auto-rows
undgrid-auto-columns
sind Eigenschaften, die die Größe von Zeilen und Spalten steuern, die automatisch erzeugt werden, wenn Gitterlinien oder -spalten nicht explizit definiert sind.- In diesem Beispiel sind 2 Zeilen und 2 Spalten explizit definiert, aber wenn weitere Elemente hinzugefügt werden, werden neue Zeilen oder Spalten entsprechend den Vorgaben von
grid-auto-rows
undgrid-auto-columns
automatisch erzeugt.
- In diesem Beispiel sind 2 Zeilen und 2 Spalten explizit definiert, aber wenn weitere Elemente hinzugefügt werden, werden neue Zeilen oder Spalten entsprechend den Vorgaben von
justify-items
& align-items
1.container {
2 justify-items: center; /* Center items horizontally */
3 align-items: center; /* Center items vertically */
4}
- Richten Sie Gitterelemente horizontal (
justify-items
) und vertikal (align-items
) aus.
grid-area
1/* grid-area syntax
2grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
3*/
4.item {
5 grid-area: 1 / 2 / 3 / 4;
6}
grid-area
gibt an, in welchem Bereich des Grid-Containers das Grid-Element platziert werden soll.- In diesem Beispiel bedeutet dies, dass der Bereich von der 1. Zeile bis zur 3. Zeile und von der 2. Spalte bis zur 4. Spalte belegt wird.
gap
1.container {
2 gap: 10px 20px; /* 10px space between rows, 20px space between columns */
3}
gap
fügt Abstände zwischen Spalten und Zeilen hinzu. Sie können die Abstände zwischen Spalten und Zeilen auch individuell mitcolumn-gap
undrow-gap
festlegen.
grid-auto-flow
1.container {
2 grid-auto-flow: column; /* Add items in the column direction */
3}
grid-auto-flow
ist eine Eigenschaft, die die Richtung festlegt, in der Elemente platziert werden, entweder nach Zeilen oder nach Spalten.
Beispiel für komplexe Layouts
1.grid-container {
2 display: grid;
3 grid-template-columns: 120px 1fr 80px;
4 grid-template-rows: 50px 1fr 50px;
5 gap: 10px;
6 background-color: transparent;
7 border: none;
8 height: 400px;
9}
10
11.grid-header {
12 grid-column: 1 / 4;
13 background-color: lightblue;
14}
15
16.grid-sidebar {
17 grid-column: 1 / 2;
18 grid-row: 2 / 3;
19 height: 100%;
20 background-color: lightslategray;
21 color: white;
22}
23
24.grid-content {
25 grid-column: 2 / 3;
26 grid-row: 2 / 3;
27 background-color: lightskyblue;
28}
29
30.grid-content p {
31 margin: 0;
32 padding: 0;
33 height: 260px;
34}
35
36.grid-ads {
37 grid-column: 3 / 4;
38 grid-row: 2 / 3;
39 height: 100%;
40 background-color: lightsteelblue;
41}
42
43.grid-footer {
44 grid-column: 1 / 4;
45 background-color: lightgray;
46}
Auf diese Weise ermöglicht es Grid, ein komplettes Webseiten-Layout mit einfachem Code zu erstellen.
- In diesem Beispiel gibt es drei Spalten (Seitenleiste, Hauptinhalt und Werbung) und drei Zeilen (Kopfzeile, Inhalt und Fußzeile).
- Die Kopf- und Fußzeile nehmen die gesamte Breite der Seite ein, wobei der Inhalt in der Mitte liegt und die Seitenleiste und die Werbung sich an beiden Seiten befinden.
Vorteile von Rasterlayouts
Die Vorteile des Rasterlayouts umfassen die folgenden Punkte:.
- Einfache zweidimensionale Layouts: Durch die Verwaltung des Layouts in Zeilen und Spalten können auch komplexe Layouts mit weniger Code umgesetzt werden.
- Kompatibel mit responsivem Design: Das Rastersystem erleichtert das Erstellen responsiver Designs, die sich an unterschiedliche Bildschirmgrößen anpassen.
Eigenschaft gap
1.gap-grid-container {
2 display: grid;
3 grid-template-columns: repeat(3, 1fr);
4 gap: 30px 10px;
5 background-color: transparent;
6 border: none;
7 height: 200px;
8}
9
10.gap-grid-container div {
11 width: 100px;
12 background-color: lightskyblue;
13}
14
15.gap-flex-container {
16 display: flex;
17 gap: 50px;
18}
19
20.gap-flex-container div {
21 width: 80px;
22 background-color: lightgreen;
23}
Die Eigenschaft gap
wird in Raster- und Flexbox-Layouts verwendet, um den Abstand (Lücken) zwischen Elementen festzulegen. Mit dieser Eigenschaft können Sie leicht Abstände zwischen den Kindelementen einfügen.
- In der Klasse
gap-grid-container
wird ein Abstand von30px
vertikal und10px
horizontal zwischen den einzelnen Elementen festgelegt. Da ein Raster mit 3 Spalten durchgrid-template-columns
erstellt wird, werden Abstände vertikal und horizontal zwischen den Elementen angewendet. In der Klassegap-flex-container
wird ein Abstand von50px
zwischen den drei Elementen im Flexbox angewendet.
Grundlegende Syntax
1.container {
2 display: grid; /* or flex */
3 gap: <row-gap> <column-gap>;
4}
- Der
row-gap
gibt den Abstand zwischen den Zeilen an. Dies ist der vertikale Abstand in Raster- oder Flex-Layouts. - Der
column-gap
gibt den Abstand zwischen den Spalten an. Dies ist der horizontale Abstand.
Wenn keine zwei Werte angegeben sind, wird ein Wert sowohl auf row-gap
als auch auf column-gap
angewendet.
Vorteile der Eigenschaft gap
Die Vorteile der Eigenschaft gap
umfassen Folgendes:.
- Einfache Abstandseinstellung: Der Code zum Festlegen der Abstände zwischen Kindelementen wird einfacher, da zusätzliche Margen oder Abstände zwischen den Elementen nicht erforderlich sind.
- Flexible Anpassung: Es unterstützt problemlos responsives Design und ermöglicht flexible Designanpassungen.
Eigenschaft grid-template-areas
1.grid-template-areas-container {
2 display: grid;
3 grid-template-columns: 1fr 2fr; /* 2 columns */
4 grid-template-rows: auto auto; /* 2 rows */
5 grid-template-areas:
6 "header header"
7 "sidebar content"
8 "footer footer"; /* In the 3rd row, the footer spans across */
9 gap: 10px;
10 height: 250px;
11}
12
13.grid-template-areas-container div {
14 width: 100%;
15 height: 100%;
16}
17
18.grid-template-areas-header {
19 grid-area: header; /* Placed in the "header" area */
20 background-color: lightblue;
21}
22
23.grid-template-areas-sidebar {
24 grid-area: sidebar; /* Placed in the "sidebar" area */
25 background-color: lightslategray;
26}
27
28.grid-template-areas-content {
29 grid-area: content; /* Placed in the "content" area */
30 background-color: lightskyblue;
31}
32
33.grid-template-areas-footer {
34 grid-area: footer; /* Placed in the "footer" area */
35 background-color: lightsteelblue;
36}
Die Eigenschaft grid-template-areas
bietet eine Möglichkeit, Bereiche innerhalb eines Rastercontainers zu benennen und diese Namen zu verwenden, um Rasterelemente einfach zu positionieren. Die Verwendung dieser Eigenschaft ermöglicht visuell intuitive Layoutdefinitionen.
Elemente, die in benannten Bereichen positioniert sind, die von der Eigenschaft grid-template-areas
angegeben werden, sollten denselben Namen mit der Eigenschaft grid-area
zugewiesen bekommen. Selbst wenn Elemente mehrere Zellen umfassen, werden sie automatisch korrekt positioniert.
In diesem Beispiel wird das Raster wie folgt erstellt:.
- In der ersten Zeile wird "header" über zwei Spalten platziert.
- "Sidebar" wird in der zweiten Zeile links und "content" rechts platziert.
- "Footer" wird in der dritten Zeile über zwei Spalten platziert.
Grundlegende Verwendung
1grid-template-areas:
2 "area1 area2 area3"
3 "area1 area4 area5";
In der Eigenschaft grid-template-areas
wird der Name des Bereichs für jede Zeile angegeben. Indem Elemente in Bereiche mit zugewiesenen Namen platziert werden, können Sie Layouts einfach erstellen.
- In diesem Beispiel wird ein Raster mit 2 Zeilen und 3 Spalten erstellt, und jede Zelle wird als area1
, area2
usw. benannt.
Leere Zellen mit .
definieren
1grid-template-areas:
2 "header header header"
3 "sidebar . content"
4 "footer footer footer";
Wenn Sie leere Zellen in Ihrem Layout haben möchten, können Sie diese durch einen Punkt (.
) darstellen.
- Wie in diesem Beispiel wird die zweite Spalte leer, indem ein Punkt (.
) zwischen sidebar
und content
angegeben wird.
Vorteile der Eigenschaft grid-template-areas
Zu den Vorteilen der Eigenschaft grid-template-areas
gehören die folgenden Punkte:.
- Visuelles Layout: Es ermöglicht Ihnen, das Layout visuell darzustellen, was das Verständnis des Designs erleichtert.
- Einfache Verschiebung von Elementen: Sie können das Layout der Elemente einfach anpassen, indem Sie die Bereichsdefinitionen im CSS ändern, ohne das HTML zu modifizieren.
Notizen
Beim Verwenden der Eigenschaft grid-template-areas
ist es wichtig, auf die folgenden Punkte zu achten:.
- Die Anzahl der Namen in jeder Zeile muss mit der Anzahl der definierten Spalten übereinstimmen.
- Wenn Sie denselben Namen mehreren Zellen zuweisen, werden diese Zellen zusammengeführt, aber bei der Zuweisung zu verschiedenen Zeilen oder Spalten muss der Bereich quadratisch sein.
inline-grid
1.inline-grid-container {
2 display: inline-grid;
3 grid-template-columns: 1fr 1fr;
4 gap: 5px;
5 background-color: lightblue;
6}
7.inline-grid-item {
8 background-color: lightskyblue;
9 width: 50px;
10 padding: 0;
11 margin: 0;
12}
inline-grid
ist einer der Werte der CSS-Eigenschaft display
. Durch Anwenden dieser Eigenschaft verhält sich das Element wie ein Inline-Container und erstellt intern einen Grid-Formatierungskontext. Im Gegensatz zu display: grid
verhält es sich wie ein Inline-Element im Dokumentfluss.
Anwendungsfälle für inline-grid
inline-grid
ist nicht so verbreitet wie grid
, kann aber in bestimmten Szenarien effektiv eingesetzt werden.
-
Grid im Inline-Kontext: Praktisch, wenn Sie ein Grid neben Textinhalten oder anderen Inline-Elementen platzieren möchten. Zum Beispiel ist es nützlich, wenn eine Grid-Struktur für Buttons, Abzeichen, Labels usw. benötigt wird, diese aber inline angezeigt werden soll, ohne den Textfluss zu stören.
-
Layoutsteuerung in Inline-Elementen: Selbst bei komplexen Layouts in Inline-Elementen wie Links, Buttons oder Spans kann
inline-grid
die interne Struktur mit einem Grid-Layout verwalten, ohne Block-Darstellung zu verwenden.
1<button class="inline-grid">
2 <span>Icon</span>
3 <span>Text</span>
4</button>
In diesem Fall zeigt der Button Symbole und Text in einem Grid an, bleibt jedoch inline im Dokumentfluss.
- Responsive Inline-Komponenten:
inline-grid
kann für kleine Komponenten verwendet werden, die Teil von Inline-Inhalten sind und ein Grid-Layout erfordern. Zum Beispiel ist es geeignet für Inline-Formulare, Abzeichen, Produktetiketten usw., bei denen Sie das Layout mit einem Grid anpassen möchten, während es inline bleibt.
Ausrichtung und Größenanpassung von inline-grid
1.inline-grid {
2 display: inline-grid;
3 vertical-align: middle;
4}
- Wie andere Inline-Elemente respektiert
inline-grid
die vertikale Ausrichtung in Bezug auf den umgebenden Inhalt. Sie können die Ausrichtung des Grids mit der Eigenschaftvertical-align
steuern.
1.inline-grid {
2 display: inline-grid;
3 width: 200px;
4 height: 100px;
5}
- In Bezug auf die Größe nimmt ein
inline-grid
-Element nur die Breite ein, die für seinen Grid-Inhalt erforderlich ist. Falls erforderlich, können Sie die Breite, Höhe sowie die Mindest- und Höchstmaße explizit festlegen.
1.inline-grid {
2 display: inline-grid;
3 grid-template-columns: auto 1fr;
4}
Es ist auch möglich, dass das Layout des Grids selbst die Größe des inline-grid
-Containers bestimmt, und diese Tendenz ist stärker, wenn flexible Einheiten wie fr
, auto
und Prozentsätze verwendet werden.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.