HTML-Tabellen: Thead vs Th

155

Es sieht so aus (gemäß den Beispielen auf dieser Seite jedenfalls), dass Sie TH nicht verwenden müssen, wenn Sie THEAD verwenden.

Ist das wahr? Wenn ja, welche Vor- und Nachteile hat THEAD gegenüber TH?

chris
quelle

Antworten:

124

Das <thead>Tag wird verwendet, um den Header-Inhalt in einer HTML-Tabelle zu gruppieren. Das theadElement sollte in Verbindung mit den Elementen tbodyund tfootverwendet werden.

Mehr: Thead

Sie <thead>kapseln eine ganze Zeile (oder mehrere Zeilen), um sie als Tabellenüberschrift zu kennzeichnen. Nach der Spezifikation,

"Diese Unterteilung ermöglicht es Benutzeragenten, das Scrollen von Tabellenkörpern unabhängig von Kopf und Fuß des Tisches zu unterstützen. Wenn lange Tabellen gedruckt werden, können die Informationen zu Kopf und Fuß des Tisches auf jeder Seite wiederholt werden, die Tabellendaten enthält."

<th>Andererseits wird verwendet, um eine bestimmte Zelle als Kopfzelle und nicht als gewöhnliche Datenzelle zu formatieren.

Sgokhales
quelle
22
Ich benutze immer beide.
11
Das ist eine alte Website, auf die Sie im "More: thead" verlinkt haben.
Masterxilo
Siehe auch: Mozillas doc developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
Adrien Be
3
@masterxilo Was hast du erwartet? HTML selbst ist verdammt alt.
Dan Bechard
1
@Kano Würden Sie jemandem widersprechen, der auf einen 30 Jahre alten RFC verlinkt, der noch verwendet wird? Was macht es aus, wie alt die Seite ist, solange die Informationen noch relevant sind?
jmbpiano
64

<th>ist eigentlich ein Ersatz dafür, <td>wenn Sie eine Zelle als Header-Zelle markieren möchten.

Wenn Sie verwenden möchten , <thead>und <th>nicht zu vergessen Nest <th>innen <tr>. Andernfalls ist der Code möglicherweise nicht gültig.
Beispiel:

<table>
  <thead>
    <tr>
      <th>Season</th>
      <th>Goals</th>
      <th>Assists</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2009-2010</th>
      <td>25</td>
      <td>43</td>
    </tr>
    <tr>
      <th>2011-2012</th>
      <td>40</td>
      <td>20</td>
    </tr>
  </tbody>
</table>

rflw
quelle
2
Dies beantwortet nicht die ursprüngliche Frage, sondern ist eher ein Nachtrag und sollte ein Kommentar anstelle einer Antwort sein.
Gerald Schneider
7
Ich weiß, aber ich habe zu niedrige Reputationspunkte, um einen Kommentar zu schreiben, also habe ich versucht, eine Antwort zu posten. Es tut mir leid, meine Schuld, aber die Regeln des gesamten Stack-Service sind manchmal seltsam für mich.
rflw
28
Tatsächlich ist diese Antwort die einzige, die eine Verwendung von TH und THEAD zeigt. +1 dafür!
Barrypicker
4
Wenn Sie schreiben "Der Vorteil ist, thdass sowohl innerhalb als theadauch innerhalb von a verwendet werden kann tbody, sind beide Elemente in ihrem eigenen Kontext nützlich." das beantwortet die Frage ... Gerald ist nur wählerisch in Bezug auf die Art und Weise, wie Sie die Antwort geschrieben haben, aber es ist tatsächlich die einzige Antwort hier, die ein aussagekräftiges Beispiel liefert.
CPHPython
1
Ich wusste nicht einmal , dass thwird fett standardmäßig ohne zusätzliche CSS, vielen Dank für das ed!
CPHPython
11

