Grundlagen von HTML-Tabellen

Dieser Artikel führt Sie in HTML-Tabellen ein und behandelt die grundlegenden Konzepte wie Zeilen, Zellen, Überschriften, das Zusammenführen von Zellen über mehrere Spalten und Zeilen hinweg und wie man alle Zellen in einer Spalte für Styling-Zwecke gruppiert.

Voraussetzungen: Grundkenntnisse in HTML, wie sie in Grundlegende HTML-Syntax behandelt werden.
Lernziele:
  • Wofür Tabellen gedacht sind — um tabellarische Daten zu strukturieren.
  • Wofür Tabellen nicht gedacht sind — Layout oder alles andere.
  • Basis-Tabellensyntax — <table>, <tr> und <td>.
  • Definieren von Tabellenüberschriften mit <th>.
  • Verwenden von colspan und rowspan, um mehrere Spalten und Zeilen zu überspannen.

Was ist eine Tabelle?

Eine Tabelle ist ein strukturierter Satz von Daten, bestehend aus Zeilen und Spalten (tabellarische Daten). Eine Tabelle ermöglicht es Ihnen, schnell und einfach Werte zu finden, die eine Art Verbindung zwischen verschiedenen Datentypen anzeigen, wie zum Beispiel eine Person und ihr Alter, ein Wochentag oder der Zeitplan eines örtlichen Schwimmbads.

Eine Beispielstabelle, die Namen und Alter einiger Personen zeigt - Chris 38, Dennis 45, Sarah 29, Karen 47.

Ein Schwimmplan zeigt eine Beispiel-Datentabelle

Tabellen werden sehr häufig in der Gesellschaft verwendet und das schon seit langer Zeit, was durch dieses US-amerikanische Zensusdokument von 1800 belegt wird:

Ein sehr altes Pergamentdokument; die Daten sind nicht leicht lesbar, aber es zeigt eindeutig eine verwendete Datentabelle.

Es ist daher kein Wunder, dass die Erfinder von HTML eine Möglichkeit bereitgestellt haben, um tabellarische Daten im Web zu strukturieren und darzustellen.

Wie funktioniert eine Tabelle?

Der Zweck einer Tabelle ist, dass sie starr ist. Informationen werden durch visuelle Assoziationen zwischen Zeilen- und Spaltenüberschriften leicht interpretiert. Schauen Sie zum Beispiel auf die folgende Tabelle und finden Sie einen Jupitermond-Gasplaneten mit 62 Monden. Sie können die Antwort finden, indem Sie die relevanten Zeilen- und Spaltenüberschriften assoziieren.

Wenn HTML-Tabellen korrekt implementiert sind, werden sie von Barrierefreiheitswerkzeugen wie Bildschirmlesern gut behandelt, sodass eine erfolgreiche HTML-Tabelle das Erlebnis sowohl für sehende als auch für sehbehinderte Nutzer verbessern sollte.

Styling einer Tabelle

Sie können sich auch das Live-Beispiel auf GitHub ansehen! Eine Sache, die Ihnen auffallen wird, ist, dass die Tabelle dort etwas lesbarer aussieht — dies liegt daran, dass die Tabelle, die Sie oben auf dieser Seite sehen, minimal gestylt ist, während die GitHub-Version eine umfangreichere CSS-Formatierung hat.

Um keinen falschen Eindruck zu erwecken; damit Tabellen im Web effektiv sind, müssen Sie etwas Styling-Informationen mit CSS bereitstellen und eine gute solide Struktur mit HTML schaffen. In dieser Lektion konzentrieren wir uns auf den HTML-Teil; mehr über das Styling von Tabellen erfahren Sie später, in unserer Lektion Stil von Tabellen.

Wir konzentrieren uns in diesem Modul nicht auf CSS, aber wir haben ein minimales CSS-Stylesheet bereitgestellt, das Sie verwenden können, um Ihre Tabellen lesbarer als den Standard ohne jegliches Styling zu machen. Sie können das Stylesheet hier finden, und Sie können auch eine HTML-Vorlage finden, die das Stylesheet anwendet — diese zusammen geben Ihnen einen guten Ausgangspunkt, um mit HTML-Tabellen zu experimentieren.

