Tabellen-Styling

Zuletzt aktualisiert am 15. Februar 2026

CSS bietet mehrere Eigenschaften, die speziell für HTML-Tabellen gelten. table-layout steuert, wie der Browser Spaltenbreiten berechnet. border-collapse bestimmt, ob Zellrahmen zusammenfallen oder getrennt bleiben. border-spacing definiert den Abstand zwischen den Zellen. caption-side positioniert die Tabellenüberschrift. Und empty-cells entscheidet, ob leere Zellen ihren Rahmen und Hintergrund zeigen. Zusammen ermöglichen diese Eigenschaften saubere, moderne Tabellen-Designs.

Syntax
table-layout: auto | fixed
Initialwert
auto
Vererbt
Nein
Animierbar
Nein

Grundlagen

Tabellen haben in CSS besondere Eigenschaften, die auf anderen Elementen nicht funktionieren. Die wichtigsten betreffen das Rahmenverhalten und die Spaltenbreiten-Berechnung.

border-collapse: collapse ist die meistgenutzte Tabellen-Eigenschaft. Im Standard (separate) hat jede Zelle ihren eigenen Rahmen, was zu doppelten Linien zwischen Zellen führt. Mit collapse verschmelzen benachbarte Rahmen zu einer einzigen Linie. Das sieht in fast allen Fällen besser aus.

table-layout beeinflusst die Performance und Berechenbarkeit von Tabellen. Bei auto (Standard) berechnet der Browser die Spaltenbreiten anhand des gesamten Zellinhalts, was bei großen Tabellen langsam sein kann. Bei fixed richtet sich die Spaltenbreite nur nach der ersten Zeile und den gesetzten width-Werten, was schneller und vorhersehbarer ist.

Syntax & Werte

table-layout

Wert Beschreibung Beispiel
auto Spaltenbreiten werden automatisch anhand des gesamten Zellinhalts berechnet (Standard). Langsamer, aber passt sich an. table-layout: auto
fixed Spaltenbreiten richten sich nach der ersten Zeile und gesetzten width-Werten. Schneller und vorhersehbarer. table-layout: fixed

border-collapse

Wert Beschreibung Beispiel
separate Jede Zelle hat einen eigenen Rahmen. Abstand über border-spacing steuerbar (Standard). border-collapse: separate
collapse Benachbarte Rahmen verschmelzen zu einer Linie. border-spacing wird ignoriert. border-collapse: collapse

border-spacing

Wert Beschreibung Beispiel
<length> Gleicher Abstand horizontal und vertikal zwischen Zellen. border-spacing: 4px
<horizontal> <vertical> Unterschiedlicher Abstand horizontal und vertikal. border-spacing: 8px 4px
0 Kein Abstand zwischen Zellen. Ähnlich wie collapse, aber Rahmen bleiben separat. border-spacing: 0

caption-side

Wert Beschreibung Beispiel
top Überschrift über der Tabelle (Standard). caption-side: top
bottom Überschrift unter der Tabelle. caption-side: bottom

empty-cells

Wert Beschreibung Beispiel
show Leere Zellen zeigen Rahmen und Hintergrund (Standard). empty-cells: show
hide Leere Zellen werden unsichtbar (kein Rahmen, kein Hintergrund). empty-cells: hide

Beispiele

border-collapse vs. separate

Der Unterschied zwischen collapse und separate ist besonders bei sichtbaren Rahmen deutlich: Bei separate entstehen doppelte Linien zwischen den Zellen.

border-collapse: separate vs. collapse
/* Doppelte Rahmen (Standard) */
table { border-collapse: separate; }

/* Zusammengefallene Rahmen (empfohlen) */
table { border-collapse: collapse; }

table-layout: fixed vs. auto

Bei auto passt der Browser die Spaltenbreiten an den Inhalt an. Bei fixed richtet er sich nach den gesetzten Breiten und der ersten Zeile. Langer Inhalt wird abgeschnitten oder umbrochen.

table-layout: auto vs. fixed
/* Browser berechnet Breiten (Standard) */
table { table-layout: auto; }

/* Feste Spaltenbreiten, schneller */
table {
  table-layout: fixed;
  width: 100%;
}

