Tworzenie tabeli HTML zgodnej z WCAG 2.1

Celem tabel danych jest przedstawienie informacji tabelarycznej w siatce lub macierzy oraz posiadanie kolumny lub wierszy, które pokazują znaczenie informacji w siatce. Widzący użytkownicy mogą wizualnie przeskanować tabelę. Mogą szybko tworzyć wizualne skojarzenia między danymi w tabeli a odpowiednimi nagłówkami wierszy i / lub kolumn. Ktoś, kto nie widzi tabeli, nie może utworzyć tych wizualnych skojarzeń, dlatego należy użyć odpowiedniego znacznika, aby utworzyć programistyczne skojarzenie między elementami w tabeli. Gdy odpowiednie znaczniki HTML są na miejscu, użytkownicy czytników ekranu mogą poruszać się po tabelach danych po jednej komórce na raz i słyszą wypowiadane im nagłówki kolumn i wierszy.

Tabele HTML powinny być używane do danych tabelarycznych - do tego służą. Nie można używać tabel HTML do stylizowania stron internetowych, na przykład jeden wiersz dla tytułu, jeden dla treści, jeden dla przypisów i tym podobne.

Używanie tabeli HTML do stylizacji strony internetowej jest złym pomysłem z następujących powodów:

  • Tabele użyte do układu sprawiają, że strony są mniej dostępne dla osób z problemami ze wzrokiem.
  • Tabele powodują zamieszanie w tagach. Taki kod jest trudniejszy do napisania, utrzymania i debugowania.
  • Tabele nie reagują automatycznie na typ urządzenia.
  • Tabele mają domyślnie rozmiar dopasowany do ich zawartości.

W tym artykule opiszemy zasady tworzenia tabeli na stronie internetowej zgodnie z WCAG 2.1.

Komórki nagłówka muszą być oznaczone <th>, a komórki danych <td>, aby tabele były dostępne.

Znacznik <th> - element HTML służący do ustawiania zawartości komórki na nagłówek określonej kolumny lub wiersza. Nagłówki tabel zwykle znajdują się u góry lub po lewej stronie tabeli - w górnym wierszu jako nagłówki kolumn lub w pierwszej kolumnie po lewej stronie jako nagłówki wierszy. Komórki nagłówka wskazują, jaka zawartość znajduje się obok lub pod nimi w tabeli, dzięki czemu tabela jest bardziej czytelna.

Poniżej znajdują się najczęściej używane typy tabel:

1. Tabela z komórkami nagłówka tylko w górnym wierszu.

Tego typu tabela zawiera komórki w pierwszym wierszu oznaczone za pomocą elementu <th> - komórki nagłówkowe dla kolumn tabeli. Jest to dopuszczalne tylko dlatego, że jest to taka mała tabela i dane są wyraźnie różne w każdej kolumnie, dzięki czemu związek między nagłówkiem a komórkami danych jest oczywisty.

Fragment kodu HTML:

<table>
    <tr>
        <th>Lp.</th>
        <th>Imię</th>
    </tr>
    <tr>
        <td>1.</td>
        <td>Ewa</td>
    </tr>
    <tr>
        <td>2.</td>
        <td>Jan</td>
    </tr>
</table>

Wygląd tabeli:

Lp. Imię
1. Ewa
2. Jan

2. Tabela z niejednoznacznymi danymi

W tym przykładzie danych (imię, nazwisko i miasto) nie można rozróżnić bez wiedzy, której kolumnie / wierszu odpowiadają poszczególne nagłówki. Atrybut scope definiuje kierunek komórek nagłówka i kojarzy je z odpowiednimi komórkami danych. Wartość atrybutu scope dla kolumn to col. Atrybut scope jest również potrzebny w przypadku większych tabel z jednym wierszem lub kolumną nagłówka. 

Fragment kodu HTML:

<table>
    <tr>
        <th scope="col">Imię</th>
        <th scope="col">Nazwisko</th>
        <th scope="col">Miasto</th>
    </tr>
    <tr>
        <td>Jan</td>
        <td>Wiśniewski</td>
        <td>Warszawa</td>
    </tr>
    <tr>
        <td>Ewa</td>
        <td>Nowak</td>
        <td>Kraków</td>
    </tr>
</table>

Wygląd tabeli:

Imię Nazwisko Miasto
Jan Wiśniewski Warszawa
Ewa Nowak Kraków

3. Tabela z komórkami nagłówka tylko w pierwszej kolumnie.

W tego typu tabeli dane z poprzedniego przykładu zostały przedstawione w kolumnie nagłówka po lewej stronie.

Fragment kodu HTML:

<table>
    <tr>
        <th scope="row">Imię</th>
        <td>Jan</td>
        <td>Ewa</td>
    </tr>
    <tr>
        <th scope="row">Nazwisko</th>
        <td>Wiśniewski</td>
        <td>Nowak</td>
    </tr>
    <tr>
        <th scope="row">Miasto</th>
        <td>Warszawa</td>
        <td>Kraków</td>
    </tr>
</table>

Wygląd tabeli:

Imię Jan Ewa
Nazwisko Wiśniewski Nowak
Miasto Warszawa Kraków

4. Nagłówek mieszany. Tabela z komórkami nagłówka w górnym wierszu i pierwszej kolumnie.

