Grundlagen von HTML-Tabellen
Dieser Artikel bringt Ihnen HTML-Tabellen näher und behandelt die Grundlagen wie Zeilen, Zellen, Überschriften, das Spannen von Zellen über mehrere Spalten und Zeilen sowie das Gruppieren aller Zellen in einer Spalte zu Styling-Zwecken.
Voraussetzungen: | Grundkenntnisse in HTML, wie sie im Grundlegende HTML-Syntax behandelt werden. |
---|---|
Lernziele: |
|
Was ist eine Tabelle?
Eine Tabelle ist eine strukturierte Menge von Daten, die aus Zeilen und Spalten besteht (tabellarische Daten). Eine Tabelle ermöglicht es Ihnen, schnell und einfach Werte nachzuschlagen, die eine Art Verbindung zwischen verschiedenen Arten von Daten anzeigen, zum Beispiel eine Person und ihr Alter oder einen Wochentag oder den Zeitplan eines örtlichen Schwimmbades.
Tabellen werden sehr häufig in der Gesellschaft verwendet, und das schon seit langem, wie dieses US-Volkszählungsdokument aus dem Jahr 1800 zeigt:
Es ist daher kein Wunder, dass die Ersteller von HTML eine Möglichkeit zur Strukturierung und Präsentation von tabellarischen Daten im Web bereitstellten.
Wie funktioniert eine Tabelle?
Der Punkt einer Tabelle ist, 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 entsprechenden Zeilen- und Spaltenüberschriften miteinander in Verbindung bringen.
Wenn sie korrekt implementiert sind, werden HTML-Tabellen von Barrierefreiheitswerkzeugen wie Bildschirmlesegeräten gut gehandhabt, sodass eine erfolgreiche HTML-Tabelle das Erlebnis sowohl für sehende als auch für sehbehinderte Benutzer verbessern sollte.
Tabellengestaltung
Sie können sich auch das Live-Beispiel der Planeten-Daten auf GitHub ansehen! Eine Sache, die Sie bemerken werden, ist, dass die Tabelle dort etwas lesbarer aussieht — das liegt daran, dass die Tabelle, die Sie oben auf dieser Seite sehen, nur minimal gestaltet ist, während die GitHub-Version erheblich CSS angewendet hat.
Haben Sie keine Illusionen; 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 Tabellen stylen-Lektion mehr über das Styling von Tabellen.
Wir werden uns in diesem Modul nicht auf CSS konzentrieren, aber wir haben ein minimales CSS-Stylesheet bereitgestellt, das Ihre Tabellen lesbarer macht als das Standardlayout, das Sie ohne Styling erhalten. Sie finden das Stylesheet hier, und Sie können auch eine HTML-Vorlage finden, die das Stylesheet anwendet — zusammen bieten sie Ihnen 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 sich leicht in Zeilen und Spalten bearbeiten lassen) — dafür sind sie entworfen. Unglücklicherweise haben viele Menschen früher HTML-Tabellen verwendet, um Webseiten zu layouten, zum Beispiel eine Zeile, um einen Seitenkopf zu enthalten, eine Zeile, um jede Inhaltsspalte zu enthalten, eine Zeile, um das Footer zu enthalten, usw. Diese Technik wurde in der Vergangenheit verwendet, weil die Unterstützung von CSS über verschiedene Browser hinweg früher stark eingeschränkt war. Moderne Browser haben eine solide CSS-Unterstützung, sodass Tabellen-basierte Layouts nicht mehr benötigt werden. Tabellenlayouts sind jetzt extrem selten, Sie könnten sie jedoch noch in einigen Ecken des Webs sehen.
Kurz gesagt, die Verwendung von Tabellen für Layouts anstelle von CSS-Layout-Techniken ist keine gute Idee. Die Hauptgründe sind wie folgt:
- Layout-Tabellen reduzieren die Barrierefreiheit für sehbehinderte Benutzer: Bildschirmlesegeräte, die von blinden Personen verwendet werden, interpretieren die Tags, die in einer HTML-Seite vorhanden sind, und lesen dem Benutzer den Inhalt vor. Da Tabellen nicht das richtige Werkzeug für Layouts sind und das Markup im Vergleich zu CSS-Layout-Techniken komplexer ist, wird die Ausgabe der Bildschirmlesegeräte für ihre Benutzer verwirrend sein.
- Tabellen produzieren "Tag-Suppe": Wie bereits erwähnt, beinhalten Tabellenlayouts im Allgemeinen komplexere Markup-Strukturen als ordnungsgemäße Layout-Techniken. Dies kann dazu führen, dass der Code schwieriger zu schreiben, zu warten und zu debuggen ist.
- 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 Elternelements. Tabellen hingegen werden standardmäßig basierend auf ihrem Inhalt dimensioniert, sodass zusätzliche Maßnahmen erforderlich sind, um das Styling des Tabellenlayouts effektiv auf verschiedenen Geräten zu verwenden.
Erstellen Sie Ihre erste Tabelle
Wir haben genug über Tabellentheorie gesprochen, also lassen Sie uns in ein praktisches Beispiel eintauchen und Sie dazu bringen, eine einfache Tabelle zu erstellen.
-
Machen Sie zuerst 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 darum keine Sorgen machen müssen. -
Der Inhalt jeder Tabelle ist von diesen beiden Tags eingeschlossen:
<table></table>
. Fügen Sie diese innerhalb des Körpers Ihres HTML ein. -
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 die folgenden Dinge zwischen Ihre Tabellentags:html<td>Hi, I'm your first cell.</td>
-
Wenn wir eine Zeile mit vier Zellen möchten, müssen wir diese Tags dreimal kopieren. Aktualisieren Sie den Inhalt Ihrer Tabelle so:
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 auf derselben Zeile zueinander ausgerichtet. Jedes <td>
-Element erstellt eine einzelne Zelle und zusammen bilden sie die erste Zeile. Jedes Mal, wenn wir eine Zelle hinzufügen, verlängern sich die Zeile.
Um das Wachstum dieser Zeile zu stoppen und nachfolgende Zellen in einer zweiten Zeile zu platzieren, müssen wir das <tr>
-Element ('tr' steht für 'table row') verwenden. Lassen Sie uns dies nun untersuchen.
-
Platzieren Sie die vier Zellen, die Sie bereits erstellt haben, innerhalb von
<tr>
-Tags, wie 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>
-
Jetzt haben Sie eine Zeile gemacht, versuchen Sie, eine oder zwei weitere zu erstellen — jede Zeile muss in ein zusätzliches
<tr>
-Element eingeschlossen sein, wobei jede Zelle in einem<td>
enthalten ist.
Klicken Sie hier, um die Lösung zu zeigen
Ihr fertiges HTML sollte in etwa so aussehen:
<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 es auch live).
Hinzufügen von Überschriften mit <th>-Elementen
Nun wenden wir uns den Tabellenüberschriften zu — spezielle Zellen, die am Anfang einer Zeile oder Spalte stehen und den Datentyp definieren, den diese Zeile oder Spalte enthält (zum Beispiel die Zellen "Person" und "Alter" im ersten Beispiel in diesem Artikel). Um zu veranschaulichen, warum sie nützlich sind, schauen Sie sich das folgende Tabellenbeispiel an. Zuerst der Quellcode:
<table>
<tr>
<td> </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, während Sie irgendwie erkennen können, was vor sich geht, es nicht so einfach ist, Daten zu überqueren, wie es sein könnte. Wenn die Spalten- und Zeilenüberschriften auf irgendeine Weise hervorgehoben würden, wäre es viel besser.
Hinzufügen von Überschriften zur Hundetabelle
Jetzt möchten wir, dass Sie versuchen, das Hundetabellenbeispiel zu verbessern, indem Sie einige Überschriften hinzufügen.
- Machen Sie zuerst eine lokale Kopie unserer dogs-table.html und minimal-table.css-Dateien in einem neuen Verzeichnis auf Ihrem lokalen Rechner.
- 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 genau 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. - Speichern Sie Ihr HTML und laden Sie es in einem Browser. Sie sollten sehen, dass die Überschriften nun wie Überschriften aussehen.
Klicken Sie hier, um die Lösung zu zeigen
Ihr fertiges HTML sollte in etwa so aussehen:
<table>
<tr>
<td> </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 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 klar hervorstechen, und das Design sieht im Allgemeinen einfach besser aus.
Hinweis: Tabellenüberschriften haben ein wenig Standard-Styling — sie sind fett und zentriert, auch wenn Sie Ihrem Tisch kein eigenes Styling hinzufügen, um sie hervorzuheben.
Überschriften in Tabellen 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 jede Überschrift mit allen Daten in derselben Zeile oder Spalte verknüpft wird. Bildschirmlesegeräte können dann eine ganze Zeile oder Spalte von Daten auf einmal vorlesen, was ziemlich nützlich ist.
Zellen das Spannen über mehrere Zeilen und Spalten ermöglichen
Manchmal möchten wir, dass Zellen sich über mehrere Zeilen oder Spalten erstrecken. Nehmen Sie das folgende einfache Beispiel, das die Namen gängiger Tiere zeigt. In einigen Fällen möchten wir die Namen der Männchen und Weibchen neben dem Tiernamen anzeigen. Manchmal möchten wir das nicht, und in solchen Fällen möchten wir nur, dass der Tiername die ganze Tabelle umspannt.
Das anfängliche Markup sieht so aus:
<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 ganz das, was wir wollen:
Den Layout mit rowspan
und colspan
korrigieren
Wir benötigen eine Möglichkeit, um "Tiere", "Nilpferd" und "Krokodil" über zwei Spalten hinweg zu spannen und "Pferd" und "Huhn" über zwei Zeilen nach unten zu spannen. Zum Glück haben Tabellenüberschriften und -zellen die Attribute colspan
und rowspan
, die es uns ermöglichen, genau diese Dinge zu tun. Beide akzeptieren einen einheitenlosen Zahlenwert, der der Anzahl der Zeilen oder Spalten entspricht, die überbrückt werden sollen. Zum Beispiel erstreckt sich colspan="2"
über zwei Spalten.
Lassen Sie uns colspan
und rowspan
verwenden, um diese Tabelle zu verbessern.
- Machen Sie zuerst 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 Tiere-Beispiel, das Sie oben gesehen haben.
- Verwenden Sie als Nächstes
colspan
, um "Tiere", "Nilpferd" und "Krokodil" über zwei Spalten zu erstrecken. - Verwenden Sie schließlich
rowspan
, um "Pferd" und "Huhn" über zwei Zeilen zu erstrecken. - Speichern und öffnen Sie Ihren Code in einem Browser, um die Verbesserung zu sehen.
Klicken Sie hier, um die Lösung zu zeigen
Ihr fertiges HTML sollte in etwa so aussehen:
<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 es auch live).
Zusammenfassung
Damit enden die Grundlagen von HTML-Tabellen. 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.