Communitygithub.com

Masonry-Grid-Layout-System

Entwerfe und implementiere ein systematisches, mehrspaltiges Masonry-Grid-Layout, das Karten mit variabler Höhe lückenlos und unter Einhaltung einer strengen visuellen Hierarchie, logischer Lese- und Fokus-Reihenfolge sowie der WCAG-AA-Barrierefreiheit anordnet.

Was ist Masonry-Grid-Layout-System?

Das Masonry Grid Layout System ist ein standardisiertes, responsives Design-Framework, das speziell für die Darstellung von nicht-uniformen, höhenvariablen Inhaltskarten entwickelt wurde – wie Fotografie-Portfolios, benutzergenerierte Content-Feeds, Mixed-Media-Karten oder redaktionelle Pinnwände. Es löst die fundamentale Herausforderung, Elemente dynamisch in parallele Spalten zu packen, dabei Cumulative Layout Shift (CLS) beim Laden von Medien zu verhindern, eine fließende Reduzierung der Spaltenanzahl auf mobilen Geräten zu gewährleisten und – entscheidend – die visuelle Anordnung nicht mit der logischen DOM-Lese- und Tastatur-Navigationsreihenfolge zu brechen (WCAG 2.1 SC 1.3.2, SC 2.1.1). Das System unterstützt drei Architekturstrategien: reines CSS-Mehrspalten-Layout (`column-count`) für statische Galerien, CSS-Grid mit Zeilenspannen (`grid-auto-rows`) für semistatische Raster, und eine JavaScript-basierte Kürzeste-Spalte-Verteilung für hochinteraktive Feeds. Es bietet Entscheidungsregeln zur Auswahl der richtigen Strategie, detaillierte Workflows zur Definition von Abständen, CLS-Prävention und Fokus-Management, sowie Validierungskriterien für Barrierefreiheit und Performance. Die Skill ist für Entwickler konzipiert, die mit Frontend-Frameworks, CSS und JavaScript arbeiten und eine barrierefreie, performante Masonry-Grid-Umsetzung benötigen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/coastdigitalgroup/coastai-skills/tree/HEAD/website-design/masonry-grid-layout-system

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Masonry-Grid-Layout-System?

Zweck

Das Masonry-Grid-Layout-System bietet ein standardisiertes, responsives Design-Framework zur Darstellung von nicht-einheitlichen, höhenvariablen Inhaltskarten (wie Fotografie-Portfolios, benutzergenerierte Content-Feeds, Mixed-Media-Karten oder redaktionelle visuelle Entdeckungsboards). Standard-CSS-Grid-Layouts erzwingen eine Ausrichtung der Zeilenhöhen, was bei Elementen mit unterschiedlichen Seitenverhältnissen oder Textlängen zu unschönen vertikalen Leerräumen führt.

Die Entwicklung eines effektiven Masonry-Grids erfordert die Lösung der räumlichen Herausforderung, Elemente dynamisch in parallele vertikale Spalten zu packen, Cumulative Layout Shift (CLS) beim Laden von Medien zu verhindern, eine fließende Reduzierung der Spaltenanzahl auf mobilen Geräten zu gewährleisten und – entscheidend – zu verhindern, dass das visuelle Layout die logische DOM-Lesereihenfolge und die Tastaturfokus-Navigationssequenz stört (WCAG 2.1 SC 1.3.2 und SC 2.1.1).

Anwendungsfälle

  • Fotografie & Visuelle Medien-Portfolios: Darstellung von Galerien mit Bildern unterschiedlicher nativer Seitenverhältnisse (Hochformat, Querformat, Quadrat, Panorama) in einem dichten, lückenlosen Raster.
  • Social & UGC-Aktivitätsfeeds: Organisation gemischter Social-Karten mit kurzen Text-Updates, vollständigen Artikeln, eingebetteten Bildern und Video-Teasern.
  • E-Commerce UGC & Bewertungswände: Präsentation von Kundenbewertungsfotos, getaggten Instagram-Beiträgen und Produkt-Highlight-Ausschnitten in einer dynamischen Entdeckungsgalerie.
  • Redaktionelle Entdeckungsboards & Pinnwände: Erstellung von Moodboards, Lesezeichen-Managern und Inspirationsfeeds, bei denen Karten vielfältige Inhaltselemente mit unterschiedlichem vertikalem Platzbedarf enthalten.