Do takich tabel możemy odnieść tabele, które mają prosty nagłówek wiersza i prosty nagłówek kolumny. W wierszu nagłówka wartość col dla atrybutu scope wiąże każdą komórkę nagłówka z komórkami danych w kolumnie. W kolumnie nagłówka wartość row dla atrybutu scop wiąże poszczególne nagłówki z ich wierszami. Bez tych informacji niektórzy użytkownicy nie zrozumieliby łatwo związku między nagłówkiem a komórkami danych. W poniższym przykładzie etykiety „Otwarte” i „Zamknięte” są przydatne tylko wtedy, gdy można je przypisać do określonego dnia i godziny. 

Fragment kodu HTML:

<table>
    <tr>
        <td></td>
        <th scope="col">Dział Marketingu</th>
        <th scope="col">Administracja i HR</th>
        <th scope="col">Biuro Rachunkowe</th>
    </tr>
    <tr>
        <th scope="row">Poniedziałek</th>
        <td>Otwarte</td>
        <td>Otwarte</td>
        <td>Otwarte</td>
    </tr>
    <tr>
        <th scope="row">Wtorek</th>
        <td>Otwarte</td>
        <td>Zamknięte</td>
        <td>Zamknięte</td>
    </tr>
    <tr>
        <th scope="row">Środa</th>
        <td>Otwarte</td>
        <td>Otwarte</td>
        <td>Otwarte</td>
    </tr>
    <tr>
        <th scope="row">Czwartek</th>
        <td>Zamknięte</td>
        <td>Zamknięte</td>
        <td>Otwarte</td>
    </tr>
    <tr>
        <th scope="row">Piątek</th>
        <td>Otwarte</td>
        <td>Otwarte</td>
        <td>Zamknięte</td>
    </tr>
</table>

Wygląd tabeli:

  Dział Marketingu Administracja i HR Biuro Rachunkowe
Poniedziałek Otwarte Otwarte Otwarte
Wtorek Otwarte Zamknięte Zamknięte
Środa Otwarte Otwarte Otwarte
Czwartek Zamknięte Zamknięte Otwarte
Piątek Otwarte Otwarte Zamknięte

Tytuł tabeli w dokumencie HTML.

Znacznik <caption> HTML definiuje tytuł tabeli w dokumencie HTML. Przeglądarki tradycyjnie wyświetlają tekst znajdujący się w znaczniku <caption> nad tabelą, ale można umieścić go w innym miejscu (wizualnie) za pomocą właściwości CSS caption-side. Znacznik <caption> może być tylko jeden i należy go wstawić bezpośrednio po znaczniku <table>.

Większość czytników ekranu ogłasza zawartość znaczniku <caption>. Ten znacznik powinien być krótkim tytułem zawartości tabeli. Takie tytuły pomagają użytkownikom znaleźć tabelę i zrozumieć, o co chodzi, i zdecydować, czy chcą ją przeczytać. Jeśli użytkownik używa „trybu tabel”, tytuły są podstawowym mechanizmem identyfikacji tabel.

Fragment kodu HTML:

<table>
    <caption>Działy firmy</caption>
    <tr>
      <th>Nazwa</th>
      <th>Godziny pracy</th>
      <th>Ilość pracowników</th>
    </tr>
    <tr>
      <td>IT</td>
      <td>08:00 - 16:00</td>
      <td>10</td>
    </tr>
    <tr>
        <td>Dział Marketingu</td>
        <td>08:00 - 16:00</td>
        <td>4</td>
    </tr>
</table>

Jednocześnie element <caption> może występować jako nagłówek tabeli i zawierać podsumowanie, które również opisuje skład tabeli.

Fragment kodu HTML:

<caption>
    Dostępność pokojów w hotelu. 
    Kolumna pierwsza zawiera lokalizację, 
    pozostałe kolumny pokazują rodzaj i liczbę dostępnych pokojów.
</caption>

Jeśli kod jest napisany w ten sposób, tytuł jest dostępny również dla użytkowników wizualnych. 

Jeżeli tworząc tabele jej struktura staje się nieco bardziej złożona, warto nadać tabeli bardziej strukturalną definicję. Jednym z najprostszych sposobów jest użycie <thead>, <tbody> i <tfooter>,  które pozwalają oznaczyć sekcje nagłówka, stopkę i sekcję treści tabeli. Nagłówek pojawi się na szczycie tabeli, a stopka - na dole. W tabeli powinien znajdować się tylko jeden nagłówek i jedna stopka, natomiast można w niej umieścić dowolną ilość znaczników <tbody>.

Fragment kodu HTML:

<table>
    <thead>
      <tr>
        <th scope="col">Miesiąc</th>
        <th scope="col">Suma</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Luty</td>
        <td>100PL</td>
      </tr>
      <tr>
        <td>Marzec</td>
        <td>80PL</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <th scope="row">Razem</th>
        <td>180PL</td>
      </tr>
    </tfoot>
</table>

Jest masa innych rzeczy, których możesz się nauczyć o tabelach HTML, ale naprawdę daliśmy wystarczająco wiedzy, żeby już zacząć tworzyć tabele zgodnie z WCAG2.1.

Źródła: 

W ramach naszej witryny stosujemy pliki cookies w celu świadczenia Państwu usług na najwyższym poziomie, w tym w sposób dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym. Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies. Więcej szczegółów w naszej Polityce Cookies.