Grundlagen von HTML-Tabellen

Dieser Artikel vermittelt Ihnen den Einstieg in HTML-Tabellen und behandelt die Grundlagen wie Zeilen, Zellen, Überschriften, das Zusammenfassen von mehreren Spalten und Zeilen und wie Sie alle Zellen einer Spalte für Stilzwecke gruppieren können.

Voraussetzungen: Grundlegende HTML-Kenntnisse, wie im Grundlegende HTML-Syntax behandelt.
Lernziele:
  • Wofür Tabellen gedacht sind — Strukturierung von Tabellendaten.
  • Wofür Tabellen nicht gedacht sind — Layout oder irgendetwas anderes.
  • Grundlegende Tabellen-Syntax — <table>, <tr> und <td>.
  • Definieren von Tabellenüberschriften mit <th>.
  • Mehrere Spalten und Zeilen mit colspan und rowspan zusammenfassen.

Was ist eine Tabelle?

Eine Tabelle ist ein strukturiertes Datenset, das aus Zeilen und Spalten besteht (Tabellendaten). Eine Tabelle ermöglicht es Ihnen, schnell und einfach Werte zu finden, die eine Verbindung zwischen verschiedenen Datentypen anzeigen, beispielsweise eine Person und ihr Alter oder ein Wochentag oder der Stundenplan für ein örtliches Schwimmbad.

Ein Beispiel für eine Tabelle, die Namen und Alter einiger Personen zeigt - Chris 38, Dennis 45, Sarah 29, Karen 47.

Ein Schwimmstundenplan, der eine Beispieldatentabelle zeigt

Tabellen werden sehr häufig in der menschlichen Gesellschaft verwendet und das schon seit langer Zeit, wie dieses US-Volkszählungsdokument aus dem Jahr 1800 zeigt:

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

Es ist daher kein Wunder, dass die Ersteller von HTML eine Methode bereitgestellt haben, um tabellarische Daten im Web zu strukturieren und darzustellen.

Wie funktioniert eine Tabelle?

Der Zweck einer Tabelle besteht darin, dass sie starr ist. Informationen werden durch visuelle Assoziationen zwischen Zeilen- und Spaltenüberschriften leicht interpretiert. Schauen Sie sich zum Beispiel die folgende Tabelle an und finden Sie einen jovianischen Gasriesen mit 62 Monden. Sie können die Antwort finden, indem Sie die relevanten Zeilen- und Spaltenüberschriften verknüpfen.

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

Tabellen-Styling

Sie können sich auch das Live-Planeten-Datenbeispiel auf GitHub ansehen! Eine Sache, die Ihnen auffallen wird, ist, dass die Tabelle dort etwas lesbarer ist — das liegt daran, dass die Tabelle, die Sie oben auf dieser Seite sehen, ein minimales Styling hat, während die GitHub-Version mehr bedeutendes CSS hat.

Täuschen Sie sich nicht; damit Tabellen im Web effektiv sind, müssen Sie einige Stilinformationen mit CSS bereitstellen, sowie eine gute solide Struktur mit HTML. In dieser Lektion konzentrieren wir uns auf den HTML-Teil; Sie werden mehr über das Styling von Tabellen später in unserer Lektion Tabellen stylen erfahren.

Wir werden uns in diesem Modul nicht auf CSS konzentrieren, aber wir haben Ihnen ein minimales CSS-Stylesheet zur Verfügung gestellt, das Ihre Tabellen lesbarer macht als die Standardeinstellung ohne irgendein Styling. Sie können das Stylesheet hier finden und Sie können auch eine HTML-Vorlage finden, die das Stylesheet anwendet — zusammen bieten sie einen guten Ausgangspunkt, um mit HTML-Tabellen zu experimentieren.

Wann sollten Sie HTML-Tabellen vermeiden?

