Eike-Christian Ramcke

Von Eike-Christian Ramcke  ·  Redaktion CSS & Frontend

Aktualisiert: Juni 2026

Technik

grid-template-areas: Benannte Bereiche für wartbare Layouts

9 Min. Lesezeit · Juni 2026

Mit grid-template-areas bekommt ein Layout etwas, das in CSS selten ist: Lesbarkeit. Statt einzelne Elemente über Spalten- und Zeilennummern zu positionieren, malen Sie das Layout als ASCII-Skizze direkt in den Code. Jeder Bereich trägt einen sprechenden Namen wie header oder sidebar, und schon ein Blick auf die Eigenschaft verrät, wie die Seite aussieht. Dieser Artikel zeigt die vollständige Syntax, die wichtigsten Fallstricke und das tatsächliche Browser-Verhalten, das in vielen Tutorials zu kurz kommt.

Was grid-template-areas eigentlich macht

grid-template-areas ist eine Eigenschaft des Grid-Containers. Sie definiert ein Raster aus benannten Bereichen, indem jede Zeile als String geschrieben wird und jeder Eintrag in diesem String eine Zelle (genauer: eine Grid-Spur an Spalte und Zeile) benennt. Die Eigenschaft erzeugt dadurch implizit sogenannte benannte Grid-Linien: Zu jedem Bereichsnamen foo entstehen automatisch die Linien foo-start und foo-end für Zeilen und Spalten.

Ein Item wird einem Bereich mit grid-area: header; zugewiesen. CSS sucht dann nach den benannten Linien und platziert das Item exakt in das Rechteck, das diese Linien aufspannen. Anders als bei grid-template-columns, das nur die Spaltenbreiten festlegt, beschreibt grid-template-areas die zweidimensionale Anordnung. Beide Eigenschaften arbeiten zusammen: Die Areas legen fest, wo etwas liegt, die Columns- und Rows-Eigenschaften legen fest, wie breit und hoch.

Merksatz

Die Areas-Strings beschreiben die Form des Layouts, nicht die Größe. Wie breit eine Spalte oder wie hoch eine Zeile ist, bestimmen weiterhin grid-template-columns und grid-template-rows.

So wird aus Strings ein Layout

Das folgende Diagramm zeigt, wie die drei String-Zeilen einer Areas-Definition direkt zum sichtbaren Layout werden. Jeder Name im String entspricht einer Zelle im Raster.

grid-template-areas: "header header" "side main" "footer footer"; wird zu header side main footer

Die Syntax im Detail

Die Syntax wirkt locker, folgt aber strengen Regeln aus der CSS-Spezifikation. Jeder String steht für eine Zeile des Grids. Die durch Leerzeichen getrennten Wörter (genannt Tokens) innerhalb eines Strings stehen für die Spalten dieser Zeile. Damit die Definition gültig ist, müssen alle Zeilen gleich viele Spalten enthalten, sonst verwirft der Browser die gesamte Eigenschaft als ungültig.

Element Bedeutung
"header header" Eine Zeile mit zwei Spalten, beide gehören zum Bereich header
. (Punkt) Eine leere Zelle ohne Inhalt, sogenannte Null-Zelle
none Schlüsselwort: keine benannten Bereiche definiert (Standardwert)
Gleicher Name nebeneinander Verbindet Zellen zu einem rechteckigen Bereich (Spanning)
Name muss ein Rechteck bilden L- oder T-Formen sind ungültig, der Bereich wird verworfen

Der wichtigste Punkt: Ein benannter Bereich muss immer ein zusammenhängendes Rechteck ergeben. Verteilen Sie denselben Namen über eine L-Form oder eine unterbrochene Fläche, ist die gesamte Eigenschaft ungültig und wird ignoriert. Das ist die häufigste Ursache, warum ein Layout scheinbar grundlos nicht greift.

Vollständiges Beispiel: das Holy-Grail-Layout

Das klassische Beispiel für benannte Bereiche ist das Holy-Grail-Layout: Kopfzeile oben, Fußzeile unten, in der Mitte Hauptinhalt mit zwei seitlichen Spalten. Mit grid-template-areas ist es in wenigen Zeilen lesbar formuliert:

