Was in einer Tabelle steckt 
veröffentlicht in
Die th- und td-Elemente
Datentabellen bestehen aus Tabellenreihen, die aus der gleichen Zahl an Zellen bestehen müssen. Dabei können sich Zellen mit den colspan- und rowspan-Attributen über mehr als eine Spalte beziehungsweise mehr als eine Reihe erstrecken und müssen dann entsprechend oft gezählt werden. Die Anordnung der Zellen bildet ein Gitter.
Für die Reihen und Zellen werden folgende Elemente benötigt:
- Das
tr-Element repräsentiert eine Tabellenreihe mit Zellen. Die Zellen werden nach Datenzellen (td-Element) und Kopfzellen (th-Element) unterschieden. - Das
td-Element definiert eine Datenzelle in einer Tabelle. Eintd-Element muss das unmittelbare Kindelement einestr-Elements sein. - Das
th-Element definiert eine Kopfzelle in einer Tabelle. Einth-Element muss das unmittelbare Kindelement einestr-Elements sein. Die Beziehungen zwischen Kopfzelle und Datenzellen können Autoren gegebenenfalls mit denscope- undheaders-Attributen festlegen. Die Inhalte vonth-Elementen werden von allen gängigen Browsern standardmäßig fett und zentriert dargestellt.
Screenreader und Tabellen
Wenn Datenzellen und Kopfzellen nicht voneinander unterschieden werden, stehen Nutzende von Screenreadern vor Probleme. In Tabellen navigieren Nutzende von Screenreadern grundsätzlich von Zelle zu Zelle. Während sehende Nutzende die Kopfzellen mit einem kurzen Blick erfassen können, ist das mit einem Screenreader nur durch vorhandene Beziehungen zwischen Datenzellen und Kopfzellen möglich.
Screenreader bieten für Datentabellen umfängliche Funktionalität. Ein wichtiger Aspekt ist das Heranziehen der zugehörigen Kopfzellen für eine Datenzelle. Wenn Sie beispielsweise von einer Datenzelle zur nächsten Datenzelle navigieren, kann der Screenreader die mit der Datenzelle assoziierten Kopfzellen ebenfalls vorlesen beziehungsweise anzeigen.
Hinweis: Welche Kopfzellen herangezogen werden, kann in einem Screenreader konfiguriert werden.
Rollen für Kopfzellen
Tabellenzellen können verschiedene Rollen erhalten. Die Rollen werden im Accessibility-Tree abgelegt und sind insbesondere für Screenreader wichtig:
- Eine Datenzelle erhält die Rolle "cell".
- Kopfzellen erhalten die Rolle "columnheader", wenn sie oben in einer Spalte stehen, und die Rolle "rowheader", wenn sie amAnfang einer Reihe stehen.
Kopfzellen können prinzipiell überall in einer Datentabelle vorkommen. Typischerweise werden die erste Reihe und/oder die erste Spalte einer Tabelle Überschriftencharakter aufweisen, zum Beispiel in der einfachsten Form:
<table>
<tr>
<th>Kopfzelle 1</th>
<th>Kopfzelle 2</th>
</tr>
<tr>
<td>Datenzelle 1</td>
<td>Datenzelle 2</td>
</tr>
</table>
Browser weisen den beiden Kopfzellen im vorherigen Beispiel die Rolle "columnheader" zu. Dies kann in den Entwicklerwerkzeugen eines Browsers überprüft werden.
Kopfzellen können genauso am Anfang einer Reihe stehen. Im folgenden Beispiel weisen Browser den Kopfzellen der ersten Spalte die Rolle "rowheader" und den Datenzellen die Rolle "cell" zu:
<table>
<tr>
<th>Kopfzelle 1</th>
<td>Datenzelle 1</td>
</tr>
<tr>
<th>Kopfzelle 2</td>
<td>Datenzelle 2</td>
</tr>
</table>
Die Zuweisung der korrekten Rollen können Browser in diesen Situationen zuverlässig vornehmen. Das gilt auch dann, wenn Kopfzellen sowohl in der ersten Reihe als auch in der ersten Spalte stehen. Wenn aber Kopfzellen an anderer Stelle im Gitter vorkommen oder wenn Zellen über mehr als eine Spalte oder über mehr als eine Reihe gestreckt werden, müssen die zugewiesenen Rollen überprüft werden. Gegebenenfalls muss die Beziehung zwischen Kopfzellen und Datenzellen mit den scrope- oder headers-Attributen explizit angegeben werden.
Kopfzellen in der ersten Reihe
Im folgenden Beispiel besteht die erste Reihe der Tabelle aus Kopfzellen. Die zweite und dritte Reihe bestehen aus Datenzellen.
| Berlin | Hamburg | München |
|---|---|---|
| Miljöh | Kiez | Bierdampf |
| Buletten | Frikadellen | Fleischpflanzerl |
Kopfzellen in der ersten Reihe einer Tabelle legen eine Beziehung zwischen sich selbst und zugehörigen Datenzellen fest. Stehen die Kopfzellen in der ersten Tabellenreihe, dann weisen Browser die Rolle "columnheader" zu. Welche Rolle Kopfzellen erhalten, kann in den Entwicklerwerkzeugen eines Browsers eingesehen werden, zum Beispiel in Chrome:

Mit der Rolle "columnheader" können Screenreader eine Beziehung zwischen der Kopfzelle und allen Datenzellen der gleichen Spalte herstellen. Wenn mit einem Screenreader in der dritten Reihe von der ersten zur zweiten Datenzelle navigiert wird, wird der Text "Frikadelle" mit dem Text "Hamburg" ergänzt.
Kopfzellen in der ersten Spalte
Eine Kopfzelle als erste Zelle einer Reihe stellt eine Beziehung zu allen Datenzellen der Reihe her:
| U-Bahn U1, U3, U6 | Hallesches Tor |
|---|---|
| U-Bahn U6 | Kochstraße |
| Bus 248 | Jüdisches Museum |
| Bus M29 | Lindenstraße/Ecke Oranienstraße |
| Bus M41 | Zossener Brücke |
Die Kopfzellen in diesem Beispiel erhalten in allen gängigen Browsern die Rolle "rowheader". Die Kopfzellen können den Datenzellen der Tabellenreihe zugeordnet werden.
Kopfzellen in der ersten Reihe und in der ersten Spalte
Einfache Tabellen können sowohl über Spalten- als auch über Reihenüberschriften verfügen. Auch im folgenden Beispiel erhalten die Spaltenköpfe die Rolle "columnheader" und die Reihenköpfe die Rolle "rowheader":
| Montag | Dienstag | Mittwoch | Donnerstag | Freitag | |
|---|---|---|---|---|---|
| 09:00 – 12:30 | geöffnet | geöffnet | nach Vereinbarung | geöffnet | geöffnet |
| 12:30 – 14:00 | geschlossen | geschlossen | geschlossen | geschlossen | geschlossen |
| 14:00 – 17:00 | geöffnet | geöffnet | geschlossen | geöffnet | geschlossen |
| 17:00 – 20:00 | geschlossen | geschlossen | geschlossen | geöffnet | geschlossen |
In diesem Beispiel sind die Kopfzellen alle eindeutig. Sollte die erste Zelle der ersten Spalte einen Inhalt haben, müssen Sie festlegen, dass die Zelle eine Kopfzelle ist. Standardmäßig werden Browser die Rolle "columnheader" für eine solche Kopfzelle festlegen. Sollte die erste Zelle eine Kopfzelle für die Reihe sein, kann ein scope-Attribut eingesetzt werden:
<table>
<tr>
<th scope="row"> … </th>
<th> … </th>
<th> … </th>
</tr>
…
</table>
Auch wenn das scope-Attribut für einfache Tabellen normalerweise nicht erforderlich ist, kann es Ausnahmen geben, wie im folgenden Beispiel. Die erste Kopfzelle der ersten Reihe wird nachfolgend den anderen Kopfzellen der Reihe zugeordnet. Damit wird "Name" zusätzlich herangezogen, wenn Screenreader vertikal in die zweite, dritte oder vierte Kopfzelle der ersten Reihe navigieren:
| Name | Andrea | Ben | Charlotte |
|---|---|---|---|
| Anteile | 12 | 6 | 14 |
| Geplante Änderung | −3 | +2 | ±0 |
Das abbr-Attribut
Screenreader können zugeordnete Kopfzellen einzelnen Datenzellen voranstellen, wenn Nutzende von Screenreadern durch die Datenzellen navigieren. In manchen Situationen können Kopfzellen aber uneindeutig, unverständlich oder auch sehr lang sein. In solchen Fällen kann das th-Element ein abbr-Attribut erhalten.
abbr-Attribut für th-Elemente stellt eine alternative Bezeichnung für die Kopfzelle dar, zum Beispiel wenn der Text der Kopfzelle einer Datenzelle vorangestellt wird. Der Wert des abbr-Attributs ist typischerweise eine kurze Form des sichtbaren Textes, darf aber auch eine Erweiterung oder eine andere Formulierung sein. Im folgenden Beispiel kann in einem Screenreader bei der Navigation von der rechten Datenzelle zur linken Datenzelle statt "auf dem Flohmarkt verkaufen Schallplatten" die alternative Bezeichnung der Kopfzelle vorangestellt und "Verkaufen Schallplatten" ausgegeben werden:
<table>
<thead>
<tr>
<th abbr="Verkaufen">auf dem Flohmarkt verkaufen</th>
<th>Spenden</th>
</tr>
</thead>
<tr>
<td>Schallplatten</td>
<td>Bücher</td>
</tr>
</table>
Wenn die Kopfzellen navigiert werden, lesen Screenreader den sichtbaren Text. Erst wenn die Kopfzellen zu anderen Zwecken herangezogen werden, etwa bei der Beschriftung einer Datenzelle, werden die alternativen Beschriftungen herangezogen und die eigentliche Beschriftung ersetzt. Das abbr-Attribut ist im Übrigen meist nicht erforderlich.
Der Beitrag Was in einer Tabelle steckt besteht aus folgenden einzelnen Webseiten:
- Elemente für Datentabellen
Tabellen bestehen aus einem
table-Element sowietr-,th- undtd-Elementen. Diecaption-,thead-,tbody-,tfoot-,colgroup- undcol-Elemente können im Bedarfsfall eingesetzt werden.- Die
th- undtd-Elemente In einfachen Tabellen stehen
th-Elemente (Kopfzellen) in der ersten Reihe und/oder in der ersten Spalte. Browser weisen dann den Kopfzellen die korrekten Rollen zu.- Das
caption-Element Datentabellen können mit einem
caption-Element eine Beschriftung erhalten.- Die Gruppierung von Spalten oder Reihen
In Datentabellen können Reihen mit den
thead-,tbody- undtfoot-Elementen gruppiert werden. Spalten können mit dencolgroup-Element ebenfalls gruppiert werden.- Komplexe Beziehungen in Datentabellen
Eine Tabelle ist erst dann barrierefrei, wenn jede Datenzelle ihre Kopfzellen kennt. Fehlen diese Beziehungen, sind Datenzellen ohne Bedeutung.
- Vereinfachung von komplexen Tabellen
Komplexe Tabellen sollten vermieden werden. Wenn sich eine komplexe Tabelle als einfache Tabelle darstellen lässt, dann sollte die Tabelle vereinfacht werden.
- Techniken für Tabellenbeschreibungen
Der grundlegende Aufbau der Zellen in einer komplexen Tabelle muss nach dem HTML-Standard beschrieben werden. Sie können dafür verschiedene Techniken einsetzen.
- Das
headers-Attribut Mit dem
headers-Attribut kann eine Datenzelle oder eine Kopfzelle mit einer oder mehreren Kopfzellen verknüpft werden.- Das
scope-Attribut Das
scope-Attribut dient dazu, Kopfzellen einer oder mehreren Spalten beziehungsweise einer oder mehreren Reihen in einer komplexen Tabelle zuzuweisen.- Tabellen benötigen einen Namen
Nach der ARIA-Spezifikation benötigen Tabellen einen Namen. HTML bietet dafür insbesondere das
caption-Element.- Layout-Tabellen sind wie Briefe in Excel
Verzichten Sie auf die antiquierte Technik der Layout-Tabelle und setzen Sie Webstandards ein!
Die folgenden Begriffe dieser Seite werden auch im Glossar definiert:
Blättern zur nächsten oder vorherigen Seite
- Das
caption-Element Datentabellen können mit einemcaption-Element eine Beschriftung erhalten. - Elemente für DatentabellenTabellen bestehen aus einem
table-Element sowietr-,th- undtd-Elementen. Diecaption-,thead-,tbody-,tfoot-,colgroup- undcol-Elemente können im Bedarfsfall eingesetzt werden.