HTML-Tabellen sollten für tabellarische Daten verwendet werden (Informationen, die in Zeilen und Spalten leicht zu bearbeiten sind) — dafür sind sie gedacht. Leider haben viele Menschen früher HTML-Tabellen verwendet, um Webseiten zu layouten, zum Beispiel eine Zeile, um einen Seitenheader zu enthalten, eine Zeile, um jede Inhalts-Spalte zu enthalten, eine Zeile, um die Fußzeile zu enthalten, usw. Diese Technik wurde in der Vergangenheit verwendet, weil die CSS-Unterstützung über verschiedene Browser hinweg früher wesentlich eingeschränkter war. Moderne Browser haben solide CSS-Unterstützung, daher sind tabellenbasierte Layouts nicht mehr erforderlich. Tabelle-Layouts sind jetzt äußerst selten, aber Sie könnten sie in einigen Ecken des Internets immer noch sehen.

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

  1. Layout-Tabellen verringern die Zugänglichkeit für sehbehinderte Benutzer: Bildschirmleser, die von blinden Personen 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-Layout-Techniken, wird die Ausgabe der Bildschirmleser für ihre Benutzer verwirrend sein.
  2. Tabellen erzeugen Tag-Salat: Wie oben erwähnt, beinhalten Tabellen-Layouts in der Regel komplexere Markup-Strukturen als ordnungsgemäße Layout-Techniken. Dies kann dazu führen, dass der Code schwerer zu schreiben, zu warten und zu debuggen ist.
  3. Tabellen sind nicht automatisch responsiv: Wenn Sie ordnungsgemäße Layout-Container verwenden (wie <header>, <section>, <article> oder <div>), beträgt ihre Breite standardmäßig 100% ihres übergeordneten Elements. Tabellen hingegen sind standardmäßig nach ihrem Inhalt dimensioniert, sodass zusätzliche Maßnahmen erforderlich sind, um die Tabellenlayout-Styling effektiv auf eine Vielzahl von Geräten anzuwenden.

Erstellen Ihrer ersten Tabelle

Wir haben genug über Tabellentheorie gesprochen, also lassen Sie uns in ein praktisches Beispiel eintauchen und Ihnen helfen, eine einfache Tabelle zu erstellen.

  1. Erstellen Sie zunächst eine Kopie von blank-template.html und minimal-table.css in einem neuen Verzeichnis auf Ihrem lokalen Rechner. Die HTML-Vorlage enthält bereits ein <link>-Element, um das CSS auf das HTML anzuwenden, sodass Sie sich darüber keine Gedanken machen müssen.

  2. Der Inhalt jeder Tabelle ist von diesen zwei Tags umschlossen: <table></table>. Fügen Sie diese in den Body Ihres HTML-Dokumentes ein.

  3. Der kleinste Container innerhalb einer Tabelle ist eine Tabellenzelle, die mit einem <td>-Element erstellt wird ("td" steht für "table data"). Fügen Sie das folgende innerhalb Ihrer Tabellen-Tags ein:

    html
    <td>Hi, I'm your first cell.</td>
    
  4. Wenn wir eine Zeile mit vier Zellen haben möchten, 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 nebeneinander 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 wächst und um nachfolgende Zellen in einer zweiten Zeile zu platzieren, müssen wir das <tr>-Element verwenden ('tr' steht für 'table row'). Schauen wir uns das jetzt genauer an.

  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, wo Sie eine Zeile erstellt haben, versuchen Sie ein oder zwei weitere zu erstellen — jede Zeile muss in einem zusätzlichen <tr>-Element eingeschlossen sein, wobei jede Zelle in einem <td> enthalten ist.

Hier klicken, um die Lösung anzuzeigen

Ihr fertiges HTML sollte in etwa so aussehen:

html
<table>
  <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>

  <tr>
    <td>Second row, first cell.</td>
    <td>Cell 2.</td>
    <td>Cell 3.</td>
    <td>Cell 4.</td>
  </tr>
</table>

Sie können diesen Code auch auf GitHub unter simple-table.html finden (sehen Sie sich auch die live Version an).

Hinzufügen von Kopfzeilen mit <th>-Elementen

Nun wenden wir uns den Tabellenüberschriften zu — speziellen Zellen, die am Anfang einer Zeile oder Spalte stehen und den Datentyp definieren, den diese Zeile oder Spalte enthält (als Beispiel siehe die "Person" und "Age" Zellen im ersten Beispiel, das in diesem Artikel gezeigt wird). Um zu veranschaulichen, warum sie nützlich sind, sehen 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>

Und jetzt die tatsächlich gerenderte Tabelle:

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