Wann sollte man HTML-Tabellen vermeiden?

HTML-Tabellen sollten für tabellarische Daten verwendet werden (Informationen, die leicht in Zeilen und Spalten verarbeitet werden können) — dafür sind sie ausgelegt. Leider haben viele Menschen früher HTML-Tabellen verwendet, um Webseiten zu gestalten, zum Beispiel eine Zeile, um eine Seitenüberschrift zu enthalten, eine Zeile für jede Inhaltskolonne, eine Zeile für den Fußzeilenbereich usw. Diese Technik wurde verwendet, da die CSS-Unterstützung in den verschiedenen Browsern früher viel eingeschränkter war. Moderne Browser haben eine solide CSS-Unterstützung, daher sind tabellenbasierte Layouts inzwischen äußerst selten, aber man kann sie in einigen Ecken des Webs noch finden.

Kurz gesagt, die Verwendung von Tabellen für Layout anstelle von CSS-Layouttechniken ist eine schlechte Idee. Die Hauptgründe dafür sind:

  1. Layout-Tabellen reduzieren die Barrierefreiheit für sehbehinderte Nutzer: Bildschirmleser, die von blinden Menschen verwendet werden, interpretieren die Tags, die in einer HTML-Seite existieren, und lesen die Inhalte dem Benutzer vor. Da Tabellen nicht das richtige Werkzeug für Layouts sind und das Markup komplexer ist als bei CSS-Layouttechniken, wird die Ausgabe der Bildschirmleser verwirrend für deren Nutzer sein.
  2. Tabellen produzieren Tag-Salat: Wie bereits erwähnt, beinhalten Tabellenlayouts in der Regel komplexere Markup-Strukturen als richtige Layouttechniken. Dies kann dazu führen, dass der Code schwerer zu schreiben, zu pflegen und zu debuggen ist.
  3. Tabellen sind nicht automatisch responsiv: Wenn Sie richtige Layout-Container verwenden (wie <header>, <section>, <article>, oder <div>), ist deren Breite standardmäßig 100% ihres Elternelements. Tabellen hingegen sind standardmäßig nach ihrem Inhalt dimensioniert, sodass zusätzliche Maßnahmen erforderlich sind, um Styling von Tabellenlayouts effektiv über verschiedene Geräte hinweg zu verwenden.

Aktives Lernen: Erstellen Ihrer ersten Tabelle

Wir haben genug über Tabellentheorie gesprochen, also lasst uns ein Praxisbeispiel machen und Schritt für Schritt eine einfache Tabelle erstellen.

  1. Machen Sie zuerst eine lokale Kopie von blank-template.html und minimal-table.css in einem neuen Verzeichnis auf Ihrer lokalen Maschine.

  2. Der Inhalt jeder Tabelle wird von diesen zwei Tags eingeschlossen: <table></table>. Fügen Sie diese in den Körper Ihres HTML ein.

  3. Der kleinste Container innerhalb einer Tabelle ist eine Tabellenzelle, die durch ein <td>-Element erstellt wird ('td' steht für 'table data'). Fügen Sie das folgende in Ihre Tabellentags ein:

    html
    <td>Hi, I'm your first cell.</td>
    
  4. Wenn wir eine Zeile von vier Zellen wollen, müssen wir diese Tags dreimal kopieren. Aktualisieren Sie den Inhalt Ihrer Tabelle, um so auszusehen:

    html
    <td>Hi, I'm your first cell.</td>
    <td>I'm your second cell.</td>
    <td>I'm your third cell.</td>
    <td>I'm your fourth cell.</td>
    

Wie Sie sehen werden, werden die Zellen nicht untereinander platziert, sondern sie sind automatisch in derselben Zeile ausgerichtet. Jedes <td>-Element erstellt eine einzelne Zelle und zusammen bilden sie die erste Zeile. Jede Zelle, die wir hinzufügen, lässt die Zeile länger werden.