Wann NICHT zu verwenden

  • Einheitliche Seitenverhältnis-Raster: Wenn alle Elemente identische Seitenverhältnisse haben (z. B. standardmäßige 16:9-Videokarten oder 1:1-Produktkataloge), verwenden Sie responsive-grid-system oder card-ui-system.
  • Strukturierte 2D-asymmetrische Highlights: Für kuratierte Hero-Bereiche mit expliziten 2D-rechteckigen Spanning-Regeln (z. B. ein 2x2-Hauptfeature neben 1x1-Statistikblöcken) verwenden Sie bento-grid-layout-system.
  • Strikte tabellarische oder ausgerichtete Daten: Wenn Benutzer Werte über horizontale Zeilen hinweg vergleichen müssen (z. B. Preistabellen oder Finanzkennzahlen), verwenden Sie data-table-ui-system oder comparison-matrix-system.
  • Sequentielles Storytelling & Artikel: Für lineare Erzählungen, bei denen die Lesereihenfolge streng einem einzigen vertikalen Fluss folgen muss, verwenden Sie article-layout-system oder section-composition-system.

Eingaben

  1. Inventar der Inhalte & Seitenverhältnisse: Arten von Medien- und Textinhalten (Bilder, Videos, Textausschnitte, Aktionskarten) und ihr Spektrum an Seitenverhältnissen (von 3:4 Hochformat bis 16:9 Querformat).
  2. Anforderungen an die Spaltenarchitektur: Zielspaltenanzahlen für verschiedene Bildschirmgrößen (z. B. 4 Spalten auf Breitbild-Desktop, 3 auf Desktop, 2 auf Tablet, 1 auf Mobilgeräten).
  3. Interaktivitäts- & Fokusanforderungen: Interaktive Elemente innerhalb der Karten (Schaltflächen, Lightboxen, Inline-Toggles, Links), die Tastaturzugänglichkeit erfordern.
  4. Raum- & Theme-Tokens: Fließende Spaltenabstände (gap: clamp(12px, 2vw, 24px)), Kartenhintergründe, Rahmenradien und Fokusring-Tokens (aus fluid-spacing-system und focus-indicator-design-system).

Ausgaben

  1. Spezifikation der Masonry-Layout-Architektur: Strategische Wahl und technischer Bauplan zwischen reinem CSS-Mehrspaltenfluss, CSS-Grid-Zeilenspannen (grid-auto-rows) und JavaScript-basierter Kürzeste-Spalte-Verpackung.
  2. Responsive Spaltenskalierungsmatrix: Breakpoint-Definition für fließende Übergänge der Spaltenanzahl und Skalierung der Abstände.
  3. DOM-Lesereihenfolge & Tastaturfokus-Karte: Architektur, die sicherstellt, dass die Tastaturnavigation (Tab / Shift+Tab) der natürlichen visuellen Lesereihenfolge folgt, ohne chaotische Spaltensprünge.
  4. Layout-Stabilitäts- & Seitenverhältnis-Erhaltungsregeln: CSS-Architektur zur Vermeidung von Cumulative Layout Shift (CLS) beim Laden von Bildern und Medien.

Workflow

1. Auswahl der Architekturstrategie

Wählen Sie die geeignete Layout-Technik basierend auf den Anforderungen an Interaktivität und Lesereihenfolge:

  • Option A: Reines CSS-Mehrspalten-Layout (column-count)
    • Am besten geeignet für: Statische Galerien, bildlastige Feeds oder nicht-interaktive Karten, bei denen die Flussreihenfolge vertikal durch Spalte 1, dann Spalte 2 usw. verlaufen kann.
    • Implementierung: column-count: 4; column-gap: var(--space-m);. Setzen Sie break-inside: avoid; margin-bottom: var(--space-m); auf den Kind-Karten.
    • Nachteil: Vertikale Quellreihenfolge (von oben nach unten innerhalb der Spalten) kann Tastaturbenutzer verwirren, wenn Karten interaktive Steuerelemente enthalten.
  • Option B: CSS-Grid mit Zeilenspannen (grid-auto-rows & grid-row: span X)
    • Am besten geeignet für: Semistatische Raster, bei denen die Kartenschritte in feste Zeilenspuren quantisiert werden können (z. B. 10px Basisspuren).
    • Implementierung: display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); grid-auto-rows: 10px; gap: 16px;. JavaScript berechnet die Inhaltshöhe und wendet grid-row: span Math.ceil(height / trackHeight) an.
    • Nachteil: Native horizontale DOM-Reihenfolge bleibt erhalten, erfordert jedoch geringfügige JS-Höhenberechnungen oder Container-Queries.
  • Option C: JavaScript-Verteilung auf die kürzeste Spalte
    • Am besten geeignet für: Hochinteraktive Mixed-Media-Feeds, bei denen eine von links nach rechts verlaufende Lesereihenfolge von größter Bedeutung ist und Karten Links, Schaltflächen und Formularsteuerelemente enthalten.
    • Implementierung: Erstellen Sie $N$ Flex-Spaltencontainer (display: flex; flex-direction: column; gap: var(--space-m);). Hängen Sie eingehende Karten an die Spalte an, die derzeit die kürzeste gesamte gerenderte Höhe aufweist.
    • Nachteil: Erfordert clientseitiges DOM-Container-Management, garantiert aber eine perfekte von links nach rechts verlaufende DOM-Fokus-Reihenfolge und keine visuellen vertikalen Lücken.

