Responsive-Tabelle
Tabellen sind nur dann korrekt, wenn es um strukturierte Daten geht. Nicht für Layout. Nicht für Design-Spielereien. Nur wenn Daten logisch in Zeilen & Spalten gehören.
Tabellen im Web
Tabellen für tabellarische Darstellungen
- Preislisten (Tarife, Abos)
- Vergleichstabellen (Features A vs. B)
- Stundenpläne / Belegungspläne
- Technische Daten (Specs, Masse, Werte)
- Finanzdaten und Statistiken
Tabellen für kleine Geräte
- Tabellen sind oft breiter als ein Smartphone-Screen
- Das Tabellen-Layout ist nicht so flexibel wie Block-Layouts
- Horizontales Scrollen ist meist schlechte UX
Demo
Verkleinere das Browser-Fenster unter 760px oder öffne die Seite auf deinem Smartphone, um die Darstellungsänderung zu sehen.
| Datum | Event | Location | Tickets |
|---|---|---|---|
| 15.03.2026 | CSS Grid Workshop | Zürich | 45 / 50 |
| 22.03.2026 | Responsive Design Meetup | Basel | 30 / 40 |
| 05.04.2026 | Animation Masterclass | Bern | Ausverkauft |
| 12.04.2026 | Dark Mode Best Practices | Zürich | 20 / 30 |
| 28.04.2026 | CSS Conference 2026 | Genf | 150 / 200 |
Lösung
Auf kleinen Screens wird jede Tabellenzeile zu einer Card. Die Labels stammen direkt aus dem HTML
über data-label. Dadurch bleibt das CSS wartbar – selbst wenn sich die
Spaltenreihenfolge ändert.
Kernidee
@media (max-width: 760px) {
table, thead, tbody, tr, th, td {
display: block;
}
td::before {
content: attr(data-label);
}
}
<td data-label="Datum">
td::before {
content: attr(data-label);
}
CSS greift hier auf den Wert "Datum" zu und verwendet ihn als Inhalt
des ::before-Elements.
CSS-Mechanik: relative + absolute
td {
position: relative; /* definiert den Bezugspunkt */
}
td::before {
position: absolute; /* wird innerhalb der td positioniert */
}
position: relative erzeugt einen lokalen Koordinatenraum.
position: absolute platziert das Label exakt innerhalb dieses Raums.
Ohne
relative würde sich das Label am nächsten positionierten Vorfahren orientieren – und
unkontrolliert wandern.
Live-Demo & editierbarer Code auf CodePen
Advanced
Die erste Variante ergänzt clip-path für das visuelle Verstecken des Tabellenkopfs.
Die zweite verwendet Container Queries und reagiert damit auf den verfügbaren Platz im Layout
statt auf die Breite des Viewports.
Responsive Tabelle mit
clip-path
Responsive Tabelle mit Container
Queries