Um zu verhindern, dass diese Zeile weiter wächst, und um nachfolgende Zellen in einer zweiten Zeile anzufangen, müssen wir das <tr>-Element verwenden ('tr' steht für 'table row'). Lassen Sie uns dies nun untersuchen.

  1. Platzieren Sie die vier Zellen, die Sie bereits erstellt haben, innerhalb von <tr>-Tags, wie folgt:

    html
    <tr>
      <td>Hi, I'm your first cell.</td>
      <td>I'm your second cell.</td>
      <td>I'm your third cell.</td>
      <td>I'm your fourth cell.</td>
    </tr>
    
  2. Jetzt, da Sie eine Zeile haben, versuchen Sie eine oder zwei weitere zu erstellen — jede Zeile muss in ein zusätzliches <tr>-Element eingeschlossen werden, mit jeder Zelle in einem <td>.

Ergebnis

Das sollte zu einer Tabelle führen, die etwa so aussieht:

Hinweis: Sie finden dies auch auf GitHub als simple-table.html (sehen Sie es auch live).

Hinzufügen von Überschriften mit <th>-Elementen

Lassen Sie uns nun unsere Aufmerksamkeit auf Tabellenüberschriften richten — spezielle Zellen, die am Anfang einer Zeile oder Spalte stehen und die Art von Daten definieren, die die Zeile oder Spalte enthält (siehe zum Beispiel die Zellen "Person" und "Alter" im ersten in diesem Artikel gezeigten Beispiel). Um zu verdeutlichen, warum sie nützlich sind, schauen Sie sich das folgende Tabellenbeispiel an. Zuerst der Quellcode:

html
<table>
  <tr>
    <td>&nbsp;</td>
    <td>Knocky</td>
    <td>Flor</td>
    <td>Ella</td>
    <td>Juan</td>
  </tr>
  <tr>
    <td>Breed</td>
    <td>Jack Russell</td>
    <td>Poodle</td>
    <td>Streetdog</td>
    <td>Cocker Spaniel</td>
  </tr>
  <tr>
    <td>Age</td>
    <td>16</td>
    <td>9</td>
    <td>10</td>
    <td>5</td>
  </tr>
  <tr>
    <td>Owner</td>
    <td>Mother-in-law</td>
    <td>Me</td>
    <td>Me</td>
    <td>Sister-in-law</td>
  </tr>
  <tr>
    <td>Eating Habits</td>
    <td>Eats everyone's leftovers</td>
    <td>Nibbles at food</td>
    <td>Hearty eater</td>
    <td>Will eat till he explodes</td>
  </tr>
</table>

Nun die tatsächlich gerenderte Tabelle:

Das Problem hier ist, dass, obwohl Sie irgendwie verstehen können, was vor sich geht, es nicht so einfach ist, Daten zu kreuzreferenzieren, wie es sein könnte. Wenn die Spalten- und Zeilenüberschriften in irgendeiner Weise hervorstechen würden, wäre es viel besser.

Aktives Lernen: Tabellenüberschriften

Lassen Sie uns versuchen, diese Tabelle zu verbessern.

  1. Erstellen Sie zuerst eine lokale Kopie unserer dogs-table.html und minimal-table.css Dateien in einem neuen Verzeichnis auf Ihrer lokalen Maschine. Das HTML enthält dasselbe Hunde-Beispiel, das Sie oben gesehen haben.
  2. Um die Tabellenüberschriften sowohl optisch als auch semantisch als Überschriften zu erkennen, können Sie das <th>-Element verwenden ('th' steht für 'table header'). Dies funktioniert genau so wie ein <td>, außer dass es eine Überschrift und keine normale Zelle bezeichnet. Gehen Sie in Ihr HTML und ändern Sie alle <td>-Elemente, die die Tabellenüberschriften umgeben, in <th>-Elemente.
  3. Speichern Sie Ihr HTML und laden Sie es in einem Browser, und Sie sollten sehen, dass die Überschriften nun wie Überschriften aussehen.

