<table>
<thead>
<tr><th>2020</th><th>2021</th></tr>
</thead>
</table>
In diesem Beispiel wurde eine Tabelle mit einem Tabellenkopf, einer Zeile und zwei Überschriftenzellen erstellt. Das Ganze sieht dann so aus:
Zwei Dinge fallen hier auf. Würde man die Tabelle befüllen, gäbe es keine Zuordnung von Daten. Links müsste also im Header eine leere Zelle erstellt werden. Und es gibt noch keinen Inhalt. Beider Umstände nehme ich mich im folgenden Beispiel an:
<table>
<thead>
<tr><td></td><th>2020</th><th>2021</th></tr>
</thead>
<tbody>
<tr><td>Ist Weihnachten schon vorbei?</td><td>Ja</td><td>Nein</td></tr>
</tbody>
</table>
Im Ergebnis ergibt das:
|
2020 |
2021 |
Ist Weihnachten schon vorbei? |
Ja |
Nein |
Jetzt wird man sich fragen, wann diese Daten beispielsweise erhoben wurden. Solche Information lässt sich im Footer unterbringen. Das birgt den Vorteil, dass beim Ausdrucken längerer Tabellen diese Angabe auf jeder Seite zu sehen ist.
<table>
<thead>
<tr><th></th><th>2020</th><th>2021</th></tr>
</thead>
<tbody>
<tr><td>Ist Weihnachten schon vorbei?</td><td>Ja</td><td>Nein</td></tr>
</tbody>
<tfoot>
<tr><td>Zeitpunkt der Datenerhebung</td><td colspan="2">Die Daten wurden im Februar 2021 erhoben.</td> </tr>
</tfoot>
</table>
Das ergibt dann eine Tabelle mit Header, Body und Footer:
|
2020 |
2021 |
Ist Weihnachten schon vorbei? |
Ja |
Nein |
Zeitpunkt der Datenerhebung |
Die Daten wurden im Februar 2021 erhoben. |
Barrierefreie Gestaltung
Bisher haben wir uns den generellen Aufbau einer Tabelle vergegenwärtigt und gesehen, wie diese in HTML umzusetzen ist. Doch wie können Tabellen barrierefrei für Screenreader gestaltet werden?
Spaltenüberschriften
In den Beispielen ist aufgefallen, dass im Header, also im Tabellenkopf mit <th>
gearbeitet wurde. Diese Information nutzen Screenreader während der Navigation innerhalb der Tabelle. Je größer die Tabelle wird, desto weniger wahrscheinlich ist es, das man einen Überblick über die Spalten der Tabelle hat. Der Screenreader liest jede Zelle nämlich für sich genommen. Auch wenn es Befehle zum Lesen einer kompletten Tabellenzeile bzw. -spalte gibt.
Bewege ich mich von einer Spalte in die nächste, gibt mir der Screenreader die Spaltenüberschrift gefolgt von dem Wert der Tabellenzelle aus. Damit entfällt für mich der Weg zum oberen Ende der Tabelle, an dem ich selbst im Zweifel nachschauen müsste, wozu der Wert eigentlich gehört.
Zeilenüberschriften
Ich habe bei Screenreadern sowohl erlebt, dass beim Zeilenwechsel die erste Zelle der Zeile vorgelesen wurde, als auch, dass nur die Zelle vorgelesen wurde, in der ich mich befand. Um hier ein einheitliches Verhalten zu erzwingen, empfiehlt es sich, die erste Spalte ebenfalls mit <th>
zu befüllen. Aus unserem Beispiel würde also Folgendes werden:
<table>
<thead>
<tr><th></th><th>2020</th><th>2021</th></tr>
</thead>
<tbody>
<tr><th>Ist Weihnachten schon vorbei?</th><td>Ja</td><td>Nein</td>
</tbody>
<tfoot>
<tr><th>Zeitpunkt der Datenerhebung</th><td colspan="2">Die Daten wurden im Februar 2021 erhoben.</td> </tr>
</tfoot>
</table>
Der Vollständigkeit halber steht hier noch einmal die gerenderte Tabelle:
|
2020 |
2021 |
Ist Weihnachten schon vorbei? |
Ja |
Nein |
Zeitpunkt der Datenerhebung |
Die Daten wurden im Februar 2021 erhoben. |
Wechsle ich jetzt die Zeile, so wird mir die erste Zelle der Zeile ausgegeben, bevor ich den Wert der Zelle bekomme, auf der ich mich befinde.
Das war jetzt aber sehr theoretisch!
Wie sich Spalten- und Zeilenüberschriften in der Praxis auswirken und was passiert, wenn diese fehlen, zeige ich im folgenden Screencast.