td {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

Modernes Tabellen-Design

Zebra-Streifen mit nth-child, Header-Styling und Hover-Effekt: ein typisches modernes Tabellen-Design.

Modernes Tabellen-Design
table {
  border-collapse: collapse;
  width: 100%;
}

thead th {
  background: #1e293b;
  color: #f8fafc;
  padding: 10px 14px;
}

/* Zebra-Streifen */
tbody tr:nth-child(even) {
  background: #f8fafc;
}

/* Hover-Effekt */
tbody tr:hover {
  background: #e0f2fe;
}

caption-side und empty-cells

caption-side: bottom positioniert die Tabellenüberschrift unter der Tabelle. empty-cells: hide versteckt leere Zellen (nur bei border-collapse: separate).

caption-side und empty-cells
/* Überschrift unter der Tabelle */
table { caption-side: bottom; }

/* Leere Zellen verstecken */
table {
  border-collapse: separate;
  empty-cells: hide;
}

Responsive Tabelle

Tabellen sind auf kleinen Bildschirmen problematisch, weil sie eine Mindestbreite brauchen. Die einfachste Lösung: Ein Wrapper mit overflow-x: auto, damit die Tabelle horizontal scrollbar wird.

Responsive Tabelle mit horizontalem Scroll
/* Wrapper für horizontales Scrollen */
.table-wrapper {
  overflow-x: auto;
}

table {
  min-width: 500px; /* Mindestbreite */
  width: 100%;
  border-collapse: collapse;
}

th, td {
  white-space: nowrap; /* Kein Zeilenumbruch */
  padding: 8px 12px;
}

Barrierefreiheit

Verwende immer ein <caption>-Element für Tabellen. Es ist der zugänglichste Weg, den Zweck einer Tabelle zu beschreiben. Screenreader lesen die Caption vor, bevor sie den Tabelleninhalt präsentieren, sodass Nutzer sofort wissen, was sie erwartet. caption-side ändert nur die visuelle Position, nicht die semantische Rolle.

empty-cells: hide kann Screenreader-Nutzer verwirren, weil die Zelle visuell verschwindet, aber im DOM und für Screenreader noch vorhanden ist. Das kann zu einer Diskrepanz zwischen visueller und akustischer Darstellung führen. Wenn eine Zelle leer ist, überlege, ob ein Platzhaltertext wie ”-” oder “Keine Daten” semantisch sinnvoller wäre.

Tabellen-Header (<th>) brauchen ein scope-Attribut (col oder row), damit Screenreader die Beziehung zwischen Header und Datenzellen korrekt zuordnen können. Bei Zebra-Streifen mit nth-child sollte der Kontrastunterschied zwischen den Zeilen nicht zu subtil sein: mindestens ein Kontrastverhältnis von 3:1 zwischen Textfarbe und beiden Hintergrundfarben ist empfehlenswert.

Häufige Fehler

  • border-spacing bei border-collapse: collapse setzen: border-spacing wird bei collapse komplett ignoriert. Die Eigenschaft wirkt nur bei separate. Wenn du Abstände zwischen Zellen bei collapse brauchst, verwende padding auf den Zellen.
  • table-layout: fixed ohne width auf der Tabelle: Ohne eine definierte Breite hat fixed keinen Effekt, weil der Browser keine Basis für die Spaltenberechnung hat. Setze immer width: 100% zusammen mit table-layout: fixed.
  • Doppelte Rahmen bei border-collapse: separate: Wenn jede Zelle einen Rahmen hat, entstehen zwischen benachbarten Zellen doppelte Linien. Die Lösung ist fast immer border-collapse: collapse.
  • Tabellen für Layout verwenden: HTML-Tabellen sind für tabellarische Daten gedacht, nicht für Seitenlayouts. Verwende Flexbox oder Grid für Layout-Zwecke. Tabellen-Layouts sind nicht responsive und schlecht für die Barrierefreiheit.
  • Responsive Design vergessen: Tabellen mit fester Breite sprengen auf kleinen Bildschirmen das Layout. Verwende immer einen Wrapper mit overflow-x: auto oder ein alternatives Layout für mobile Ansichten.

Browser-Kompatibilität

Alle Tabellen-Eigenschaften (table-layout, border-collapse, border-spacing, caption-side, empty-cells) werden seit über 20 Jahren von allen Browsern vollständig unterstützt.

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplett
EdgeKomplett
OperaKomplett

Email-Kompatibilität

Tabellen sind das Grundgerüst des Email-Layouts. Die meisten Tabellen-Eigenschaften funktionieren gut, mit Einschränkungen in Outlook.

ClientUnterstützungHinweise
Apple MailKomplett
GmailKomplett
OutlookTeilweiseborder-collapse und border-spacing funktionieren. caption-side wird teilweise ignoriert. table-layout: fixed funktioniert
ThunderbirdKomplett
Yahoo MailKomplett

Verwandte Eigenschaften

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.