2. Definition des räumlichen Rhythmus und der Spaltenabstände

Legen Sie konsistente Abstands-Tokens für alle Spalten und den inneren Kartenabstand fest:

  • Spaltenabstände: Verwenden Sie fließende Abstände (z. B. gap: clamp(16px, 2.5vw, 28px)). Stellen Sie sicher, dass die vertikalen Abstände zwischen gestapelten Karten den horizontalen Spaltenabständen entsprechen, um eine gleichmäßige räumliche Dichte zu gewährleisten.
  • Karten-Padding & innere Ausrichtung: Standardisieren Sie das interne Karten-Padding mit fließenden Tokens (padding: var(--space-m)). Erlauben Sie bei reinen Medienkarten (z. B. Lightbox-Trigger), dass Bilder randlos dargestellt werden (padding: 0; overflow: hidden;).
  • Synchronisation der Eckenradien: Wenden Sie konsistente border-radius auf die äußeren Kartencontainer an (z. B. 12px bis 16px). Stellen Sie sicher, dass innere Elemente (z. B. obere Bilder) konzentrische Eckenradien erben (border-top-left-radius: calc(var(--card-radius) - 1px)).

3. Vermeidung von Layout-Shift (CLS) und Bildverzerrungen

Masonry-Grids sind während des Bildladens sehr anfällig für Cumulative Layout Shift:

  • Seitenverhältnis-Boxen: Deklarieren Sie explizit aspect-ratio auf Bildcontainern (aspect-ratio: 4 / 5; object-fit: cover; width: 100%; display: block;) oder berechnen Sie Inline-Padding-Verhältnisse, bevor Medien aufgelöst werden.
  • Skeleton-Platzhalter: Rendern Sie gestylte Skeleton-Hintergrundpulse (background: var(--surface-subtle); animation: pulse 1.5s infinite;), die dem erwarteten Seitenverhältnis der Karte entsprechen, während entfernte Assets geladen werden.
  • Bild-Lade-Listener: Wenn Sie JS-Höhenberechnungen verwenden, binden Sie ResizeObserver oder Bild-load-Ereignis-Listener ein, um die Höhenzuweisungen der Spalten neu zu berechnen, sobald die Bilder fertig gerendert sind.

4. Abgleich von DOM-Lesereihenfolge und Fokus-Management

Stellen Sie die Einhaltung von WCAG 1.3.2 (Bedeutungsvolle Reihenfolge) und 2.1.1 (Tastatur) sicher:

  • Vermeidung visueller DOM-Diskonnektierung: Wenn Sie CSS-Spalten verwenden, bei denen das visuelle Layout vertikal durch die Spalten fließt, stellen Sie sicher, dass die Tastaturfokus-Indikatoren deutlich und logisch bleiben. Wenn Karten interaktive Steuerelemente enthalten, bevorzugen Sie die JavaScript-Verteilung auf die kürzeste Spalte oder CSS-Grid-Zeilenspannen, um eine natürliche von links nach rechts und von oben nach unten verlaufende Tab-Reihenfolge (Tab-Taste) zu erhalten.
  • Sichtbarkeit des Fokus-Indikators: Standardisieren Sie kontrastreiche, unbeschnittene Fokus-Indikatoren (outline: 3px solid var(--focus-ring-color); outline-offset: 3px;). Vermeiden Sie overflow: hidden auf Karten, ohne ausreichend Fokus-Indikator-Padding innerhalb der Beschnittgrenzen hinzuzufügen.
  • Tastaturkürzel für Lightboxes / Modals: Wenn das Klicken auf eine Masonry-Karte ein modales Overlay oder eine Lightbox öffnet, fangen Sie den Tastaturfokus innerhalb des Overlays (focus-trap) und geben Sie den Fokus nach dem Schließen (Escape-Taste) an die auslösende Karte zurück.

5. Implementierung der responsiven Spaltenskalierung

