UX Abo

Neuer Workshop: "UX Metrics - Erfolgsmessung im UX Design".

Zeigt her!
Close

Barrierefreie Datentabellen - Die perfekte Tabelle

Datentabellen im Web können sehr leicht unübersichtlich werden, für eingeschränkte Internetuser noch mehr. Um dieses Problem zu lösen und der Tabelle eine Struktur zu geben, stehen eine Vielzahl an Tabellenspezifische (X)HTML-Elementen und Attributen zur Verfügung. Leider werden derzeit nicht alle Elemente von Screenreadern unterstützt, dennoch macht es für ein semantisches Markup sehr viel Sinn. Die Lesbarkeit und Accessibility wird deutlich erhöht.

Aus aktuellem Anlass (für eine Modellrechnungsapplikation), hab ich mich entschlossen meinen Bloglesern die wichtigsten Eckdaten für eine zugängliche und strukturierte Tabelle nicht vorzuenthalten.

Tabellenzusammenfassung

<summary>Das ist die Zusammenfassung des Inhaltes der Datentabelle </summary>

Dieses Attribut wird direkt innerhalb des <table> Tags angewendet und soll als Inhaltsbeschreibung dienen. Das Summary ist besonders wichtig für die Barrierefreiheit, da es Screenreadern exklusiv zur Verfügung steht. Vergleichen kann man das Attribut mit dem ebenso sehr unerlässlichem „Alt-Text“ von Bilddateien in Webseiten.

Tabellenbezeichnung und Zusammenfassung

<caption>Das ist die Tabellenüberschrift</caption>

Dieser Tag fungiert als Tabellenbezeichnung oder Überschrift, in diesem Fall würde ich aber empfehlen lieber über die Tabellen (zusätzlich oder stattdessen) ein klassisches Überschriften-Element zu setzen. (h1, h2..), da Screenreader-Benutzer besser zu solchen Überschriften springen können.

Struktur der Tabelle

Die 3 logischen Bereiche

  • <thead> Tableheader
  • <tbody> Tablebody
  • <tfoot> Tablefooter

bieten die Möglichkeit einer passenden Aufteilung in die Bereiche: Kopf, Inhalt und Footer. Wichtig: Wenn Tableheader oder -footer verwendet werden muß unbedingt ein Tablebody-Element festgelegt werden, die 3 funktionieren nur zusammen. Eine Tabelle darf nur einen <thead> oder <tfoot>, aber mehrere <tbody>, um mehr Überschaubarkeit festzulegen.

Zeilen- oder Spaltenformatierung

Die Elemente <colgroup> und <col> ermöglichen eine spezifische Darstellung der Spalten. Für eine Formatierung einer ganzen Zeile kann das <tr> Element zum Ansteuern verwendet werden. Das Element <colgroup> ermöglicht eine oder mehrere mit dem <col> Element ausgezeichneten Spalten. Hier gibts ein paar Einbußen bei älteren Browsern.

Praxisbeispiel

Performance
1 3% 4%
2 3% 4%
1 10000 20000
2 20000 30000
3 30000 40000


<h2>Tabelle Performance</h2>
<table summary="Wie entwickelt sich mein Sparvertrag bei verschiedener Aktienperformance">
<caption>Performance</caption>
<colgroup>
<col id="Jahre" />
<col id="Performance_3" />
<col id="Performance_4" />
</colgroup>
<thead>
<tr>
<th scope="col">1</th>
<th scope="col">3%</th>
<th scope="col">4%</th>
</tr>
</thead>
<tfoot>
<tr>
<th scope="col">2</th>
<th scope="col">3%</th>
<th scope="col">4%</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>1</td>
<td>10000</td>
<td>20000</td>
</tr>
<tr>
<td>2</td>
<td>20000</td>
<td>30000</td>
</tr>
<tr>
<td>3</td>
<td>30000</td>
<td>40000</td>
</tr>
</tbody>
</table>

Formatierung

In der CSS-Spezifikation gibt es 2 Varianten von Tabellenrahmen:

  • seperate
  • collapse

Bei seperate erhält jede Zelle einen eigenen Rahmen, während bei collapse die Zellen sich Ränder teilen, welches ich nützlicher finde. Damit die Tabelle ein Rasterlayout behält, sollte auch eine feste Breite festgelegt werden, der Rahmen hilft sicher optisch besser abzugrenzen und ein Padding verbessert das Lesen der Zellendaten. Alle anderen oben genannten Elemente können wie üblich mit CSS gestylt werden. Empfehlen kann ich die CSS Table Galler, ausprobieren lohnt sich.

Referenzen

Du willst mit jemanden über das Thema plaudern?

Einen kostenlosen Termin mit CEO Susanne vereinbaren!

Stephan

Meine Rolle bei Liechtenecker: langgedienter Frontend-Veteran Wenn es weder IT noch Digitalisierung gäbe, wäre mein Beruf: Förster ohne Kontakt zu Menschen! Mein Herz schlägt für: die Arterien.

Interesse mit uns zu arbeiten?

Lass uns plaudern …

oder vereinbare gleich mit unserer CEO Susanne einen kostenlosen Termin.