Tables

Klassische Tabellen, insbesondere mit mehr als zwei Spalten, können über Tables realisiert werden.

Hinweis: Tabellen werden in einen Container mit der Klasse .table-responsive-wrapper gekapselt. Dadurch erhalten überbreite Tabellen auf kleinen Auflösungen automatisch einen horizontalen Scrollbalken.

Basis Layout

table

Table Heading 1 Table Heading 2 Table Heading 3
Table Cell 1 Table Cell 2 Table Cell 3
Table Cell 1 Table Cell 2 Table Cell 3
<div class="table-responsive-wrapper"> 
    <table class="table--base">
        <thead>
            <tr>
                <th>Table Heading 1</th>
                <th>Table Heading 2</th>
                <th>Table Heading 3</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Table Cell 1</td>
                <td>Table Cell 2</td>
                <td>Table Cell 3</td>
           </tr>
            <tr>
                <td>Table Cell 1</td>
                <td>Table Cell 2</td>
                <td>Table Cell 3</td>
            </tr>
        </tbody>
    </table>
</div>
 

Listen Layout

table.table--list

Table Heading 1 Table Heading 2 Table Heading 3
Table Cell 1 Table Cell 2 Table Cell 3
Table Cell 1 Table Cell 2 Table Cell 3
<div class="table-responsive-wrapper"> 
    <table class="table--list">
        <thead>
            <tr>
                <th>Table Heading 1</th>
                <th>Table Heading 2</th>
                <th>Table Heading 3</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Table Cell 1</td>
                <td>Table Cell 2</td>
                <td>Table Cell 3</td>
           </tr>
            <tr>
                <td>Table Cell 1</td>
                <td>Table Cell 2</td>
                <td>Table Cell 3</td>
            </tr>
        </tbody>
    </table>
</div>
 

Barrierefreiheit bei komplexen Tabellen

In einfachen Tabellen, in denen jede Zelle genau einem Header zugeordnet ist (horizontal oder vertikal), sind keine weiteren Auszeichnungen nötig (siehe Basistabelle oben).
In komplexen Tabellen, in denen der eindeutige Bezug zu genau einem Header fehlt, müssen Überschriften zu ihrem Inhalt (über scope oder über id und headers) zugeordnet werden.
siehe auch: W3.org - Tables Concepts

Beispiel 1: Tabelle mit horizontalen und vertikalen Headern

Hat eine Zelle genau einen horizontalen UND einen vertikalen Header, wird das scope Attribut "col" bzw. "row" verwendet.

Montag Dienstag Mittwoch Donnerstag Freitag
09:00 - 11:00 Geschlossen Offen Offen Geschlossen Geschlossen
11:00 - 13:00 Offen Offen Geschlossen Geschlossen Geschlossen
<div class="table-responsive-wrapper"> 
    <table class="table--base">
        <thead>
            <tr>
                <td></td>
                <th scope="col">Montag</th>
                <th scope="col">Dienstag</th>
                <th scope="col">Mittwoch</th>
                <th scope="col">Donnerstag</th>
                <th scope="col">Freitag</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th scope="row">09:00 - 11:00</th>
                <td>Geschlossen</td>
                <td>Offen</td>
                <td>Offen</td>
                <td>Geschlossen</td>
                <td>Geschlossen</td>
            </tr>
            <tr>
                <th scope="row">11:00 - 13:00</th>
                <td>Offen</td>
                <td>Offen</td>
                <td>Geschlossen</td>
                <td>Geschlossen</td>
                <td>Geschlossen</td>
            </tr>
        </tbody>
    </table>
</div>
 

Beispiel 2: Tabelle mit Gruppen

Geht ein Header über mehrer Spalten und bildet z.B. eine Untergruppierung, so bekommt dieser das Attribut scope="colgroup".
Zusätzlich werden die Zellen durch die id und headers Attribute mit ihren Headern verknüpft. Anderfalls wäre der Kontext der Zelleninhalte unklar.

