tableaux html: thead vs th

155

Il semble (d'après les exemples sur cette page , de toute façon) que si vous utilisez THEAD, vous n'avez pas besoin d'utiliser TH.

Est-ce vrai? Si oui, quels sont les avantages / inconvénients de THEAD par rapport à TH?

Chris
la source

Réponses:

124

La <thead>balise est utilisée pour regrouper le contenu de l'en-tête dans un tableau HTML. L' theadélément doit être utilisé en conjonction avec les éléments tbodyet tfoot.

Plus: thead

Vous utilisez <thead>pour encapsuler une ligne entière (ou des lignes) pour les désigner comme en-tête de tableau. Selon les spécifications,

«Cette division permet aux agents utilisateurs de prendre en charge le défilement des corps de tableau indépendamment de la tête et du pied du tableau. Lorsque de longs tableaux sont imprimés, les informations d'en-tête et de pied de tableau peuvent être répétées sur chaque page contenant des données de tableau.

<th>, d'autre part, est utilisé pour styliser une cellule spécifique comme une cellule d'en-tête plutôt que comme une cellule de données ordinaire.

sgokhales
la source
22
Je les utilise toujours tous les deux.
11
C'est un ancien site Web auquel vous avez lié dans le "More: thead".
masterxilo
voir aussi: la documentation de Mozilla developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
Adrien Be
3
@masterxilo À quoi vous attendiez-vous? Le HTML lui-même est sacrément ancien.
Dan Bechard
1
@Kano Vous opposeriez-vous à ce que quelqu'un établisse un lien vers un RFC vieux de 30 ans qui est toujours utilisé? Quelle est l’ancienneté de la page tant que l’information est toujours pertinente?
jmbpiano
65

<th>est en fait un remplacement <td>lorsque vous souhaitez marquer une cellule comme cellule d'en-tête.

Si vous voulez utiliser <thead>et <th>n'oubliez pas de nicher à l' <th>intérieur <tr>. Sinon, le code peut ne pas être valide.
Exemple:

<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
la source
2
Cela ne répond pas à la question initiale, c'est plus un addendum et devrait être un commentaire plutôt qu'une réponse.
Gerald Schneider le
7
Je sais mais j'ai des points de réputation trop bas pour publier un commentaire, alors j'ai essayé de poster une réponse. Je suis désolé, ma faute, mais les règles du service de pile entière sont parfois étranges pour moi.
rflw le
28
En fait, cette réponse est la seule montrant une utilisation de TH et THEAD. +1 pour ça!
barrypicker
4
Si vous écrivez "L'avantage est de thpouvoir être utilisé à l'intérieur de a theadet aussi à l'intérieur de a tbody, les deux éléments sont utiles dans leur propre contexte." qui répond à la question ... Gerald est juste pointilleux sur la façon dont vous avez écrit la réponse, mais c'est en fait la seule réponse ici qui a fourni un exemple significatif.
CPHPython
1
Je ne savais même pas que cela thdevenait gras par défaut, sans CSS supplémentaire, merci pour cela!
CPHPython
11

thest plus spécifique que ce qui peut résider à l'intérieur de thead. Une thcellule consiste à spécifier l'en-tête des tdcellules correspondantes . En fait, vous pouvez ajouter un headersattribut à une tdcellule qui pointe vers l'id d'une thcellule (pour les lecteurs d'écran). Donc, thest directement lié aux tds de cette colonne.

Cependant, theadpeut inclure n'importe quelle information ... généralement oui, cela inclut les thcellules, mais il peut également inclure tout ce que vous pourriez juger approprié en tant qu'information en haut du tableau (autre qu'une légende, car il a sa propre balise comme bien).

Nick Manning
la source
6

<thead> est spécial en ce qu'il peut être utilisé pour répéter la ligne d'en-tête en haut de la page dans les versions imprimées.

Diodeus - James MacFarlane
la source
6

<thead>

Les lignes de tableau peuvent être regroupés dans une tête de table, les pieds de table, et une ou plusieurs sections de corps de table, en utilisant les THEAD, TFOOTet les TBODYéléments, respectivement. Cette division permet aux agents utilisateurs de prendre en charge le défilement des corps de table indépendamment de la tête et du pied de table. Lorsque de longs tableaux sont imprimés, les informations d'en-tête et de pied de tableau peuvent être répétées sur chaque page contenant des données de tableau.

L'en-tête et le pied de table doivent contenir des informations sur les colonnes de la table. Le corps de la table doit contenir des lignes de données de table.

Lorsqu'ils sont présents, chaque THEAD, TFOOT et TBODY contient un groupe de lignes. Chaque groupe de lignes doit contenir au moins une ligne, définie par l'élément TR.

<th>

Les cellules de tableau peuvent contenir deux types d'informations: les informations d'en-tête et les données. Cette distinction permet aux agents utilisateurs de rendre distinctement les en-têtes et les cellules de données, même en l'absence de feuilles de style. Par exemple, les agents utilisateurs visuels peuvent présenter un texte de cellule d'en-tête avec une police en gras. Les synthétiseurs vocaux peuvent rendre les informations d'en-tête avec une inflexion vocale distincte.

L'élément TH définit une cellule qui contient des informations d'en-tête. Les agents utilisateurs ont deux informations d'en-tête disponibles: le contenu de l'élément TH et la valeur de l'attribut abbr. Les agents utilisateurs doivent rendre le contenu de la cellule ou la valeur de l'attribut abbr. Pour les médias visuels, ce dernier peut être approprié lorsque l'espace est insuffisant pour rendre le contenu complet de la cellule. Pour les médias non visuels, l'abbr peut être utilisé comme abréviation pour les en-têtes de tableau lorsqu'ils sont rendus avec le contenu des cellules auxquelles ils s'appliquent.

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

smartrahat
la source
3

D'après mon expérience, il n'y a aucune différence de rendu à moins que vous n'utilisiez CSS pour spécifier une différence de rendu. Un <td>intérieur de a <thead>rendra la même chose qu'un <th>intérieur de a <table>ou a <tbody>.

amphétamachine
la source
Un élément thead contient également des lignes.
DanMan
1
Je pense que vous voulez dire que l' <td>intérieur d'un <thead>rend le même que a <th>, pas que a <tr>.
frabjous
0

Il n'y a pas de règles strictes ici. L' <thead>élément est juste une autre façon de regrouper vos colonnes et vos lignes, tout comme <tbody>et <tfoot>est. Vous avez donc plus de possibilités de script et de formatage.

DanMan
la source