HTML-Tabelle Grundlagen

Dieser Artikel gibt Ihnen einen Einstieg in HTML-Tabellen und deckt die absoluten Grundlagen ab, wie Zeilen, Zellen, Überschriften, das Überlappen von Zellen über mehrere Spalten und Zeilen hinweg und wie Sie alle Zellen in einer Spalte für Styling-Zwecke gruppieren können.

Voraussetzungen: Grundkenntnisse in HTML, wie in Grundlegende HTML-Syntax behandelt.
Lernziele:
  • Wofür Tabellen gedacht sind — zum Strukturieren tabellarischer Daten.
  • Wofür Tabellen nicht gedacht sind — Layout oder irgendetwas anderes.
  • Grundlegende Tabellensyntax — <table>, <tr>, und <td>.
  • Definieren von Tabellenüberschriften mit <th>.
  • Das Überlappen mehrerer Spalten und Zeilen mit colspan und rowspan.

Was ist eine Tabelle?

Eine Tabelle ist eine strukturierte Datenmenge, die aus Zeilen und Spalten besteht (tabellarische Daten). Eine Tabelle ermöglicht Ihnen, schnell und einfach Werte abzufragen, die eine Art Verbindung zwischen verschiedenen Arten von Daten anzeigen, zum Beispiel eine Person und ihr Alter, einen Wochentag oder den Zeitplan eines örtlichen Schwimmbades.

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

Ein Schwimmzeitplan, der eine Beispieldatentabelle zeigt

Tabellen sind in der menschlichen Gesellschaft sehr häufig und werden schon seit langem verwendet, wie dieses US-Zensusdokument von 1800 zeigt:

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

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

Wie funktioniert eine Tabelle?

Der Sinn einer Tabelle ist, dass sie starr ist. Informationen werden leicht interpretiert, indem visuelle Verbindungen zwischen Zeilen- und Spaltenüberschriften hergestellt werden. Betrachten Sie die folgende Tabelle, um beispielsweise einen Jupiter-Gasriesen mit 62 Monden zu finden. Sie können die Antwort finden, indem Sie die relevanten Zeilen- und Spaltenüberschriften assoziieren.

Wenn HTML-Tabellen korrekt implementiert werden, werden sie von Barrierefreiheits-Tools wie Bildschirmlesegeräten gut gehandhabt, sodass eine erfolgreiche HTML-Tabelle die Erfahrung sowohl für sehende als auch für sehbehinderte Benutzer verbessern sollte.

Tabellen-Styling

Sie können sich auch das Live-Beispiel auf GitHub ansehen! Ihnen wird auffallen, dass die Tabelle dort etwas besser lesbar aussieht — das liegt daran, dass die Tabelle, die Sie oben auf dieser Seite sehen, minimal gestylt ist, während die GitHub-Version mehr CSS aufweist.

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

Wir werden uns in diesem Modul nicht auf CSS konzentrieren, aber wir haben eine minimale CSS-Stylesheet bereitgestellt, die Ihre Tabellen lesbarer macht als die Standardeinstellung ohne jegliches Styling. Sie finden das Stylesheet hier, und Sie können auch ein HTML-Template finden, das das Stylesheet anwendet — zusammen geben Ihnen diese einen guten Ausgangspunkt zum Experimentieren mit HTML-Tabellen.

Wann sollten Sie HTML-Tabellen NICHT verwenden?

HTML-Tabellen sollten für tabellarische Daten verwendet werden — dafür sind sie konzipiert. Leider haben viele Leute früher HTML-Tabellen verwendet, um Webseiten zu gestalten, z.B. eine Zeile für die Kopfzeile, eine Zeile für die Inhaltsspalten, eine Zeile für die Fußzeile, etc. Sie können mehr Details und ein Beispiel unter Seitenlayouts in unserem Barrierefreiheits-Lernmodul finden. Dies war früher häufig der Fall, weil die CSS-Unterstützung über Browser hinweg schrecklich war; Tabellenlayouts sind heutzutage viel seltener, aber Sie könnten sie noch in einigen Ecken des Webs sehen.

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

  1. Layout-Tabellen reduzieren die Barrierefreiheit für sehbehinderte Benutzer: Bildschirmleser, die von blinden Menschen verwendet werden, interpretieren die Tags, die in einer HTML-Seite vorhanden sind, und lesen den Inhalt dem Benutzer vor. Da Tabellen nicht das richtige Werkzeug für das Layout sind und das Markup komplexer ist als bei CSS-Layouttechniken, wird die Ausgabe der Bildschirmleser für ihre Benutzer verwirrend sein.
  2. Tabellen produzieren Tagsalat: Wie oben erwähnt, umfassen Tabellenlayouts im Allgemeinen komplexere Markup-Strukturen als richtige Layouttechniken. Dies kann dazu führen, dass der Code schwieriger zu schreiben, zu warten und zu debuggen ist.
  3. Tabellen sind nicht automatisch reaktionsfähig: Wenn Sie richtige Layoutcontainer verwenden (wie <header>, <section>, <article> oder <div>), beträgt ihre Breite standardmäßig 100% ihres Elternelements. Tabellen hingegen werden standardmäßig nach ihrem Inhalt bemessen, also sind zusätzliche Maßnahmen erforderlich, um das Styling von Tabellendesigns effektiv auf verschiedenen Geräten zu gewährleisten.