Objekt Größe Preis
Prenzlauer Berg
Wohnung Marlene 20 m² 120 €
Haus Fritz 30 m² 140 €
Villa Uta 37 m² 149 €
Spandau
Raum Hans 22 m² 119 €
Wohnung Otto 36 m² 138 €
Apartment Lili 156 m² 209 €
<div class="table-responsive-wrapper">
    <table class="table--base">
        <thead>
            <tr>
                <th id="header_01" scope="col">Objekt</th>
                <th id="header_02" scope="col">Größe</th>
                <th id="header_03" scope="col">Preis</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th id="colgroup_a" scope="colgroup" colspan="3" class="table__colgroup">Prenzlauer Berg</th>
            </tr>
            <tr>
                <td headers="header_01 colgroup_a">Wohnung Marlene</td>
                <td headers="header_02 colgroup_a">20 m²</td>
                <td  headers="header_03 colgroup_a">120 €</td>

            </tr>
            <tr>
                <td headers="header_01 colgroup_a">Haus Fritz</td>
                <td headers="header_02 colgroup_a">30 m²</td>
                <td  headers="header_03 colgroup_a">140 €</td>
            </tr>
             <tr>
                <td headers="header_01 colgroup_a">Villa Uta</td>
                <td headers="header_02 colgroup_a">37 m²</td>
                <td  headers="header_03 colgroup_a">149 €</td>
            </tr>
            <tr>
                <th id="colgroup_b" scope="colgroup" colspan="3" class="table__colgroup">Spandau</th>
            </tr>
            <tr>
                <td headers="header_01 colgroup_b">Raum Hans</td>
                <td headers="header_02 colgroup_b">22 m²</td>
                <td  headers="header_03 colgroup_b">119 €</td>
            </tr>
            <tr>
                <td headers="header_01 colgroup_b">Wohnung Otto</td>
                <td headers="header_02 colgroup_b">36 m²</td>
                <td  headers="header_03 colgroup_b">138 €</td>
            </tr>
            <tr>
                <td headers="header_01 colgroup_b">Apartment Lili</td>
                <td headers="header_02 colgroup_b">156 m²</td>
                <td  headers="header_03 colgroup_b">209 €</td>
            </tr>
        </tbody>
    </table>
</div>
 

Beispiel 3: Tabelle mit Gruppen, horizontalen und vertikalen Headern

Pollenflugkalender

Heute Morgen Übermorgen
Bäume
Birke schwach stark mittel
Erle mittel schwach stark
Esche stark mittel schwach
Gräser
Roggen mittel schwach stark
Weizen schwach stark mittel
Hafer stark mittel schwach
<h2>Pollenflugkalender</h2>
<div class="table-responsive-wrapper">
    <table class="table--base">
        <thead>
            <tr>
                <td></td>
                <th id="header_01" scope="col">Heute</th>
                <th id="header_02" scope="col">Morgen</th>
                <th id="header_03" scope="col">Übermorgen</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th id="colgroup_a" scope="colgroup" colspan="4" class="table__colgroup">Bäume</th>
            </tr>
            <tr>
                <th id="baum1" scope="row">Birke</th>
                <td headers="header_01 colgroup_a baum1">schwach</td>
                <td headers="header_02 colgroup_a baum1">stark</td>
                <td  headers="header_03 colgroup_a baum1">mittel</td>

            </tr>
            <tr>
                <th id="baum2" scope="row">Erle</th>
                <td headers="header_01 colgroup_a baum2">mittel</td>
                <td headers="header_02 colgroup_a baum2">schwach</td>
                <td  headers="header_03 colgroup_a baum2">stark</td>
            </tr>
             <tr>
                <th id="baum3" scope="row">Esche</th>
                <td headers="header_01 colgroup_a baum3">stark</td>
                <td headers="header_02 colgroup_a baum3">mittel</td>
                <td  headers="header_03 colgroup_a baum3">schwach</td>
            </tr>
            <tr>
                <th id="colgroup_b" scope="colgroup" colspan="4" class="table__colgroup">Gräser</th>
            </tr>
            <tr>
                <th id="graeser1" scope="row">Roggen</th>
                <td headers="header_01 colgroup_b graeser1">mittel</td>
                <td headers="header_02 colgroup_b graeser1">schwach</td>
                <td  headers="header_03 colgroup_b graeser1">stark</td>
            </tr>
            <tr>
                <th id="graeser2" scope="row">Weizen</th>
                <td headers="header_01 colgroup_b graeser2">schwach</td>
                <td headers="header_02 colgroup_b graeser2">stark</td>
                <td  headers="header_03 colgroup_b graeser2">mittel</td>
            </tr>
            <tr>
                <th id="graeser3" scope="row">Hafer</th>
                <td headers="header_01 colgroup_b graeser3">stark</td>
                <td headers="header_02 colgroup_b graeser3">mittel</td>
                <td headers="header_03 colgroup_b graeser3">schwach</td>
            </tr>
        </tbody>
    </table>
</div>