.layout {
  display: grid;
  grid-template-areas:
    "header header  header"
    "nav    main    aside"
    "footer footer  footer";
  grid-template-columns: 180px 1fr 180px;
  grid-template-rows: auto 1fr auto;
  gap: 16px;
  min-height: 100vh;
}

.layout > header { grid-area: header; }
.layout > nav    { grid-area: nav;    }
.layout > main   { grid-area: main;   }
.layout > aside  { grid-area: aside;  }
.layout > footer { grid-area: footer; }

Wer das Layout anpassen will, ändert nur die Strings, nicht eine einzige Zeilen- oder Spaltennummer. Genau das macht den Ansatz so wartbar. Probieren Sie verschiedene Anordnungen direkt im CSS Grid Generator aus, der den fertigen Code samt Areas exportiert.

Die Kurzschreibweise grid-template

Es gibt eine elegante Kurzform, die Areas, Spalten und Zeilen in einer einzigen Eigenschaft kombiniert: grid-template. Dabei wird hinter jeden Areas-String die Höhe der jeweiligen Zeile geschrieben, und nach einem Schrägstrich folgen die Spaltenbreiten. Das hält Form und Größe an einer Stelle zusammen:

.layout {
  display: grid;
  grid-template:
    "header header header" auto
    "nav    main   aside"  1fr
    "footer footer footer" auto
    / 180px 1fr 180px;
}

Diese Form ist kompakt, aber bei langen Layouts schnell unübersichtlich. Für die Lesbarkeit im Team ist die getrennte Schreibweise mit eigener grid-template-areas-Eigenschaft oft die bessere Wahl. Beachten Sie außerdem: grid-template setzt die Eigenschaft grid-auto-flow sowie die impliziten Spuren auf ihre Anfangswerte zurück, die noch umfassendere Kurzform grid tut das ebenfalls.

Responsive umordnen ohne HTML-Änderung

Die größte Stärke benannter Bereiche zeigt sich bei responsiven Layouts. Da Items nur über ihren Namen platziert werden, lässt sich das gesamte Layout in einer Media Query neu anordnen, indem man allein die Areas-Strings überschreibt. Das HTML bleibt unangetastet:

@media (max-width: 640px) {
  .layout {
    grid-template-areas:
      "header"
      "nav"
      "main"
      "aside"
      "footer";
    grid-template-columns: 1fr;
  }
}

Achtung: Barrierefreiheit

Das visuelle Umordnen über Areas verändert nicht die Reihenfolge im DOM. Screenreader und die Tab-Navigation folgen weiterhin der Quellordnung im HTML. Weicht die sichtbare Anordnung stark von der Quellordnung ab, entsteht ein Konflikt mit WCAG-Erfolgskriterium 1.3.2 (Meaningful Sequence). Halten Sie die logische HTML-Reihenfolge sinnvoll und nutzen Sie visuelles Umsortieren nur, wenn die Bedeutung erhalten bleibt.

Häufige Fallstricke und ihr Browser-Verhalten

Einige Eigenheiten führen regelmäßig zu Verwirrung, weil der Browser stillschweigend reagiert, statt einen sichtbaren Fehler zu melden. Die folgende Übersicht fasst die wichtigsten zusammen:

Fallstrick Was passiert
Ungleiche Spaltenzahl Die gesamte Eigenschaft ist ungültig und wird komplett ignoriert
Nicht-rechteckiger Bereich Ungültig, das Layout fällt auf das Standardverhalten zurück
Tippfehler im Namen Das Item wird automatisch ins implizite Grid platziert, oft unsichtbar verrutscht
Anführungszeichen vergessen Jeder String muss in Anführungszeichen stehen, sonst ungültig
Name in Anführungszeichen Bereichsnamen werden ohne Anführungszeichen referenziert, etwa grid-area: main;

