CSS Grid Lanes
(webkit.org)- In Safari Technology Preview 234 wurde mit Grid Lanes eine neue CSS-Funktion eingeführt, um Masonry-Layouts im Web umzusetzen
- Mit der Eigenschaft
display: grid-laneslassen sich responsive Grids ohne Media Queries erstellen, und mitgrid-template-columnskönnen flexible Spalten definiert werden - Über die Eigenschaft
item-tolerancelässt sich die Empfindlichkeit der Platzierung anpassen, um visuelle Ungleichgewichte durch unterschiedliche Inhaltsgrößen zu verringern - Sowohl Spalten- als auch Zeilenrichtung werden unterstützt; je nach Definition von
grid-template-columnsodergrid-template-rowswird der Fluss automatisch bestimmt - Die CSS Working Group diskutiert noch einige Detailnamen von Eigenschaften, während das WebKit-Team Standardisierung und Implementierung parallel vorantreibt und Entwickler zum Experimentieren ermutigt
Überblick über CSS Grid Lanes
- Grid Lanes ist ein neuer Anzeigemodus, um Layouts im Masonry-Stil nativ mit CSS im Web umzusetzen
- Mit
display: grid-laneswird es mit einer Syntax verwendet, die dem bestehendengridähnelt - Mit
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr))lassen sich flexible Spalten mit einer Mindestbreite von 250px erzeugen
- Mit
- Mit der Eigenschaft
gapwird der Abstand zwischen Elementen festgelegt, wodurch sich das Layout ohne Media Queries an alle Bildschirmgrößen anpasst - In Safari Technology Preview 234 experimentell nutzbar, inklusive einer Demo-Seite von WebKit
So funktioniert Grid Lanes
- Der Browser platziert jedes Element automatisch in der obersten verfügbaren Spalte
- Ähnlich wie bei Masonry.js wird das nächste Element der aktuell kürzesten Spalte hinzugefügt
- Beim Navigieren per Tab können Nutzer die sichtbaren Inhalte horizontal erkunden
- Beim Laden von Infinite-Scroll-Inhalten ist auch ohne JavaScript eine automatische Anordnung möglich
Erweiterungen von CSS Grid
- Unterschiedliche Lane-Größen: Mit der
grid-template-*-Syntax lassen sich schmale und breite Spalten abwechselnd anordnen- Beispiel:
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr)
- Beispiel:
- Unterstützung für Span von Elementen
- Bestimmte Elemente können sich über mehrere Spalten erstrecken (
grid-column: span 4usw.) - Beispiel-Demo: ein Layout im Stil von Zeitungsartikeln
- Bestimmte Elemente können sich über mehrere Spalten erstrecken (
- Explizite Platzierung ist möglich
- Beispiel:
header { grid-column: -3 / -1; }, um den Header an den letzten Spalten zu fixieren
- Beispiel:
Richtungswechsel
- Unterstützt sowohl spaltenbasierte (waterfall) als auch zeilenbasierte (brick) Layouts
- Bei Definition von
grid-template-columnswird automatisch die Spaltenrichtung gesetzt, beigrid-template-rowsdie Zeilenrichtung
- Bei Definition von
grid-auto-flow: normalist der Standardwert und wird entsprechend der definierten Richtung automatisch interpretiert- Die CSS Working Group diskutiert derzeit Bezeichnungen für Eigenschaften zur Flusssteuerung (
grid-lanes-directionusw.)- Die entsprechenden Diskussionen laufen in einem GitHub-Issue von CSSWG-drafts
Anpassung der Platzierungsempfindlichkeit: item-tolerance
item-tolerancebestimmt, wie streng Größenunterschiede bei der Platzierung von Elementen unterschieden werden- Der Standardwert ist
1em; kleinere Unterschiede werden als gleiche Höhe behandelt - Je höher der Wert, desto weniger bewegen sich Elemente seitlich, je niedriger, desto feiner wird ihre Position angepasst
- Der Standardwert ist
- Aus Sicht der Barrierefreiheit sollte ein geeigneter Wert gewählt werden, um visuelle Sprünge beim Tab-Navigieren zu minimieren
- Der Eigenschaftenname ist derzeit als
item-tolerancedefiniert, könnte aber inflow-toleranceoderpack-tolerancegeändert werden
Experimente und Anwendungsbeispiele
- In Safari Technology Preview 234 werden mehrere Demos bereitgestellt
- Fotogalerien, zeitungsartige Artikel, Museumsseiten, Mega-Menü-Layouts usw.
- Beispielcode:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(max-content, 24ch)); column-gap: 4lh; } - Nicht nur für Bilder nützlich, sondern auch für Footer oder Menüs mit vielen Links
Ausblick
- Die CSS Working Group arbeitet noch an der Festlegung der verbleibenden Eigenschaftsnamen
- Das WebKit-Team verfolgt seit Mitte 2022 parallel Implementierung und Standardisierung
- Entwickler werden dazu ermutigt, Demos zu erstellen und Feedback zu geben
- Jen Simmons sammelt Rückmeldungen über Bluesky und Mastodon
- Die grundlegende Syntax ist inzwischen stabil, sodass die Vorbereitung für den Einsatz in realen Projekten abgeschlossen ist
2 Kommentare
Dann muss man ja Grid-lanes für Safari und
gridfür Firefox getrennt verwenden. Bitte bringt das doch etwas mehr mit dem Webstandard in Einklang ...Hacker-News-Kommentare
Ein Applaus für das Safari-Team. Dass sie im Oktober plötzlich ganz nach oben in der Interop-2025-Rangliste geschossen sind, ist wirklich erstaunlich
field-sizinghinzu, die das Problem löst, dass Text-Eingabefelder nicht automatisch mit dem Inhalt mitwachsenIch hoffe, dass CSS Gap Decorations bald kommt. Es nervt, weiter unnötige Hacks verwenden zu müssen, um hübsche Trennlinien zwischen Flex- oder Grid-Items zu bauen
Ich habe in einem aktuellen Projekt ein Masonry-Layout verwendet; die Performance ist okay, aber weil es auf absolute positioning basiert, ist es ziemlich hacky. Man muss das Seitenverhältnis der Objekte vorher kennen und beim Resize neu berechnen. Deshalb hoffe ich auf baldigen nativen Support
Solche Ankündigungen sind cool, aber sie haben auch etwas von einer tragischen Komödie. Weil Apple den Browser nicht kontinuierlich aktualisiert, dauert es sehr lange, bis man neuen Features in der Praxis wirklich vertrauen und sie einsetzen kann
Masonry-Layouts sehen zwar gut aus, aber ich finde, sie machen es schwer, die Bilder als Ganzes auf einen Blick zu erfassen
Ich frage mich, warum man es nicht einfach Masonry genannt hat. Andererseits ist der Name grid-lanes beschreibend und dadurch leichter zu verstehen
Ich frage mich, wie lange es dauert, bis LLMs diese neue CSS-Syntax präzise lernen
Wenn ich mir eine Webseite mit einem Text-Grid aus beliebigen Größen und Positionen anschauen müsste, wäre es mir lieber, jemand würde mich erschießen
Demo-Bild eines zeitungsartigen Grids
Ich persönlich mag Lane-Layouts nicht. Es ist schwer, alle Elemente einer Liste der Reihe nach zu betrachten, und der Blick springt ständig nach oben und unten, was kognitiv ermüdend ist
Ich finde, Apple sollte Safari auf allen Plattformen zuverlässig zum Download anbieten