Hinweis: Sie können unser fertiges Beispiel auf GitHub als dogs-table-fixed.html finden (sehen Sie es auch live).

Warum sind Überschriften nützlich?

Wir haben diese Frage bereits teilweise beantwortet — es ist einfacher, die Daten zu finden, die Sie suchen, wenn die Überschriften deutlich hervorstechen, und das Design sieht einfach allgemein besser aus.

Hinweis: Tabellenüberschriften haben standardmäßig ein gewisses Styling — sie sind fett und zentriert, auch wenn Sie kein eigenes Styling zur Tabelle hinzufügen, um sie hervorzuheben.

Tabellenüberschriften haben auch den zusätzlichen Vorteil — zusammen mit dem scope-Attribut (über das wir im nächsten Artikel lernen werden), ermöglichen sie es, Tabellen barrierefreier zu gestalten, indem jede Überschrift mit allen Daten in derselben Zeile oder Spalte verknüpft wird. Bildschirmleser sind dann in der Lage, eine ganze Zeile oder Spalte von Daten auf einmal vorzulesen, was ziemlich nützlich ist.

Erlauben, dass Zellen mehrere Zeilen und Spalten überspannen

Manchmal möchten wir, dass Zellen mehrere Zeilen oder Spalten überspannen. Nehmen Sie folgendes einfaches Beispiel, das die Namen gemeinsamer Tiere zeigt. In einigen Fällen möchten wir die Namen der Männchen und Weibchen neben dem Tiernamen anzeigen. Manchmal nicht, und in solchen Fällen soll der Tiername die ganze Tabelle überspannen.

Das anfängliche Markup sieht so aus:

html
<table>
  <tr>
    <th>Animals</th>
  </tr>
  <tr>
    <th>Hippopotamus</th>
  </tr>
  <tr>
    <th>Horse</th>
    <td>Mare</td>
  </tr>
  <tr>
    <td>Stallion</td>
  </tr>
  <tr>
    <th>Crocodile</th>
  </tr>
  <tr>
    <th>Chicken</th>
    <td>Hen</td>
  </tr>
  <tr>
    <td>Rooster</td>
  </tr>
</table>

Aber die Ausgabe entspricht nicht ganz unseren Vorstellungen:

Wir brauchen eine Möglichkeit, "Animals", "Hippopotamus" und "Crocodile" über zwei Spalten zu spannen, und "Horse" und "Chicken" über zwei Zeilen nach unten. Glücklicherweise haben Tabellenüberschriften und Zellen die Attribute colspan und rowspan, die es uns ermöglichen, genau das zu tun. Beide akzeptieren einen wertlosen Zahlenwert, der der Anzahl der Zeilen oder Spalten entspricht, die Sie überspannen möchten. Zum Beispiel macht colspan="2" eine Zelle über zwei Spalten.

Lassen Sie uns colspan und rowspan verwenden, um diese Tabelle zu verbessern.

  1. Erstellen Sie zuerst eine lokale Kopie unserer animals-table.html und minimal-table.css Dateien in einem neuen Verzeichnis auf Ihrer lokalen Maschine. Das HTML enthält dasselbe Tier-Beispiel, das Sie oben gesehen haben.
  2. Verwenden Sie als Nächstes colspan, um "Animals", "Hippopotamus" und "Crocodile" über zwei Spalten zu spannen.
  3. Verwenden Sie schließlich rowspan, um "Horse" und "Chicken" über zwei Zeilen zu spannen.
  4. Speichern und öffnen Sie Ihren Code in einem Browser, um die Verbesserung zu sehen.

Hinweis: Sie können unser fertiges Beispiel auf GitHub als animals-table-fixed.html finden (sehen Sie es auch live).

Zusammenfassung

Damit endet das Grundlagenwissen zu HTML-Tabellen. Im nächsten Artikel werden wir uns weitere Funktionen ansehen, die verwendet werden können, um HTML-Tabellen für sehbehinderte Menschen zugänglicher zu machen.