Zum Debuggen sind die DevTools der Browser unverzichtbar: Chrome, Edge und Firefox zeigen im Grid-Inspektor die benannten Bereiche als Overlay an. Firefox blendet auf Wunsch sogar die Bereichsnamen direkt im Layout ein. Wird ein Bereich nicht angezeigt, ist die Definition fast immer ungültig, ein Blick in die Stilansicht zeigt dann die durchgestrichene Eigenschaft.

Wann benannte Bereiche sinnvoll sind und wann nicht

Benannte Bereiche entfalten ihren Vorteil bei überschaubaren, klar gegliederten Seitenlayouts mit wenigen großen Zonen: Header, Sidebar, Hauptinhalt, Footer. Hier ist der ASCII-Plan im Code selbsterklärend und reduziert Fehler beim Umbau. Für sehr feingliedrige Raster mit Dutzenden Zellen oder für dynamisch generierte Karten-Galerien sind sie dagegen unpraktisch, weil jeder Bereich einzeln benannt werden müsste.

In solchen Fällen sind die linienbasierte Platzierung über grid-column und grid-row oder automatische Platzierung mit repeat(auto-fit, minmax(...)) die bessere Wahl. Beide Ansätze lassen sich übrigens mischen: Sie können einen Teil des Grids über Areas benennen und andere Items frei über Liniennummern positionieren.

Tipp: Browser-Support

grid-template-areas wird seit März 2017 von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge) und gilt laut Web Platform Baseline als breit verfügbar. Für Detailfragen zu Fallbacks und älteren Engines siehe unseren Ratgeber zum Browser-Support von CSS Grid.

Häufige Fragen zu grid-template-areas

Was ist der Unterschied zwischen grid-template-areas und grid-template-columns?+

grid-template-columns legt fest, wie viele Spalten es gibt und wie breit sie sind. grid-template-areas legt fest, welche benannten Bereiche das Raster bildet und wie sie zweidimensional angeordnet sind. Die Areas beschreiben die Form, die Columns die Größe. In der Praxis nutzt man beide zusammen.

Wie lasse ich eine Zelle im Grid leer?+

Schreiben Sie an die entsprechende Stelle im Areas-String einen oder mehrere Punkte. Ein Punkt steht für eine leere Null-Zelle, in die kein benanntes Item platziert wird. Mehrere Punkte hintereinander (etwa . .) zählen als mehrere leere Zellen.

Warum greift mein grid-template-areas nicht?+

Meist liegt es an einer ungültigen Definition: ungleiche Anzahl an Spalten pro Zeile, ein Bereich, der kein zusammenhängendes Rechteck bildet, oder fehlende Anführungszeichen um die Strings. Ist die Eigenschaft ungültig, ignoriert der Browser sie vollständig. Prüfen Sie zusätzlich, ob der Name in grid-area exakt mit dem Namen im String übereinstimmt.

Kann ich das Layout responsive umordnen, ohne das HTML zu ändern?+

Ja. Da Items nur über ihren Bereichsnamen platziert werden, genügt es, in einer Media Query die Areas-Strings neu zu schreiben. Das HTML bleibt unverändert. Achten Sie aber darauf, dass die sichtbare Reihenfolge nicht stark von der Quellordnung im DOM abweicht, sonst leidet die Barrierefreiheit (WCAG 1.3.2).

Muss ein benannter Bereich immer rechteckig sein?+

Ja. Die CSS-Spezifikation verlangt, dass alle Zellen mit demselben Namen ein zusammenhängendes Rechteck bilden. L-Formen, T-Formen oder verstreute Zellen mit gleichem Namen machen die gesamte grid-template-areas-Eigenschaft ungültig, und sie wird vom Browser verworfen.

Layout mit benannten Bereichen bauen

Visuell zusammenklicken, Areas-Code direkt exportieren.

Zum Generator →

Quellen & Grundlagen

Verwandte Artikel

CSS Grid lernen Der komplette Einsteiger-Leitfaden zu Container, Items und Spuren. Responsive mit CSS Grid minmax, auto-fit und Media Queries für flexible Layouts. Browser-Support 2026 Aktuelle Daten, Fallbacks und Barrierefreiheit.
← Zurück zum Generator
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige