Rasterspuren-Layout
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Level 3 der Spezifikation für CSS-Grid-Layout definiert das Rasterspuren-Layout, das über die display Werte grid-lanes und inline-grid-lanes zugänglich ist. Dieser Leitfaden erklärt, wie das Rasterspuren-Layout funktioniert und wie Sie es verwenden können.
Das Rasterspuren-Layout ist eine Layoutmethode, bei der eine Achse ein striktes Rasterlayout verwendet und die andere einen Stapelalgorithmus. Jedes Element wird in die Spur mit dem meisten verfügbaren Platz eingefügt, was zu einem dicht gepackten Layout ohne strikte Spuren auf der Stapelachse führt.
Das Rasterspuren-Layout wird oft als Mauerwerkslayout bezeichnet, da es dem ähnelt, wie Ziegel in einer Wand gelegt werden und Lücken so effizient wie möglich füllen.
Erstellen eines Rasterspuren-Layouts
Um das gängigste Rasterspuren-Layout zu erstellen, bei dem die Spalten in einem Raster angeordnet sind und die Reihen mithilfe des Rasterspuren-Layout-Algorithmus gepackt werden, verwenden Sie display: grid-lanes zusammen mit grid-template-columns.
Die Kindelemente dieses Containers werden nach dem Rasterspuren-Layout-Algorithmus Element für Element entlang der Stapelachse angeordnet: Jede Reihe von Elementen wird in die Spalte mit dem meisten Platz geladen, was zu einem dicht gepackten Layout ohne strikte Reihenspuren führt.
.grid {
display: grid-lanes;
gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
<div class="grid">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
// prettier-ignore
const itemSizes = [
"2em", "3em", "1.6em", "4em", "3.2em",
"3em", "4.5em", "1em", "3.5em", "2.8em",
];
const items = document.querySelectorAll(".item");
for (let i = 0; i < items.length; i++) {
items[i].style.blockSize = itemSizes[i];
}
Es ist auch möglich, ein Rasterspuren-Layout mit Elementen zu erstellen, die in Reihen geladen werden.
// prettier-ignore
const itemSizes = [
"2em", "3em", "1.6em", "4em", "2.2em",
"3em", "4.5em", "1em", "3.5em", "2.8em",
];
const items = document.querySelectorAll(".item");
for (let i = 0; i < items.length; i++) {
items[i].style.inlineSize = itemSizes[i];
}
.grid {
display: grid-lanes;
gap: 10px;
grid-template-rows: repeat(3, 100px);
}
Steuerung der Rasterachse
Auf der Rasterachse funktioniert alles so, wie Sie es vom Grid-Layout erwarten. Sie können Elemente mehrere Spuren überspannen lassen, während sie im automatischen Platzierungsmodus bleiben, indem Sie das span-Schlüsselwort verwenden. Elemente können auch über die linienbasierte Positionierung positioniert werden.
Rasterspuren-Layout mit überspannenden Elementen
In diesem Beispiel überspannen zwei der Elemente zwei Spuren, und die verbleibenden Elemente werden durch den Rasterspuren-Layout-Algorithmus darum herum gepackt.
<div class="grid">
<div class="item"></div>
<div class="item span-2"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item span-2"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
.grid {
display: grid-lanes;
gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
.span-2 {
grid-column-end: span 2;
}
Dieses Beispiel enthält ein Element, das eine Positionierung für Spalten hat. Elemente mit definitiver Platzierung werden positioniert, bevor der Rasterspuren-Layout-Algorithmus ausgeführt wird.
<div class="grid">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item positioned">positioned.</div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
.grid {
display: grid-lanes;
gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
.positioned {
padding: 1em;
grid-column: 2 / 4;
}
Spezifikationen
| Spezifikation |
|---|
| CSS Grid Layout Module Level 3> # valdef-display-grid-lanes> |
| CSS Grid Layout Module Level 3> # valdef-display-inline-grid-lanes> |
Browser-Kompatibilität
>css.properties.display.grid-lanes
css.properties.display.inline-grid-lanes
Siehe auch
grid-auto-flowfür die Steuerung der automatischen Rasterplatzierung