Aktives Lernen: Erstellen Sie Ihre erste Tabelle

Wir haben genug über Tabellentheorie gesprochen, also tauchen wir in ein praktisches Beispiel ein und bauen eine einfache Tabelle auf.

  1. Machen Sie zunächst eine lokale Kopie von blank-template.html und minimal-table.css in einem neuen Verzeichnis auf Ihrem lokalen Rechner.

  2. Der Inhalt jeder Tabelle ist von diesen beiden Tags umschlossen: <table></table>. Fügen Sie diese innerhalb des Body Ihrer HTML ein.

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

    html
    <td>Hi, I'm your first cell.</td>
    
  4. Wenn wir eine Zeile mit vier Zellen 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 übereinander platziert, sondern automatisch in der gleichen Zeile miteinander ausgerichtet. Jedes <td>-Element erzeugt 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 weitere Zellen in einer zweiten Zeile zu platzieren, müssen wir das <tr>-Element verwenden ('tr' steht für 'table row'). Lassen Sie uns dies jetzt untersuchen.

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

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

Ergebnis

Dies sollte zu einer Tabelle führen, die in etwa wie folgt aussieht:

Hinweis: Sie können dies auch auf GitHub unter simple-table.html finden (siehe es auch live).

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

Wenden wir uns nun den Tabellenüberschriften zu — spezielle Zellen, die am Anfang einer Zeile oder Spalte stehen und die Art der Daten definieren, die diese Zeile oder Spalte enthält (als Beispiel siehe die "Person" und "Alter"-Zellen im ersten Beispiel, das in diesem Artikel gezeigt wird). Um zu veranschaulichen, warum sie nützlich sind, werfen Sie einen Blick auf das folgende Tabellenbeispiel. 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 man irgendwie erahnen kann, was los ist, es nicht so einfach ist, Daten zu überkreuzen, wie es sein könnte. Wenn die Spalten- und Zeilenüberschriften auf eine gewisse Weise herausstünden, wäre es viel besser.

Aktives Lernen: Tabellenüberschriften

Versuchen wir, diese Tabelle zu verbessern.

  1. Erstellen Sie zunächst eine lokale Kopie unserer dogs-table.html und minimal-table.css-Dateien in einem neuen Verzeichnis auf Ihrem lokalen Rechner. Das HTML enthält dasselbe Hunde-Beispiel, das Sie oben gesehen haben.
  2. Um die Tabellenüberschriften als Überschriften zu erkennen, sowohl visuell als auch semantisch, können Sie das <th>-Element ('th' steht für 'table header') verwenden. Dies funktioniert genauso wie ein <td>, außer dass es eine Überschrift und keine normale Zelle kennzeichnet. 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.

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

Warum sind Überschriften nützlich?

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

Hinweis: Tabellenüberschriften kommen mit einem gewissen Standardstyling — sie sind fett und zentriert, selbst wenn Sie kein eigenes Styling zur Tabelle hinzufügen, um sie hervorzuheben.

Tabellenüberschriften haben auch einen zusätzlichen Vorteil — zusammen mit dem scope-Attribut (über das wir im nächsten Artikel mehr erfahren werden) ermöglichen sie es Ihnen, Tabellen zugänglicher zu machen, indem jede Überschrift mit allen Daten derselben Zeile oder Spalte assoziiert wird. Bildschirmlesegeräte 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 überlappen

Manchmal wollen wir, dass Zellen mehrere Zeilen oder Spalten überlappen. Nehmen Sie das folgende einfache Beispiel, das die Namen von gewöhnlichen Tieren zeigt. In einigen Fällen möchten wir die Namen der Männchen und Weibchen neben dem Tiernamen anzeigen. In solchen Fällen möchten wir nicht, dass der Tiername die gesamte Tabelle überspannt.

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 gibt uns nicht genau das, was wir wollen:

Wir brauchen eine Möglichkeit, "Tiere", "Nilpferd" und "Krokodil" über zwei Spalten und "Pferd" und "Huhn" über zwei Zeilen hinweg zu spannen. Glücklicherweise haben Tabellenüberschriften und Zellen die Attribute colspan und rowspan, die es uns ermöglichen, genau das zu tun. Beide akzeptieren einen einheitslosen Zahlenwert, der der Anzahl der Zeilen oder Spalten entspricht, die Sie überlappen möchten. Zum Beispiel macht colspan="2" eine Zelle über zwei Spalten hinweg.

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

  1. Erstellen Sie zunächst 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 "Tiere", "Nilpferd" und "Krokodil" über zwei Spalten hinweg zu spanen.
  3. Verwenden Sie schließlich rowspan, um "Pferd" und "Huhn" über zwei Zeilen hinweg zu spannen.
  4. Speichern und öffnen Sie Ihren Code in einem Browser, um die Verbesserung zu sehen.

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

Zusammenfassung

Damit sind die Grundlagen von HTML-Tabellen abgeschlossen. Im nächsten Artikel werden wir uns einige weitere Funktionen ansehen, mit denen HTML-Tabellen für sehbehinderte Menschen zugänglicher gemacht werden können.