Baseline Widely available *
Das <table>
-HTML-Element repräsentiert tabellarische Daten, das heiÃt, Informationen in einer zweidimensionalen Tabelle, bestehend aus Reihen und Spalten von Zellen, die Daten enthalten.
<table>
<caption>
Front-end web developer course 2021
</caption>
<thead>
<tr>
<th scope="col">Person</th>
<th scope="col">Most interest in</th>
<th scope="col">Age</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Chris</th>
<td>HTML tables</td>
<td>22</td>
</tr>
<tr>
<th scope="row">Dennis</th>
<td>Web accessibility</td>
<td>45</td>
</tr>
<tr>
<th scope="row">Sarah</th>
<td>JavaScript frameworks</td>
<td>29</td>
</tr>
<tr>
<th scope="row">Karen</th>
<td>Web performance</td>
<td>36</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row" colspan="2">Average age</th>
<td>33</td>
</tr>
</tfoot>
</table>
table {
border-collapse: collapse;
border: 2px solid rgb(140 140 140);
font-family: sans-serif;
font-size: 0.8rem;
letter-spacing: 1px;
}
caption {
caption-side: bottom;
padding: 10px;
font-weight: bold;
}
thead,
tfoot {
background-color: rgb(228 240 245);
}
th,
td {
border: 1px solid rgb(160 160 160);
padding: 8px 10px;
}
td:last-of-type {
text-align: center;
}
tbody > tr:nth-of-type(even) {
background-color: rgb(237 238 242);
}
tfoot th {
text-align: right;
}
tfoot td {
font-weight: bold;
}
Attribute
Dieses Element enthält die globalen Attribute.
Veraltete AttributeDie folgenden Attribute sind veraltet und sollten nicht verwendet werden. Sie werden hier zu Referenzzwecken dokumentiert, wenn vorhandener Code aktualisiert wird, sowie aus historischem Interesse.
align
Veraltet
Gibt die horizontale Ausrichtung der Tabelle innerhalb des übergeordneten Elements an. Die möglichen enumerierten Werte sind left
, center
und right
. Verwenden Sie stattdessen die margin-inline-start
und margin-inline-end
CSS-Eigenschaften, da dieses Attribut veraltet ist.
bgcolor
Veraltet
Definiert die Hintergrundfarbe der Tabelle. Der Wert ist eine HTML-Farbe; entweder ein 6-stelliger hexadezimaler RGB-Code, mit einem #
vorangestellt, oder ein Farbkeyword. Andere CSS-<color>
-Werte werden nicht unterstützt. Verwenden Sie stattdessen die background-color
CSS-Eigenschaft, da dieses Attribut veraltet ist.
border
Veraltet
Definiert die GröÃe des Rahmens um die Tabelle als nicht-negative Ganzzahl (in Pixeln). Wenn es auf 0
gesetzt ist, wird das frame
-Attribut auf void gesetzt. Verwenden Sie stattdessen die border
CSS-Eigenschaft, da dieses Attribut veraltet ist.
cellpadding
Veraltet
Definiert den Abstand zwischen dem Inhalt einer Zelle und deren Umrandung. Dieses Attribut ist obsolet: Statt es zu verwenden, wenden Sie die padding
CSS-Eigenschaft auf die <th>
und <td>
-Elemente an.
cellspacing
Veraltet
Definiert die GröÃe des Abstands zwischen zwei Zellen. Dieses Attribut ist obsolet: Statt es zu verwenden, setzen Sie die border-spacing
CSS-Eigenschaft auf das <table>
-Element. Beachten Sie, dass dies keine Wirkung hat, wenn die border-collapse
CSS-Eigenschaft des <table>
-Elements auf collapse
gesetzt ist.
frame
Veraltet
Definiert, welche Seite des Rahmens um die Tabelle angezeigt werden muss. Die möglichen enumerierten Werte sind void
, above
, below
, hsides
, vsides
, lhs
, rhs
, box
und border
. Verwenden Sie stattdessen die border-style
und border-width
CSS-Eigenschaften, da dieses Attribut veraltet ist.
rules
Veraltet
Definiert, wo Regeln (Rahmen) in der Tabelle angezeigt werden. Die möglichen enumerierten Werte sind none
(Standardwert), groups
(<thead>
, <tbody>
und <tfoot>
-Elemente), rows
(horizontale Linien), cols
(vertikale Linien) und all
(Rahmen um jede Zelle). Verwenden Sie stattdessen die border
CSS-Eigenschaft auf den relevanten tabellenbezogenen Elementen sowie auf der <table>
selbst, da dieses Attribut veraltet ist.
summary
Veraltet
Definiert einen alternativen Text, der den Inhalt der Tabelle zusammenfasst. Verwenden Sie stattdessen das <caption>
-Element, da dieses Attribut veraltet ist.
width
Veraltet
Gibt die Breite der Tabelle an. Verwenden Sie stattdessen die width
CSS-Eigenschaft, da dieses Attribut veraltet ist.
Hinweis: Während keine HTML-Spezifikation height
als <table>
-Attribut berücksichtigt, unterstützen einige Browser eine nicht-standardmäÃige Interpretation von height
. Der wertlose Wert setzt eine minimale absolute Höhe in Pixeln. Wenn er als Prozentwert gesetzt ist, wird die minimale Tabellenhöhe relativ zur Höhe des übergeordneten Containers sein. Verwenden Sie stattdessen die min-height
CSS-Eigenschaft, da dieses Attribut veraltet ist.
Folgende Elemente sind Teil der Tabellenstruktur:
Die <table>
-Box etabliert einen Tabellenformatierungskontext. Elemente innerhalb der <table>
erzeugen rechteckige Kästchen. Jedes Kästchen nimmt eine Anzahl von Tabellenzellen entsprechend den folgenden Regeln ein:
dir
-Attributs werden die Spalten von links nach rechts oder von rechts nach links ausgelegt. Ein Spaltenkästchen nimmt eine oder mehrere Spalten von Tabellenzellen ein.Tabellenzellen haben Innenabstand. Kästchen, die eine Tabelle bilden, haben keinen AuÃenabstand.
Tabellebenen und TransparenzZu Stylingzwecken können die Tabellenelemente wie auf sechs übereinandergelegten Ebenen positioniert betrachtet werden:
Der auf einem Element gesetzte Hintergrund auf einer Ebene wird nur sichtbar sein, wenn die darüber liegenden Ebenen einen transparenten Hintergrund haben. Eine fehlende Zelle wird so gerendert, als ob ein anonymes table-cell-Kästchen diesen Platz einnimmt.
Barrierefreiheit ÃberschriftenIndem Sie ein <caption>
-Element verwenden, dessen Wert klar und prägnant den Zweck der Tabelle beschreibt, helfen Sie den Menschen dabei zu entscheiden, ob sie den Rest des Tabelleninhalts überprüfen oder überspringen sollen.
Dies hilft Personen, die mit Hilfe von Hilfstechnologien wie einem Screenreader navigieren, Personen mit Sehbehinderungen und Personen mit kognitiven Beeinträchtigungen.
Das scope
-Attribut auf Kopfzellen (<th>
-Elemente) ist in einfachen Kontexten überflüssig, da der Geltungsbereich abgeleitet wird. Einige Hilfstechnologien können jedoch falsche Schlussfolgerungen ziehen, sodass die Angabe des Kopfbereichs die Benutzererfahrung verbessern kann. In komplexen Tabellen kann scope
angegeben werden, um notwendige Informationen über die mit einem Kopf verknüpften Zellen bereitzustellen.
Hilfstechnologien wie Screenreader können Schwierigkeiten haben, Tabellen zu interpretieren, die so komplex sind, dass Kopfzellen nicht auf streng horizontale oder vertikale Weise zugeordnet werden können. Dies wird typischerweise durch das Vorhandensein der colspan
und rowspan
-Attribute angezeigt.
Erwägen Sie idealerweise alternative Möglichkeiten zur Darstellung des Tabelleninhalts, einschlieÃlich der Aufteilung in eine Sammlung kleinerer, verwandter Tabellen, die nicht auf die Verwendung der colspan
und rowspan
-Attribute angewiesen sind. Dies kann nicht nur Menschen helfen, die Hilfstechnologien verwenden, um den Tabelleninhalt zu verstehen, sondern auch Menschen mit kognitiven Beeinträchtigungen, die Schwierigkeiten haben könnten, die Zuordnungen zu verstehen, die durch das Tabellenlayout beschrieben werden.
Wenn die Tabelle nicht aufgeteilt werden kann, verwenden Sie eine Kombination aus den id
und headers
-Attributen, um jede Tabellenzelle programmatisch mit dem bzw. den Kopf(en) (<th>
-Elemente), mit denen sie assoziiert ist, zu verknüpfen.
Die untenstehenden Beispiele umfassen Tabellen von zunehmender Komplexität. Siehe auch unseren Anfänger-Leitfaden zum Styling von Tabellen für Informationen zum Styling von Tabellen einschlieÃlich üblicher, nützlicher Techniken.
Da die Struktur eines <table>
die Verwendung mehrerer tabellenbezogener HTML-Elemente zusammen mit verschiedenen assoziierten Attributen umfasst, sollen die folgenden Beispiele eine vereinfachte Erklärung bieten, die die Grundlagen und gängige Standards abdeckt. Zusätzliche und detailliertere Informationen finden Sie auf den entsprechenden verlinkten Seiten.
Diese Tabellenbeispiele zeigen, wie Sie eine zugängliche Tabelle erstellen, die mit HTML strukturiert und mit CSS gestylt ist.
Da HTML-Tabellen strukturiert sind, kann das Markup schnell wachsen. Aus diesem Grund ist es wichtig, den Zweck und das endgültige Erscheinungsbild der Tabelle klar zu definieren, um die geeignete Struktur zu erstellen. Eine mit semantischem Markup entwickelte logische Struktur ist nicht nur einfacher zu stylen, sondern ermöglicht auch nützliche und zugängliche Tabellen, die von allen, einschlieÃlich Suchmaschinen und Nutzern von Hilfstechnologien, verstanden und navigiert werden können.
Das erste Beispiel ist grundlegend, mit darauf folgenden Beispielen, die in der Komplexität zunehmen. Zuerst entwickeln wir eine sehr grundlegende HTML-Tabellenstruktur für die Tabelle. Die ersten beiden Beispiele enthalten keine Tabellensektionsgruppen wie einen definierten Kopf, Körper oder Fuà und beinhalten keine Zellenüberbrückung oder explizit definierte Zellbeziehungen. Es wird nicht einmal eine Ãberschrift bereitgestellt. Wenn wir die Beispiele durcharbeiten, werden sie schrittweise mit allen Tabellenfunktionen verbessert, die eine komplexe Datentabelle haben sollte.
Grundlegende TabelleDieses Beispiel enthält eine sehr grundlegende Tabelle mit drei Zeilen und zwei Spalten. Um die Standardtabellenstile des Browsers zu demonstrieren, wurde in diesem Beispiel kein CSS einbezogen.
HTMLDie Tabellenzeilen sind mit <tr>
-Elementen definiert und die Spalten sind mit Tabellenkopf- und Datenzellen innerhalb dieser definiert. Die erste Zeile enthält die Kopfzellen (<th>
-Elemente), die als Spaltenköpfe für die Datenzellen (<td>
-Elemente) dienen. Jedes Element (<th>
oder <td>
) pro Zeile befindet sich in seiner jeweiligen Spalte, das heiÃt, das erste Element einer Zeile befindet sich in der ersten Spalte und das zweite Element dieser Zeile befindet sich in der zweiten Spalte.
<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
<tr>
<td>Maria Sanchez</td>
<td>28</td>
</tr>
<tr>
<td>Michael Johnson</td>
<td>34</td>
</tr>
</table>
Ergebnis
Es gibt kein benutzerdefiniertes CSS oder Benutzer-Stylesheets, das auf diese Tabelle angewendet wird. Das Styling resultiert rein aus dem User-Agent-Stylesheet.
Erweiterte Tabelle mit KopfzellenDieses Beispiel erweitert die grundlegende Tabelle, erweitert den Inhalt und fügt grundlegende CSS-Stile hinzu.
HTMLDie Tabelle umfasst jetzt vier Zeilen (<tr>
-Elemente), mit jeweils vier Spalten. Die erste Zeile ist eine Zeile von Kopfzellen (die erste Zeile enthält nur <th>
-Elemente). Nachfolgende Zeilen enthalten eine Kopfspalte (<th>
-Elemente als erstes Kindelement jeder Zeile) und drei Datenspalten (<td>
-Elemente). Da keine Tabellenselektionselemente verwendet werden, definiert der Browser automatisch die Struktur der Inhaltsgruppe, d. h. alle Zeilen sind im Hauptteil der Tabelle eines impliziten <tbody>
-Elements eingebettet.
<table>
<tr>
<th>Name</th>
<th>ID</th>
<th>Member Since</th>
<th>Balance</th>
</tr>
<tr>
<th>Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>0.00</td>
</tr>
<tr>
<th>Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td>37.00</td>
</tr>
<tr>
<th>Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>15.00</td>
</tr>
</table>
CSS
Mit CSS stellen wir das grundlegende Styling bereit, um Linien um die Komponenten der Tabelle zu erstellen und die Datenstruktur klarer zu machen. Das CSS fügt eine durchgehende Umrahmung um die <table>
und um jede der Zellen der Tabelle hinzu, einschlieÃlich derer, die mit sowohl <th>
- als auch <td>
-Elementen spezifiziert sind, wodurch jede Kopf- und Datenzelle begrenzt wird.
table {
border: 2px solid rgb(140 140 140);
}
th,
td {
border: 1px solid rgb(160 160 160);
}
Ergebnis Spezifikation von Tabellenzellenbeziehungen
Bevor Sie zur Erweiterung der Tabelle in komplexere Weise übergehen, ist es ratsam, die Barrierefreiheit zu verbessern, indem die Beziehungen zwischen Header- und Datenzellen (<th>
und <td>
-Elemente) definiert werden.
Dies wird erreicht, indem das scope
-Attribut auf den <th>
-Elementen eingeführt wird, wobei die Werte auf die entsprechenden col
- (Spalte) oder row
- (Reihe) Werte gesetzt werden.
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">ID</th>
<th scope="col">Member Since</th>
<th scope="col">Balance</th>
</tr>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>15.00</td>
</tr>
</table>
Das CSS- und visuelle Ergebnis bleibt unverändert â die Anpassung bietet wertvolle kontextuelle Informationen für Hilfstechnologien wie Screenreader, um zu identifizieren, mit welchen Zellen die Ãberschriften zusammenhängen.
Hinweis: Wenn die Tabellenstruktur noch komplexer ist, kann die (zusätzliche) Verwendung des headers
-Attributs auf den <th>
- und <td>
-Elementen die Zugänglichkeit verbessern und Hilfstechnologien helfen, die Beziehungen zwischen Zellen zu identifizieren; siehe Komplizierte Tabellen.
Neben der Verbesserung der Barrierefreiheit durch die Spezifikation von Zellbeziehungen kann die Semantik der Tabelle durch das Einführen von Tabellensektionsgruppen verbessert werden.
HTMLDa die erste Zeile (<tr>
-Element) nur Spaltenkopfzellen enthält und die Ãberschrift für den Rest des Tabelleninhalts bereitstellt, kann sie im <thead>
-Element eingeschlossen werden, um diese Zeile explizit als Kopfbereich der Tabelle zu spezifizieren. Darüber hinaus kann auch das automatisch vom Browser Erreichte explizit definiert werden â der Hauptteil der Tabelle, der die Hauptdaten der Tabelle enthält, wird spezifiziert, indem die entsprechenden Zeilen im <tbody>
-Element eingeschlossen werden. Die explizite Verwendung des <tbody>
-Elements hilft dem Browser, die beabsichtigte Tabellenstruktur zu erstellen und unerwünschte Ergebnisse zu vermeiden.
<table>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">ID</th>
<th scope="col">Member Since</th>
<th scope="col">Balance</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>15.00</td>
</tr>
</tbody>
</table>
Erneut bleibt das CSS- und visuelle Ergebnis unverändert â die Spezifikation solcher Tabellensektionsgruppen liefert wertvolle kontextuelle Informationen für Hilfstechnologien, einschlieÃlich Screenreader und Suchmaschinen, sowie für das Styling im CSS, das in einem späteren Beispiel gezeigt wird.
Spannen von Spalten und ZeilenIn diesem Beispiel erweitern wir die Tabelle noch weiter, indem wir eine Spalte hinzufügen und einen mehrzeiligen Kopfbereich einführen.
HTMLAufbauend auf der bisher erstellten Tabelle wird in jeder Körperzeile eine neue Spalte für ein "Membership End Date" mit dem <td>
-Element hinzugefügt. AuÃerdem wird eine zusätzliche Zeile (<tr>
-Element) im Kopfbereich (<thead>
-Element) hinzugefügt, um eine "Membership Dates"-Ãberschrift als Ãberschrift für die "Joined"- und "Canceled"-Spalten einzuführen.
Die Erstellung der zweiten Kopfzeile erfolgt durch Hinzufügen von colspan
und rowspan
-Attributen zu den <th>
-Elementen, um die Kopfzellen korrekt auf die Spalten und Zeilen zu verteilen.
<table>
<thead>
<tr>
<th scope="col" rowspan="2">Name</th>
<th scope="col" rowspan="2">ID</th>
<th scope="col" colspan="2">Membership Dates</th>
<th scope="col" rowspan="2">Balance</th>
</tr>
<tr>
<th scope="col">Joined</th>
<th scope="col">Canceled</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>n/a</td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td><time datetime="2017-04-08">April 8, 2017</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>n/a</td>
<td>15.00</td>
</tr>
</tbody>
</table>
table {
border: 2px solid rgb(140 140 140);
}
th,
td {
border: 1px solid rgb(160 160 160);
}
Ergebnis
Der Kopfbereich hat jetzt zwei Zeilen, eine mit den Ãberschriften (<th>
-Elemente) "Name", "ID", "Membership Dates" und "Balance", und eine "Membership Dates"-Ãberschrift mit zwei Unterüberschriften, die sich in einer zweiten Zeile befinden: "Joined" und "Canceled". Dies wird erreicht durch:
rowspan
-Attribut überspannen, wodurch sie jeweils zwei Zeilen hoch werden.colspan
-Attributs und ist somit zwei Spalten breit.Es ist eine weit verbreitete und empfehlenswerte Praxis, eine Zusammenfassung für den Tabelleninhalt bereitzustellen, damit Benutzer schnell die Relevanz der Tabelle bestimmen können. Darüber hinaus wird die "Balance"-Spalte zusammengefasst, indem die Summe der Salden der einzelnen Mitglieder angezeigt wird.
HTMLEine Tabellenzusammenfassung wird hinzugefügt, indem eine Tabellenüberschrift (<caption>
-Element) als erstes Kindelement der <table>
hinzugefügt wird. Die Ãberschrift bietet die zugängliche Beschreibung für die Tabelle.
SchlieÃlich wird ein TabellenfuÃbereich (<tfoot>
-Element) unterhalb des Körpers hinzugefügt, mit einer Zeile, die die "Balance"-Spalte zusammenfasst, indem eine Summe angezeigt wird. Die bereits eingeführten Elemente und Attribute werden angewendet.
<table>
<caption>
Status of the club members 2021
</caption>
<thead>
<tr>
<th scope="col" rowspan="2">Name</th>
<th scope="col" rowspan="2">ID</th>
<th scope="col" colspan="2">Membership Dates</th>
<th scope="col" rowspan="2">Balance</th>
</tr>
<tr>
<th scope="col">Joined</th>
<th scope="col">Canceled</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>n/a</td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td><time datetime="2017-04-08">April 8, 2017</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>n/a</td>
<td>15.00</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row" colspan="4">Total balance</th>
<td>52.00</td>
</tr>
</tfoot>
</table>
table {
border: 2px solid rgb(140 140 140);
}
th,
td {
border: 1px solid rgb(160 160 160);
}
Ergebnis Grundlegendes Tabellenstyling
Lassen Sie uns der Tabelle ein grundlegendes Styling hinzufügen, um die Schriftart anzupassen und eine background-color
zu den Kopf- und FuÃzeilen hinzuzufügen. Der HTML-Inhalt bleibt dieses Mal unverändert, also schauen wir uns das CSS genauer an.
<table>
<caption>
Status of the club members 2021
</caption>
<thead>
<tr>
<th scope="col" rowspan="2">Name</th>
<th scope="col" rowspan="2">ID</th>
<th scope="col" colspan="2">Membership Dates</th>
<th scope="col" rowspan="2">Balance</th>
</tr>
<tr>
<th scope="col">Joined</th>
<th scope="col">Canceled</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>n/a</td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td><time datetime="2017-04-08">April 8, 2017</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>n/a</td>
<td>15.00</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row" colspan="4">Total balance</th>
<td>52.00</td>
</tr>
</tfoot>
</table>
CSS
Während hier eine font
-Eigenschaft auf das <table>
-Element gesetzt wird, um eine optisch ansprechendere Schriftart zu setzen (oder eine abstoÃende serifenlose Schrift, je nachdem, wie Ihre persönliche Meinung dazu steht), ist der interessante Teil der zweite Stil, wo die <tr>
-Elemente, die sich im <thead>
und <tfoot>
befinden, mit einer hellblauen background-color
gestylt werden. Dies ist eine Möglichkeit, schnell eine Hintergrundfarbe auf alle Zellen in bestimmten Sektionen gleichzeitig anzuwenden.
table {
border: 2px solid rgb(140 140 140);
font:
16px "Open Sans",
Helvetica,
Arial,
sans-serif;
}
thead > tr,
tfoot > tr {
background-color: rgb(228 240 245);
}
th,
td {
border: 1px solid rgb(160 160 160);
}
Ergebnis Fortgeschrittenes Tabellenstyling
Jetzt gehen wir aufs Ganze, mit Stilen für Zeilen sowohl in den Kopf- als auch in den Körperbereichen, einschlieÃlich abwechselnder Zeilenfarben, Zellen mit unterschiedlichen Farben je nach ihrer Position innerhalb einer Zeile, und so weiter. Lassen Sie uns zunächst das Ergebnis ansehen.
ErgebnisSo wird die endgültige Tabelle aussehen:
Es gibt keine Ãnderung mehr am HTML. Sehen Sie, was die richtige Vorbereitung der HTML-Struktur bewirken kann?
<table>
<caption>
Status of the club members 2021
</caption>
<thead>
<tr>
<th scope="col" rowspan="2">Name</th>
<th scope="col" rowspan="2">ID</th>
<th scope="col" colspan="2">Membership Dates</th>
<th scope="col" rowspan="2">Balance</th>
</tr>
<tr>
<th scope="col">Joined</th>
<th scope="col">Canceled</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Margaret Nguyen</th>
<td>427311</td>
<td><time datetime="2010-06-03">June 3, 2010</time></td>
<td>n/a</td>
<td>0.00</td>
</tr>
<tr>
<th scope="row">Edvard Galinski</th>
<td>533175</td>
<td><time datetime="2011-01-13">January 13, 2011</time></td>
<td><time datetime="2017-04-08">April 8, 2017</time></td>
<td>37.00</td>
</tr>
<tr>
<th scope="row">Hoshi Nakamura</th>
<td>601942</td>
<td><time datetime="2012-07-23">July 23, 2012</time></td>
<td>n/a</td>
<td>15.00</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row" colspan="4">Total balance</th>
<td>52.00</td>
</tr>
</tfoot>
</table>
CSS
Das CSS ist dieses Mal viel ausführlicher. Es ist nicht kompliziert, aber es passiert viel. Lassen Sie uns das Stück für Stück durchgehen.
Hier werden die border-collapse
- und border-spacing
-Eigenschaften hinzugefügt, um den Abstand zwischen den Zellen zu eliminieren und berührende Rahmen zu einem einzigen Rahmen zusammenzulegen, anstatt doppelte Rahmen zu erhalten. AuÃerdem wird das <caption>
am Ende der Tabelle mit dem caption-side
-Eigenschaft platziert:
table {
border-collapse: collapse;
border-spacing: 0;
border: 2px solid rgb(140 140 140);
font:
16px "Open Sans",
Helvetica,
Arial,
sans-serif;
}
caption {
caption-side: bottom;
padding: 10px;
font-weight: bold;
}
Als nächstes wird die padding
-Eigenschaft verwendet, um allen Tabellenzellen Raum um ihren Inhalt zu geben. Die vertical-align
-Eigenschaft richtet den Inhalt der Kopfzellen am Boden der Zelle aus, was bei den Zellen im Kopf, die sich über zwei Zeilen erstrecken, zu sehen ist:
th,
td {
border: 1px solid rgb(160 160 160);
padding: 4px 6px;
}
th {
vertical-align: bottom;
}
Die nächste CSS-Regel setzt die background-color
aller <tr>
-Elemente im Tabellenkopf (wie durch <thead>
spezifiziert). Dann wird der untere Rahmen des Kopfs als zweipixelbreite Linie gesetzt. Beachten Sie jedoch, dass wir den :nth-of-type
-Selektor verwenden, um die border-bottom
-Eigenschaft auf die zweite Zeile im Kopf anzuwenden. Warum? Weil der Kopf aus zwei Zeilen besteht, die von einigen der Zellen überspannt werden. Das bedeutet, dass dort tatsächlich zwei Zeilen sind; das Anwenden des Stils auf die erste Zeile würde nicht das erwartete Ergebnis liefern:
thead > tr {
background-color: rgb(228 240 245);
}
thead > tr:nth-of-type(2) {
border-bottom: 2px solid rgb(140 140 140);
}
Lassen Sie uns die zwei Kopfzellen "Joined" und "Canceled" mit grünen und roten Farbtönen stylen, um das "Gute" eines neuen Mitglieds und das "Schlechte" einer stornierten Mitgliedschaft darzustellen. Hier greifen wir in die letzte Zeile des Kopfbereichs der Tabelle ein, indem wir den :last-of-type
-Selektor verwenden, und geben der ersten Kopfzelle darin (der "Joined"-Ãberschrift) eine grünliche Farbe und der zweiten Kopfzelle darin (der "Canceled"-Ãberschrift) einen rötlichen Farbton:
thead > tr:last-of-type > th:nth-of-type(1) {
background-color: rgb(225 255 225);
}
thead > tr:last-of-type > th:nth-of-type(2) {
background-color: rgb(255 225 225);
}
Da die erste Spalte auch auffallen sollte, wird hier ebenfalls ein benutzerdefiniertes Styling hinzugefügt. Diese CSS-Regel stylt die erste Kopfzelle in jeder Zeile des Tabellenkörpers mit der text-align
-Eigenschaft, um die Mitgliedsnamen linksbündig auszurichten, und mit einer etwas anderen background-color
:
tbody > tr > th:first-of-type {
text-align: left;
background-color: rgb(225 229 244);
}
Es ist gängig, die Lesbarkeit von Tabellendaten zu verbessern, indem abwechselnde Zeilenfarben verwendet werden â manchmal wird dies als "Zebra-Striping" bezeichnet. Lassen Sie uns ein wenig background-color
zu jeder geraden Zeile hinzufügen:
tbody > tr:nth-of-type(even) {
background-color: rgb(237 238 242);
}
Da es Standardpraxis ist, Währungswerte in Tabellen rechtsbündig auszurichten, lassen Sie uns das hier tun. Dies setzt einfach die text-align
-Eigenschaft für das letzte <td>
in jeder Körperzeile auf right
:
tbody > tr > td:last-of-type {
text-align: right;
}
SchlieÃlich wird ein ähnliches Styling wie im Kopf auf den FuÃbereich der Tabelle angewendet, um auch ihn hervorzuheben:
tfoot > tr {
border-top: 2px dashed rgb(140 140 140);
background-color: rgb(228 240 245);
}
tfoot th,
tfoot td {
text-align: right;
font-weight: bold;
}
Anzeige groÃer Tabellen in kleinen Bereichen
Ein häufiges Problem bei Tabellen im Web ist, dass sie nicht nativen in kleinen Bildschirmen gut funktionieren, wenn der Inhalt umfangreich ist, und es ist nicht offensichtlich, wie man sie scrollbar macht, insbesondere wenn das Markup aus einem CMS stammt und nicht geändert werden kann, um eine Umhüllung hinzuzufügen.
Dieses Beispiel bietet eine Möglichkeit, Tabellen in kleinen Bereichen darzustellen. Wir haben den HTML-Inhalt ausgeblendet, da er sehr umfangreich ist und es nichts Bemerkenswertes daran gibt. Das CSS ist in diesem Beispiel nützlicher zu betrachten.
<table>
<thead>
<tr>
<th>1<sup>3</sup> equals:</th>
<th>2<sup>3</sup> equals:</th>
<th>3<sup>3</sup> equals:</th>
<th>4<sup>3</sup> equals:</th>
<th>5<sup>3</sup> equals:</th>
<th>6<sup>3</sup> equals:</th>
<th>7<sup>3</sup> equals:</th>
</tr>
</thead>
<tbody>
<tr>
<td>row 1: 1</td>
<td>row 1: 8</td>
<td>row 1: 27</td>
<td>row 1: 64</td>
<td>row 1: 125</td>
<td>row 1: 216</td>
<td>row 1: 343</td>
</tr>
<tr>
<td>row 2: 1</td>
<td>row 2: 8</td>
<td>row 2: 27</td>
<td>row 2: 64</td>
<td>row 2: 125</td>
<td>row 2: 216</td>
<td>row 2: 343</td>
</tr>
<tr>
<td>row 3: 1</td>
<td>row 3: 8</td>
<td>row 3: 27</td>
<td>row 3: 64</td>
<td>row 3: 125</td>
<td>row 3: 216</td>
<td>row 3: 343</td>
</tr>
<tr>
<td>row 4: 1</td>
<td>row 4: 8</td>
<td>row 4: 27</td>
<td>row 4: 64</td>
<td>row 4: 125</td>
<td>row 4: 216</td>
<td>row 4: 343</td>
</tr>
<tr>
<td>row 5: 1</td>
<td>row 5: 8</td>
<td>row 5: 27</td>
<td>row 5: 64</td>
<td>row 5: 125</td>
<td>row 5: 216</td>
<td>row 5: 343</td>
</tr>
<tr>
<td>row 6: 1</td>
<td>row 6: 8</td>
<td>row 6: 27</td>
<td>row 6: 64</td>
<td>row 6: 125</td>
<td>row 6: 216</td>
<td>row 6: 343</td>
</tr>
<tr>
<td>row 7: 1</td>
<td>row 7: 8</td>
<td>row 7: 27</td>
<td>row 7: 64</td>
<td>row 7: 125</td>
<td>row 7: 216</td>
<td>row 7: 343</td>
</tr>
<tr>
<td>row 8: 1</td>
<td>row 8: 8</td>
<td>row 8: 27</td>
<td>row 8: 64</td>
<td>row 8: 125</td>
<td>row 8: 216</td>
<td>row 8: 343</td>
</tr>
<tr>
<td>row 9: 1</td>
<td>row 9: 8</td>
<td>row 9: 27</td>
<td>row 9: 64</td>
<td>row 9: 125</td>
<td>row 9: 216</td>
<td>row 9: 343</td>
</tr>
<tr>
<td>row 10: 1</td>
<td>row 10: 8</td>
<td>row 10: 27</td>
<td>row 10: 64</td>
<td>row 10: 125</td>
<td>row 10: 216</td>
<td>row 10: 343</td>
</tr>
<tr>
<td>row 11: 1</td>
<td>row 11: 8</td>
<td>row 11: 27</td>
<td>row 11: 64</td>
<td>row 11: 125</td>
<td>row 11: 216</td>
<td>row 11: 343</td>
</tr>
<tr>
<td>row 12: 1</td>
<td>row 12: 8</td>
<td>row 12: 27</td>
<td>row 12: 64</td>
<td>row 12: 125</td>
<td>row 12: 216</td>
<td>row 12: 343</td>
</tr>
<tr>
<td>row 13: 1</td>
<td>row 13: 8</td>
<td>row 13: 27</td>
<td>row 13: 64</td>
<td>row 13: 125</td>
<td>row 13: 216</td>
<td>row 13: 343</td>
</tr>
<tr>
<td>row 14: 1</td>
<td>row 14: 8</td>
<td>row 14: 27</td>
<td>row 14: 64</td>
<td>row 14: 125</td>
<td>row 14: 216</td>
<td>row 14: 343</td>
</tr>
<tr>
<td>row 15: 1</td>
<td>row 15: 8</td>
<td>row 15: 27</td>
<td>row 15: 64</td>
<td>row 15: 125</td>
<td>row 15: 216</td>
<td>row 15: 343</td>
</tr>
<tr>
<td>row 16: 1</td>
<td>row 16: 8</td>
<td>row 16: 27</td>
<td>row 16: 64</td>
<td>row 16: 125</td>
<td>row 16: 216</td>
<td>row 16: 343</td>
</tr>
<tr>
<td>row 17: 1</td>
<td>row 17: 8</td>
<td>row 17: 27</td>
<td>row 17: 64</td>
<td>row 17: 125</td>
<td>row 17: 216</td>
<td>row 17: 343</td>
</tr>
<tr>
<td>row 18: 1</td>
<td>row 18: 8</td>
<td>row 18: 27</td>
<td>row 18: 64</td>
<td>row 18: 125</td>
<td>row 18: 216</td>
<td>row 18: 343</td>
</tr>
<tr>
<td>row 19: 1</td>
<td>row 19: 8</td>
<td>row 19: 27</td>
<td>row 19: 64</td>
<td>row 19: 125</td>
<td>row 19: 216</td>
<td>row 19: 343</td>
</tr>
<tr>
<td>row 20: 1</td>
<td>row 20: 8</td>
<td>row 20: 27</td>
<td>row 20: 64</td>
<td>row 20: 125</td>
<td>row 20: 216</td>
<td>row 20: 343</td>
</tr>
</tbody>
</table>
CSS
Beim Betrachten dieser Stile werden Sie bemerken, dass die display
-Eigenschaft der Tabelle auf block
gesetzt wurde. Obwohl dies das Scrollen ermöglicht, verliert die Tabelle etwas an Integrität und versucht, die Tabellenzellen möglichst klein zu machen. Um dieses Problem abzumildern, haben wir white-space
auf nowrap
auf dem <tbody>
gesetzt. Dennoch tun wir das nicht für den <thead>
, um zu vermeiden, dass lange Titel die Spalten breiter machen, als sie für die Datenanzeige sein müssen.
Um die Tabellenüberschriften auf der Seite zu halten, während nach unten gescrollt wird, haben wir position
auf sticky für die <th>
-Elemente gesetzt. Beachten Sie, dass wir nicht border-collapse
auf collapse
gesetzt haben, da der Header auf diese Weise nicht korrekt vom Rest der Tabelle getrennt werden kann.
Da das <table>
eine feste GröÃe hat, ist das overflow
auf auto
hier der wichtige Teil, da es die Tabelle scrollbar macht.
table,
th,
td {
border: 1px solid black;
}
table {
overflow: auto;
width: 100%;
max-width: 400px;
height: 240px;
display: block;
margin: 0 auto;
border-spacing: 0;
}
tbody {
white-space: nowrap;
}
th,
td {
padding: 5px 10px;
border-top-width: 0;
border-left-width: 0;
}
th {
position: sticky;
top: 0;
background: white;
vertical-align: bottom;
}
th:last-child,
td:last-child {
border-right-width: 0;
}
tr:last-child td {
border-bottom-width: 0;
}
Ergebnis Technische Zusammenfassung Inhaltskategorien Flussinhalt Erlaubter Inhalt In dieser Reihenfolge:
<caption>
-Element,<colgroup>
-Elemente,<thead>
-Element,<tfoot>
-Element table
Erlaubte ARIA-Rollen Beliebig DOM-Schnittstelle [`HTMLTableElement`](/de/docs/Web/API/HTMLTableElement) Spezifikationen Browser-Kompatibilität Siehe auch
<caption>
, <col>
, <colgroup>
, <tbody>
, <td>
, <tfoot>
, <th>
, <thead>
, <tr>
: Andere tabellenbezogene Elementebackground-color
: CSS-Eigenschaft, um die Hintergrundfarbe der Tabelle festzulegenborder
, border-collapse
, border-spacing
: CSS-Eigenschaften, um das Erscheinungsbild von Zellrahmen, Linien und Rahmen zu steuernmargin
, padding
: CSS-Eigenschaften zum Ausrichten der Tabelle und Festlegen von Abständen im Zellinhalttext-align
: CSS-Eigenschaft, um den Inhalt von Tabellenzellen horizontal auszurichtenvertical-align
: CSS-Eigenschaft, um den Inhalt von Tabellenzellen vertikal auszurichtenwidth
: CSS-Eigenschaft zur Steuerung der TabellenbreiteRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4