CSS grid-column Eigenschaft
CSS grid-column Kurzschreibweise meistern: Elemente per Liniennummer, Span, negativem Index oder benannten Linien platzieren. Mit Live-Beispielen.
Die CSS-Eigenschaft grid-column ist eine Kurzschreibweise, die ein Grid-Element entlang der horizontalen (inline) Achse positioniert. Sie legt fest, wo das Element beginnt und wo es endet, wodurch zusammen die Spaltenposition und die Anzahl der überspannten Spalten bestimmt werden. Sie kombiniert die beiden Langformen:
- grid-column-start — die Spaltenlinie, an der das Element beginnt.
- grid-column-end — die Spaltenlinie, an der das Element endet.
Ein Grid wird durch Grid-Linien unterteilt, und grid-column funktioniert, indem auf diese Linien verwiesen wird, nicht auf die Zellen zwischen ihnen. In einem vier-spaltigen Grid gibt es fünf vertikale Linien, nummeriert von 1 bis 5 von links nach rechts (oder von −5 bis −1 vom rechten Rand aus gezählt).
Hinweis:
grid-columnsteuert nur die Platzierung entlang der Spalten. Um ein Element über Zeilen zu positionieren, verwenden Sie grid-row. Um ein Element gleichzeitig nach Zeile und Spalte zu platzieren, verwenden Sie grid-area.
| Anfangswert | auto / auto |
| Gilt für | Grid-Elemente |
| Vererbbar | Nein |
| Animierbar | Ja |
| Spezifikation | CSS Grid Layout Level 1 |
| DOM-Syntax | object.style.gridColumn = "1 / span 3" |
Syntax
/* Two explicit line numbers */
grid-column: <start-line> / <end-line>;
/* Start line + span count */
grid-column: <start-line> / span <number>;
/* Span by named line */
grid-column: span <name>;
/* Single value (sets start; end defaults to auto) */
grid-column: <start-line>;
/* Global keywords */
grid-column: initial | inherit | unset | revert;Wertformen
Es gibt vier gängige Möglichkeiten, grid-column zu schreiben:
| Form | Beispiel | Was es bewirkt |
|---|---|---|
| Zwei Liniennummern | 2 / 4 | Beginnt an Linie 2, endet an Linie 4 (überspannt Spalten 2–3) |
| Start + Anzahl der Spans | 2 / span 2 | Beginnt an Linie 2, überspannt 2 Spalten vorwärts |
| Negative Liniennummer | 1 / -1 | Überspannt von der ersten bis zur letzten Linie (volle Breite) |
| Benannte Linien | content-start / content-end | Verwendet Namen aus grid-template-columns |
| Einzelner Wert | 3 | Setzt grid-column-start: 3; End ist auto (eine Spalte) |
Wenn Sie nur einen Wert angeben (ohne /), wird nur grid-column-start gesetzt; grid-column-end ist standardmäßig auto und platziert das Element in einem einzelnen Spalten-Track.
Wie Grid-Linien nummeriert werden
Grid-Linien werden ab 1 am Startrand gezählt (links in LTR-Layouts). Sie können auch negative Zahlen verwenden, um vom Endrand aus zu zählen, sodass −1 immer auf die letzte Linie verweist, unabhängig davon, wie viele Spalten vorhanden sind.
Column tracks: [ 1 ][ 2 ][ 3 ][ 4 ]
Line numbers: 1 2 3 4 5
Negative: -5 -4 -3 -2 -1Das bedeutet, dass grid-column: 1 / -1 ein Element immer über die gesamte Breite des expliziten Grids erstreckt, unabhängig von der Spaltenanzahl.
Beispiele
Ein Element mit expliziten Liniennummern platzieren
Box 6 wird zwischen den Spaltenlinien 2 und 4 platziert und überspannt damit die Spalten 2 und 3.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #666;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
.box6 {
grid-column: 2 / 4;
}
</style>
</head>
<body>
<h2>Grid-column property example</h2>
<div class="grid-container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
<div class="box7">7</div>
</div>
</body>
</html>
Das erste Element mit 1 / 3 platzieren
Box 1 wird bei grid-column: 1 / 3 platziert und belegt damit die ersten zwei Spalten-Tracks.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #888;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.box1 {
grid-column: 1 / 3;
}
</style>
</head>
<body>
<h2>Grid-column property example</h2>
<div class="grid-container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
<div class="box7">7</div>
</div>
</body>
</html>span und ein Element mit voller Breite (1 / -1) verwenden
Das Schlüsselwort span ist nützlich, wenn Sie wissen, wie viele Spalten abgedeckt werden sollen, aber nicht die abschließende Liniennummer kennen. Eine negative Endlinie (-1) erreicht immer die letzte Spaltenlinie und lässt das Element die gesamte Breite des expliziten Grids einnehmen.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.grid-container {
display: grid;
grid-template-columns: auto auto auto auto;
gap: 10px;
background-color: #ccc;
padding: 10px;
}
.grid-container > div {
background-color: #4caf50;
color: #fff;
text-align: center;
padding: 20px 0;
font-size: 20px;
}
.featured {
grid-column: 1 / span 2; /* starts at line 1, covers 2 columns */
}
.full-width {
grid-column: 1 / -1; /* spans the whole explicit grid */
}
</style>
</head>
<body>
<h2>span and full-width example</h2>
<div class="grid-container">
<div class="featured">Featured (2 cols)</div>
<div>B</div>
<div>C</div>
<div>D</div>
<div class="full-width">Full width (1 / -1)</div>
</div>
</body>
</html>Elemente mit benannten Linien platzieren
Sie können Grid-Linien in grid-template-columns mit der eckigen-Klammer-Syntax benennen und diese Namen dann in grid-column referenzieren. Dies macht Layouts lesbarer und unempfindlicher gegenüber Änderungen der Spaltenanzahl.
<!DOCTYPE html>
<html>
<head>
<title>Named grid lines</title>
<style>
.grid-container {
display: grid;
/* Names the lines around the middle two columns */
grid-template-columns:
[full-start] 1fr
[content-start] 2fr 2fr
[content-end] 1fr
[full-end];
gap: 10px;
background-color: #eee;
padding: 10px;
}
.grid-container > div {
background-color: #5c6bc0;
color: #fff;
text-align: center;
padding: 20px 0;
font-size: 18px;
}
.sidebar {
grid-column: full-start / content-start; /* first column only */
}
.main {
grid-column: content-start / content-end; /* middle two columns */
}
.aside {
grid-column: content-end / full-end; /* last column only */
}
</style>
</head>
<body>
<h2>Named lines example</h2>
<div class="grid-container">
<div class="sidebar">Sidebar</div>
<div class="main">Main content</div>
<div class="aside">Aside</div>
</div>
</body>
</html>Werte
| Wert | Beschreibung |
|---|---|
<line-number> | Eine ganzzahlige Liniennummer (positiv zählt vom Startrand, negativ vom Endrand). |
<line-name> | Ein benutzerdefinierter Name, der in grid-template-columns festgelegt wurde. |
span <number> | Überspannt die angegebene Anzahl von Spalten-Tracks. |
span <name> | Überspannt bis zur nächsten Linie mit dem angegebenen Namen. |
auto | Der Browser platziert das Element automatisch (Standard). |
initial | Setzt auf den Standardwert zurück (auto / auto). |
inherit | Erbt den berechneten Wert vom übergeordneten Element. |
unset | Verhält sich wie inherit, wenn die Eigenschaft vererbbar ist, andernfalls wie initial. |
Häufige Fallstricke
1 / -1überspannt nur das explizite Grid. Wenn Elemente im impliziten Grid platziert werden (zusätzliche Zeilen/Spalten, die der Browser automatisch erstellt), erstreckt sich eine negative Endlinie nicht in diese Tracks. Definieren Sie zuerst das vollständige Grid mitgrid-template-columns.spanohne Startlinie. Das Schreiben vongrid-column: span 3setzt nurgrid-column-end: span 3; der Start istauto, sodass der Browser ihn bestimmt. Dies ist gültig, aber die Platzierung hängt von der Auto-Flow-Reihenfolge ab.- Benannte-Linien-Suche. Wenn Sie auf einen Namen verweisen, der nicht in der Vorlage existiert, behandelt der Browser ihn als
auto. Überprüfen Sie den Namen ingrid-template-columnsimmer sorgfältig. - Kurzschreibweise mit Einzelwert.
grid-column: 3setzt den Start auf Linie 3 und das End aufauto— nicht auf Linie 4. Das Element belegt genau einen Spalten-Track, es sei denn, das automatisch platzierte Ende überspannt zufällig mehr.
Verwandte Eigenschaften
- grid-column-start und grid-column-end — die beiden Langformen, die
grid-columnzusammenfasst. - grid-row — das vertikale Äquivalent; gleiche Syntax, auf Zeilen angewendet.
- grid-area — Zeilen- und Spaltenplatzierung in einer einzigen Deklaration festlegen.
- grid-template-columns — definiert die Spalten-Tracks und benannten Linien, auf die
grid-columnverweist. - grid-template-rows — definiert Zeilen-Tracks und benannte Linien für grid-row.
- grid-auto-columns — steuert die Größe implizit erstellter Spalten-Tracks.
- grid — die umfassende Grid-Kurzschreibweise.