Masonry-Layout: CSS- und JS-Ansätze
Erstellen Sie Pinterest-ähnliche Masonry-Grids mit CSS column-count und JavaScript-Fallback-Strategien.
Masonry-Layout: CSS- und JS-Ansätze ist eine kostenlose CSS Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CSS Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CSS Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Masonry-Layout?
Ein Masonry-Layout platziert Elemente in Spalten, wobei jedes Element den nächsten verfügbaren vertikalen Platz ausfüllt, ähnlich wie bei Pinterest. Die Spalten sind gleich breit, die Elemente unterschiedlich hoch. Das Ergebnis ist ein dichtes, visuell dynamisches Grid ohne ungenutzten Leerraum zwischen den Zeilen.
CSS-Grid-Masonry (experimentell)
Chrome und Firefox unterstützen hinter einem Flag grid-template-rows: masonry. Die Elemente werden in Spalten platziert, aber die Zeilen an ihre Inhaltshöhe angepasst, sodass Elemente mit variabler Höhe lückenlos angeordnet werden können. Dies ist die zukünftige native Lösung.
<div class="grid">
<div>1</div><div>2</div><div>3</div><div>4</div>
</div>Ansatz mit CSS-Spalten
CSS-Spalten erzeugen ein Masonry-ähnliches Layout: columns: 3; column-gap: 1rem. Die Elemente fließen automatisch innerhalb jeder Spalte von oben nach unten. Einschränkung: Die Elemente werden spaltenweise angeordnet (oben in Spalte 1, oben in Spalte 2 …), nicht zeilenweise, was sich auf Lesereihenfolge und Barrierefreiheit auswirkt.
Spaltenumbrüche vermeiden
Verhindern Sie, dass Elemente über Spalten hinweg geteilt werden: break-inside: avoid bei jedem Element. Ohne diese Einstellung kann eine hohe Karte auf zwei Spalten verteilt und der Inhalt halbiert werden. Fügen Sie dies bei der Verwendung von CSS-Spalten für kartenartige Inhalte immer hinzu.
JavaScript-Masonry-Bibliotheken
Masonry.js (von David DeSandro) positioniert absolut positionierte Elemente neu, indem es Spaltenhöhen berechnet und jedes Element in der kürzesten Spalte platziert. Isotope erweitert dies um Sortieren und Filtern. Beide benötigen JavaScript, um Positionen zu berechnen und anzuwenden.
Hybrid aus CSS Grid und JS
Ein leichtgewichtiger Ansatz: Definieren Sie ein Grid mit festen Spalten und 1-Pixel-Zeilen und verwenden Sie dann JS, um bei jedem Element abhängig von seiner Inhaltshöhe bzw. Zeilenhöhe grid-row-end: span N festzulegen. Die Elemente behalten ihre Ausrichtung an den Grid-Zeilen bei und erreichen dennoch variable Höhen.
ResizeObserver für Neuberechnungen
Masonry-Positionen werden veraltet, wenn sich die Fenstergröße ändert oder Bilder geladen werden. Verwenden Sie ResizeObserver, um Größenänderungen zu erkennen und eine Neuberechnung auszulösen. Entprellen Sie Neuberechnungen, um bei schnellen Größenänderungen übermäßigen Rechenaufwand zu vermeiden.
Bildladen und Layoutstabilität
Bilder mit unbekannter Höhe führen dazu, dass Masonry nach dem Laden neu berechnet wird. Geben Sie bei allen Bildern explizite Attribute für Breite und Höhe an, damit der Browser vor dem Laden Platz reserviert. Dadurch werden Positionsverschiebungen verhindert und die Anzahl der Neuberechnungen verringert.
Infinite Scroll mit Masonry
Das Anhängen von Elementen an ein Masonry-Layout erfordert nur die Neuberechnung der betroffenen Spalten (der neuen Elemente), nicht des gesamten Grids. Bibliotheken wie Masonry.js unterstützen Animationen für angehängte Elemente und ein inkrementelles Layout ohne vollständige Neuanordnung bei jedem neuen Stapel.
Überlegungen zur Barrierefreiheit
Die visuelle Reihenfolge eines Masonry-Layouts unterscheidet sich bei per JavaScript positionierten Layouts von der DOM-Reihenfolge. Stellen Sie sicher, dass die Tab-Reihenfolge der DOM-Reihenfolge (der logischen Lesereihenfolge) und nicht der visuellen Position folgt. Setzen Sie tabindex sorgfältig ein oder verlassen Sie sich bei der Tastaturnavigation auf den natürlichen DOM-Fluss.
Kompromisse bei CSS-only-Masonry
CSS-Spalten: einfach, ohne JS, aber mit spaltenweiser statt zeilenweiser Lesereihenfolge und ohne Filtern oder Sortieren. Grid-Masonry: derzeit noch nicht produktionsreif unterstützt. JS-Masonry: voll ausgestattet, erhöht jedoch den Aufwand und verursacht eine Verzögerung beim Rendern, da die Positionen erst nach dem Laden der Inhalte berechnet werden.
Wissenscheck
Welche CSS-Eigenschaft verhindert, dass eine Karte über zwei CSS-Spalten hinweg geteilt wird?
Zusammenfassung
Ein Masonry-Layout lässt sich mit CSS-Spalten (einfach, aber spaltenweise angeordnet), dem experimentellen grid-template-rows: masonry (zukunftsweisend) oder JavaScript-Bibliotheken wie Masonry.js (voll ausgestattet mit Sortieren und Filtern) umsetzen. Jeder Ansatz bringt Kompromisse zwischen Einfachheit, Barrierefreiheit und Funktionsumfang mit sich.
Häufig gestellte Fragen
Ist die Lektion „Masonry-Layout: CSS- und JS-Ansätze“ kostenlos?
Ja — der vollständige Text von „Masonry-Layout: CSS- und JS-Ansätze“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CSS Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CSS Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Masonry-Layout: CSS- und JS-Ansätze“?
Erstellen Sie Pinterest-ähnliche Masonry-Grids mit CSS column-count und JavaScript-Fallback-Strategien. Du übst CSS Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um CSS Academy zu starten?
Keine Vorkenntnisse erforderlich. CSS Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Masonry-Layout: CSS- und JS-Ansätze“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser CSS Academy-Lektion Code schreiben und ausführen?
Ja. Jede CSS Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Layout mit Sticky-Footer und Sidebar
- Holy-Grail-Layout mit Grid
- Masonry-Layout: CSS- und JS-Ansätze
- Intrinsisches Design: inhaltsgesteuerte Größen