Notes on Tables and Accessibility

Hinweise zu Tabellen und Barrierefreiheit

Wenn Sie lange genug in der Welt der Webentwicklung oder des Designs tätig sind, haben Sie vielleicht ein table verwendet , um Ihrer Website ein mehrspaltiges Layout zu geben. Im Laufe der Jahre wurde dieses Muster obsolet, als die Community im Großen und Ganzen CSS übernahm, um das Layout zu erreichen.

Einer der vielen Gründe, warum die Verwendung einer Tabelle für das Layout als schlechte Praxis entschieden wurde, war der gleiche Grund, warum andere HTML-Elemente richtig verwendet werden; Semantik. Wenn Sie eine Website mit einem table für das Layout auszeichnen, ist dies ein Problem der Barrierefreiheit, da der Inhalt eigentlich keine tabellarischen Daten sind. Wir möchten sicherstellen, dass das, was unsere Benutzer lesen und womit sie interagieren, für die präsentierten Inhalte sinnvoll ist.

Wann verwendet man einen Tisch?

Manchmal stellt sich diese Frage bei der Überprüfung eines zu implementierenden Designs:

„Wie markiere ich diesen Inhalt? Ist es eine Tabelle? Vielleicht ist es eine Liste? Woher weiß ich das?“

Die Verwendung des geeigneten HTML-Elements, um die semantische Bedeutung und den Kontext für Hilfstechnologien zu generieren, ist nicht immer einfach. Wenn es um Tabellen geht, lautet eine allgemeine Faustregel:

„Wenn der Inhalt innerhalb einer Tabellenkalkulationsanwendung ausgerichtet werden kann und klar definierte Spalten und Zeilen hat, stehen die Chancen gut, dass die Verwendung einer table den angemessenen Kontext und die semantische Bedeutung vermitteln würde.“

Mit anderen Worten, die Verwendung einer table ist nicht schlecht, solange sie zur Ausgabe von tabellarischen Inhalten verwendet wird.

Das scope

Damit Hilfstechnologien wie Bildschirmleseprogramme die Verbindung zwischen Spalten-/Zeilenkopfzellen ( th ) und der aktuellen Zelle herstellen können, muss das Attribut scope gesetzt werden.

Es gibt zwei zu berücksichtigende Verwendungen des scope : für eine Spaltenüberschrift und eine Zeilenüberschrift.

Bereich der Spaltenüberschrift

Achten Sie bei der Verwendung eines th Elements innerhalb eines thead einer Tabelle darauf, das Attribut scope anzuwenden. Indem der Wert auf "col" gesetzt wird, wird der Inhalt der Spaltenüberschrift neben der aktuellen Zelle angesagt, wodurch Kontext dazu gegeben wird, worauf sich der Zelleninhalt bezieht.

Dies würde normalerweise auf jedes th Element innerhalb eines thead Abschnitts angewendet:

 <thead> <tr> <th scope="col">Title</th> <th scope="col">Director</th> <th scope="col">Release Date</th> </tr> </thead>

Umfang der Zeilenkopfzeile

Achten Sie bei der Verwendung eines th Elements innerhalb eines tbody Abschnitts einer Tabelle darauf, das Attribut scope anzuwenden. Wenn Sie den Wert auf "row" setzen, wird der Inhalt der Zeilenüberschrift neben der aktuellen Zelle angesagt, wodurch der Kontext für den Bezug des Zelleninhalts angegeben wird.

Dies würde typischerweise auf die erste th Zelle innerhalb des tr -Elements angewendet werden. Andere td -Zellen würden dieses Attribut nicht aufweisen:

 <tbody> <tr> <th scope="row">Star Wars: Episode IV - A New Hope</th> <td>George Lucas</td> <td>May 25th, 1977</td> </tr> <!-- ... --> </tbody>

Versehentlich Semantik entfernen

Beim Anwenden bestimmter CSS-Eigenschaften auf ein table ist es möglich, versehentlich Semantik aus der Tabelle zu entfernen. Dies führt zu einer schlechten Benutzererfahrung für Personen, die Hilfstechnologien verwenden, um die Tabellendaten zu konsumieren und zu verstehen; der Tisch selbst darf überhaupt nicht als table vermittelt werden.

Wenn Sie beispielsweise das standardmäßige Rahmendesign entfernen, gehen Browser im Namen Ihrer Benutzer davon aus, dass diese Tabelle für das Layout oder eine " border " verwendet werden soll. Die eingebaute Heuristik moderner Browser macht diese Annahme aufgrund der Tatsache, dass in der Vergangenheit Grenzen für Layouttabellen entfernt wurden.

Aus diesem Grund ist das manuelle Testen Ihres Codes von entscheidender Bedeutung. Fügen Sie das Laden eines Screenreaders als Teil Ihres täglichen Arbeitsablaufs hinzu. Führen Sie nach Abschluss eines wichtigen Meilensteins oder vielleicht sogar am Ende Ihres Arbeitstages einige Schnelltests durch, um neu eingeführte Fehler zu erkennen, bevor Sie die Produktion starten.

Tabellen per E-Mail

Auch heute noch ist es üblich, beim Erstellen von HTML-basierten E-Mails ein Tabellenlayout zu verwenden. Und da wir wissen, dass die Verwendung eines table zum Erreichen des Layouts ein Problem der Barrierefreiheit ist, wie können wir diese Einschränkung umgehen?

Semantik entfernen

Die beste Methode, um zu vermeiden, dass eine E-Mail fälschlicherweise als „Tabelle“ übermittelt wird, wäre, ihre semantische Bedeutung vollständig zu entfernen. Dies kann erreicht werden, indem das role auf die table angewendet und sein Wert auf „presentation“ gesetzt wird.

 <table role="presentation" ...> <!-- ... --> </table>

Wenn dieser role auf table gesetzt ist, wird sein Inhalt als Klartext angesagt, als ob das table überhaupt nicht vorhanden wäre. Dadurch wird vermieden, dass E-Mail-Inhalte als table angekündigt werden. Natürlich wird alles andere semantische HTML innerhalb der table wie erwartet angekündigt.

Achten Sie beim Anwenden des role darauf, Ihre Implementierung zu testen, um sicherzustellen, dass die richtige semantische Bedeutung für Bildschirmleserbenutzer übermittelt wird.

WCAG-Erfolgskriterien

Dies kommt auf 1.3.1 Info und Beziehungen und 4.1.2 Name, Rolle, Wert zurück, wo es heißt:

"Informationen, Struktur und Beziehungen, die durch die Präsentation vermittelt werden, können programmatisch bestimmt werden oder sind in Textform verfügbar."

„Für alle Komponenten der Benutzeroberfläche (einschließlich, aber nicht beschränkt auf: Formularelemente, Links und durch Skripte generierte Komponenten) können der Name und die Rolle programmgesteuert bestimmt werden; Zustände, Eigenschaften und Werte, die vom Benutzer festgelegt werden können, können programmgesteuert festgelegt werden ; und Benachrichtigungen über Änderungen an diesen Elementen sind für Benutzeragenten verfügbar, einschließlich unterstützender Technologien."

Ressourcen:

Zurück zum Blog