Entwerfen Sie Breakpoints, um die Spaltenanzahl fließend zu skalieren, ohne das Inhaltsgleichgewicht zu brechen:

  • Breitbild-Desktop (≥ 1440px): 4 Spalten (column-count: 4 oder 4 Flex-Spaltenspuren).
  • Standard-Desktop (1024px – 1439px): 3 Spalten (column-count: 3 oder 3 Flex-Spaltenspuren).
  • Tablet / Kleiner Bildschirm (640px – 1023px): 2 Spalten (column-count: 2 oder 2 Flex-Spaltenspuren).
  • Mobilgeräte (< 640px): 1 Spalte (column-count: 1 oder einzelner vertikaler Stapel). Alle Elemente stapeln sich natürlich mit standardmäßigen vertikalen Abständen.

Entscheidungsregeln

Architektur-Auswahlmatrix

Inhalts- & InteraktionstypEmpfohlene ArchitekturstrategieBegründung
Reine Bildergalerie (Lightbox-Trigger)CSS-Mehrspalten (column-count)Null JS-Footprint, native Browser-Mehrspaltenleistung, saubere vertikale Bild-Masonry.
Interaktive Karten (Schaltflächen, Eingaben, Links)JS-Flex-Verteilung auf kürzeste SpalteBewahrt strikte von-links-nach-rechts DOM-Tab-Reihenfolge und verhindert Screenreader- und Tastaturfokus-Sprünge.
Dynamisch ladender Feed (Infinite Scroll)CSS-Grid-Zeilenspannen oder JS-SpaltenverteilungErmöglicht das flüssige Anhängen neuer Karten an die kürzeste Spalte, ohne das gesamte Seitenlayout neu zu fließen.
Textlastiges redaktionelles PinnboardCSS-Grid-Zeilenspannen (grid-auto-rows: 10px)Bewahrt die horizontale Lesereihenfolge und berücksichtigt gleichzeitig präzise variable Textlängen.

Einschränkungen

  • Barrierefreiheit (WCAG 2.1 AA-Konformität):
    • SC 1.3.2 Bedeutungsvolle Reihenfolge: Die visuelle Anordnung interaktiver Karten muss logisch mit der Tastatur-Tab-Navigationsreihenfolge übereinstimmen (tabindex="0" Fokusfluss).
    • SC 1.4.3 Kontrast (Minimum): Text auf Kartenoberflächen oder Bildüberlagerungen muss ein minimales Kontrastverhältnis von 4,5:1 erfüllen. Für Text direkt auf Bildern müssen dunkle Verdunkelungs-Overlays (background: linear-gradient(to top, rgba(0,0,0,0.8), transparent)) verwendet werden.
    • SC 2.1.1 Tastatur: Alle interaktiven Kartenelemente (wie Schaltflächen, Lesezeichen-Trigger, externe Links) müssen vollständig über die Space- und Enter-Tasten bedienbar sein.
    • SC 2.4.7 Fokus sichtbar: Interaktive Karten und Trigger müssen einen deutlich sichtbaren Fokusring anzeigen, der nicht durch overflow: hidden-Eigenschaften des übergeordneten Kartenelements abgeschnitten wird.
    • SC 2.5.8 Zielgröße: Alle Berührungsziele in Masonry-Karten müssen eine minimale interaktive Fläche von 24x24px (mindestens 44x44px auf Touch-/Mobil-Viewports) aufweisen.
  • Layout-Shift-Performance: Bilder in Masonry-Karten müssen explizit definierte intrinsische Seitenverhältnisse oder Dimensionsreservierungen haben, um sicherzustellen, dass der CLS unter 0,1 bleibt.

Häufige Fehlermuster

  • Das Tastatur-Tab-Durcheinander: Verwendung von CSS column-count für interaktive Karten, wodurch die Tab-Taste vertikal die gesamte erste Spalte (von Element 1 bis Element 10) durchläuft, bevor sie nach oben an den Anfang von Spalte 2 springt.
  • Cumulative Layout Shift (CLS)-Chaos: Einfügen von Bildern ohne Seitenverhältnis-Styling oder Lade-Skeletons, wodurch die Masonry-Spalten bei jedem Laden eines Bildes neu fließen und springen.
  • Abgeschnittene Fokusringe: Setzen von overflow: hidden auf Masonry-Karten, um abgerundete Bildecken zu erzwingen, was den standardmäßigen Umriss-Fokusring interaktiver innerer Elemente abschneidet.
  • Unbegrenzte Spaltenhöhen auf Mobilgeräten: Fehlschlag, Masonry-Grids auf Mobilgeräten auf eine einzelne Spalte zu reduzieren, was zu extrem schmalen, gequetschten mehrspaltigen Karten mit unleserlichem Textumbruch führt.
  • Ungleiche Spaltenhöhen: Anhängen neuer Elemente in dynamischen Feeds sequentiell über Spalten hinweg (1, 2, 3, 1, 2, 3), anstatt die Spaltenhöhen zu überprüfen, was zu massiven vertikalen Leerräumen am unteren Rand kürzerer Spalten führt.