Hinzufügen von Kopfzeilen zur Hundetabelle

Jetzt möchten wir, dass Sie versuchen, das Beispiel der Hundetabelle zu verbessern, indem Sie einige Überschriften hinzufügen.

  1. Erstellen Sie zuerst eine lokale Kopie unserer dogs-table.html und minimal-table.css Dateien in einem neuen Verzeichnis auf Ihrem lokalen Rechner.
  2. Um die Tabellenüberschriften sowohl visuell als auch semantisch als Überschriften zu erkennen, können Sie das <th>-Element verwenden ("th" steht für "table header"). Dies funktioniert genauso 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 jetzt wie Überschriften aussehen.
Hier klicken, um die Lösung anzuzeigen

Ihr fertiges HTML sollte in etwa so aussehen:

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

Sie können diesen Code auch auf GitHub unter dogs-table-fixed.html finden (sehen Sie sich auch die live Version an).

Warum sind Kopfzeilen nützlich?

Wir haben diese Frage teilweise bereits beantwortet — es ist einfacher, die gesuchten Daten zu finden, wenn die Überschriften klar hervorstechen, und das Design sieht im Allgemeinen einfach besser aus.

Hinweis: Tabellenüberschriften kommen mit einem gewissen Standard-CSS-Styling — sie sind fett und zentriert, auch wenn Sie Ihrem Tisch kein eigenes Styling hinzufügen, um ihnen zu helfen, sich abzuheben.

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

Ermöglichen, dass Zellen mehrere Zeilen und Spalten überspannen

Manchmal möchten wir, dass Zellen mehrere Zeilen oder Spalten überspannen. Betrachten Sie das folgende einfache Beispiel, das die Namen gewöhnlicher Tiere zeigt. In einigen Fällen möchten wir die Namen der Männchen und Weibchen neben dem Namen des Tieres anzeigen. Manchmal wollen wir das nicht, und in solchen Fällen wollen wir einfach, dass der Tiername die gesamte Tabelle überspannt.

Das initiale 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 liefert uns nicht ganz das, was wir wollen:

Korrigieren des Layouts mit rowspan und colspan

Wir benötigen eine Möglichkeit, um "Animals", "Hippopotamus" und "Crocodile" über zwei Spalten zu erstrecken, und "Horse" und "Chicken" vertikal über zwei Zeilen zu erstrecken. Glücklicherweise haben Tabellenüberschriften und -zellen die Attribute colspan und rowspan, die es uns ermöglichen, genau das zu tun. Beide akzeptieren einen ohne Einheit angegebenen Zahlenwert, der die Anzahl der Zeilen oder Spalten angibt, die überspannt werden sollen. Zum Beispiel macht colspan="2" eine Zelle über zwei Spalten hinaus.

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

  1. Erstens, erstellen Sie eine lokale Kopie unserer animals-table.html und minimal-table.css Dateien in einem neuen Verzeichnis auf Ihrem lokalen Rechner. Das HTML enthält dasselbe Tierbeispiel, 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 Sie Ihren Code und öffnen Sie ihn in einem Browser, um die Verbesserung zu sehen.
Hier klicken, um die Lösung anzuzeigen

Ihr fertiges HTML sollte in etwa so aussehen:

html
<table>
  <tr>
    <th colspan="2">Animals</th>
  </tr>
  <tr>
    <th colspan="2">Hippopotamus</th>
  </tr>
  <tr>
    <th rowspan="2">Horse</th>
    <td>Mare</td>
  </tr>
  <tr>
    <td>Stallion</td>
  </tr>
  <tr>
    <th colspan="2">Crocodile</th>
  </tr>
  <tr>
    <th rowspan="2">Chicken</th>
    <td>Hen</td>
  </tr>
  <tr>
    <td>Rooster</td>
  </tr>
</table>

Sie können diesen Code auch auf GitHub unter animals-table-fixed.html finden (sehen Sie sich auch die live Version an).

Zusammenfassung

Damit sind die Grundlagen von HTML-Tabellen abgeschlossen. Im nächsten Artikel schauen wir uns einige weitere Funktionen an, die verwendet werden können, um HTML-Tabellen für sehbehinderte Menschen zugänglicher zu machen.