thist spezifischer als das, was sich innerhalb von befindet thead. Eine thZelle soll den Header der entsprechenden tdZellen angeben . Tatsächlich können Sie headerseiner tdZelle ein Attribut hinzufügen , das auf die ID einer thZelle verweist (für Bildschirmleser). Steht thalso in direktem Zusammenhang mit dem tds dieser Spalte.

Jedoch theadkönnen alle Informationen umfassen ... gemeinhin ja tut es die umfassen thZellen , aber es kann auch alles enthalten , dass Sie als Information an der Spitze der Tabelle (andere als eine Beschriftung geeignet sein könnte halten, weil dies seine eigenen Tag hat als Gut).

Nick Manning
quelle
6

<thead> ist insofern besonders, als es verwendet werden kann, um die Kopfzeile oben auf der Seite in gedruckten Versionen zu wiederholen.

Diodeus - James MacFarlane
quelle
6

<thead>

Tabellenreihen können in eine Tabelle Kopf, Tischfuß gruppiert werden, und einer oder mehr Tabellenkörperabschnitte, die unter Verwendung von THEAD, TFOOTund TBODYElementen, respectively. Diese Unterteilung ermöglicht es Benutzeragenten, das Scrollen von Tabellenkörpern unabhängig von Kopf und Fuß des Tisches zu unterstützen. Wenn lange Tabellen gedruckt werden, können die Tabellenkopf- und -fußinformationen auf jeder Seite wiederholt werden, die Tabellendaten enthält.

Der Tabellenkopf und der Tabellenfuß sollten Informationen zu den Tabellenspalten enthalten. Der Tabellenkörper sollte Zeilen mit Tabellendaten enthalten.

Wenn vorhanden, enthält jeder THEAD, TFOOT und TBODY eine Zeilengruppe. Jede Zeilengruppe muss mindestens eine Zeile enthalten, die vom TR-Element definiert wird.

<th>

Tabellenzellen können zwei Arten von Informationen enthalten: Header-Informationen und Daten. Diese Unterscheidung ermöglicht es Benutzeragenten, Header- und Datenzellen auch ohne Stylesheets eindeutig zu rendern. Beispielsweise können visuelle Benutzeragenten Kopfzeilentext in Fettdruck darstellen. Sprachsynthesizer können Header-Informationen mit einer deutlichen Sprachbeugung rendern.

Das TH-Element definiert eine Zelle, die Header-Informationen enthält. Benutzeragenten verfügen über zwei Header-Informationen: den Inhalt des TH-Elements und den Wert des abbr-Attributs. Benutzerprogramme müssen entweder den Inhalt der Zelle oder den Wert des Attributs abbr rendern. Für visuelle Medien kann letzteres geeignet sein, wenn nicht genügend Platz vorhanden ist, um den gesamten Inhalt der Zelle zu rendern. Für nicht visuelle Medien kann abbr als Abkürzung für Tabellenüberschriften verwendet werden, wenn diese zusammen mit dem Inhalt der Zellen gerendert werden, für die sie gelten.

Quelle: http://www.w3.org/TR/html4/struct/tables.html

Smartrahat
quelle
3

Soweit ich aus Erfahrung sagen kann, gibt es keinen Unterschied beim Rendern, es sei denn, Sie verwenden CSS, um einen Unterschied beim Rendern anzugeben. Ein <td>Inneres von a <thead>wird dasselbe wiedergeben wie ein <th>Inneres von a <table>oder a <tbody>.

Amphetamachine
quelle
Ein Thead-Element enthält auch Zeilen.
DanMan
1
Ich denke du meinst ein <td>Inneres eines <thead>Renderings das gleiche wie ein <th>, nicht das ein <tr>tut.
Frabjous
0

Hier gibt es keine harten Regeln. Das <thead>Element ist nur eine andere Möglichkeit, Ihre Spalten und Zeilen zu gruppieren, genau wie <tbody>und <tfoot>. Sie haben also mehr Möglichkeiten zum Erstellen von Skripten und Formatieren.

DanMan
quelle