Validierungskriterien

  • Architektur-Ausrichtung: Die gewählte Strategie (CSS-Spalten vs. CSS-Grid-Zeilenspanne vs. JS-Kürzeste-Spalte) entspricht den Interaktivitätsanforderungen der Karten.
  • Keine unbeabsichtigten vertikalen Lücken: Karten packen dicht ohne horizontale Ausrichtung von Leerraumlücken.
  • Tastatur-Tab-Navigation: Interaktive Karten folgen einer logischen visuellen Tab-Reihenfolge (von links nach rechts, von oben nach unten).
  • Layout-Shift-Prävention: Seitenverhältnisse oder Skeleton-Container verhindern CLS (<0,1) beim Laden von entfernten Medien.
  • Responsive Breakpoint-Anpassung: Das Raster skaliert fließend von 4 Spalten auf Breitbild bis zu einer einzigen vertikalen Spalte auf Mobilgeräten (<640px).
  • WCAG-AA-Konformität: Aller Text erfüllt ≥4,5:1 Kontrast, Berührungsziele erfüllen ≥24x24px (≥44x44px auf Mobilgeräten) und Fokusringe sind unbeschnitten und deutlich sichtbar.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for progressive disclosure using accordions, ensuring structural integrity, visual affordances, and accessibility across different content densities and devices.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for long-form content, managing readability, vertical rhythm, and information density to ensure a superior reading experience.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for informational elements that communicate state (Badges) and categorization (Tags) with clarity and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for non-overlay notifications, managing global announcements and contextual inline alerts to communicate system states without interrupting the user's flow.

coastdigitalgroup/coastai-skills

Design and implement a systematic, asymmetrical bento-grid layout framework to organize diverse content types cohesively while maintaining strict visual hierarchy, logical focus order, and responsive flexibility.

coastdigitalgroup/coastai-skills

Design a responsive, mobile-first bottom navigation bar and persistent action dock system for mobile websites and web applications, establishing spatial anchors, tab bar anatomy, badge indicators, thumb-zone ergonomics, safe area inset handling, active/inactive state contrast, and desktop responsive adaptation rules.

coastdigitalgroup/coastai-skills

Design a mobile-first bottom sheet overlay system with configurable detents, drag affordances, safe area padding, responsive desktop modal/popover adaptation, and WCAG AA accessibility compliance.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for secondary navigation trails that provide orientation, context, and one-click access to parent levels in deep information architectures.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for buttons and interactive triggers, managing visual hierarchy, variant logic, and action grouping to ensure clear intent and accessible interaction.

coastdigitalgroup/coastai-skills

Design a systematic framework for date and time selection, managing calendar grids, range pickers, and scheduling interfaces to ensure precision and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for modular content containers that maintain hierarchy, structural integrity, and action alignment across variable content and responsive viewports.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for horizontal discovery components, managing navigation affordances, scroll behavior, and accessibility to ensure effective content density without compromising usability.

coastdigitalgroup/coastai-skills

Design a systematic, highly accessible, and developer-friendly UI layout framework for code blocks, snippet showcases, multi-file code tabs, line-highlighting, diff views, and syntax token contrast in technical documentation and developer platforms.

coastdigitalgroup/coastai-skills

Design a systematic framework for global command menus (Cmd+K panels) that combines keyboard-driven navigation, command execution, and shortcut discovery into an accessible, responsive overlay.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for threaded conversations, managing nesting depths, action hierarchies, and community signaling to foster engagement and readability.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for side-by-side comparison interfaces, managing high attribute density and responsive complexity to support informed decision-making.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for user privacy, managing consent banners, preference centers, and persistent privacy controls to balance legal compliance with user trust.

coastdigitalgroup/coastai-skills

Design and implement a systematic, highly accessible, and responsive visual layout framework for conversational chat widgets, live chat boxes, and chatbot panels that ensures clear message scannability, native focus flow, and seamless mobile keyboard adaptation.

coastdigitalgroup/coastai-skills

Design a systematic, accessible, and high-conversion framework for custom select dropdowns and comboboxes, defining anatomy, states, search-filtering, and responsive mobile-adaptive patterns.

coastdigitalgroup/coastai-skills

Design and implement a systematic color palette that ensures WCAG 2.2 accessibility compliance. Trigger this skill when asked to define brand colors, create UI themes, or establish a visual system for a website.

Verwandte Skills