tabelle html: thead vs th


155

Sembra (secondo gli esempi in questa pagina , comunque) che se stai usando THEAD, non hai bisogno di usare TH.

È vero? In tal caso, quali sono i vantaggi / gli svantaggi di THEAD vs TH?

Risposte:


124

Il <thead>tag viene utilizzato per raggruppare il contenuto dell'intestazione in una tabella HTML. L' theadelemento deve essere usato insieme agli elementi tbodye tfoot.

Altro: thead

Si utilizza <thead>per incapsulare un'intera riga (o righe) per designarle come Intestazione della tabella. Secondo le specifiche,

"Questa divisione consente agli interpreti di supportare lo scorrimento dei corpi di tabella indipendentemente dalla testata e dal piede della tabella. Quando vengono stampate tabelle lunghe, le informazioni sulla testata e sul piede della tabella possono essere ripetute su ogni pagina che contiene i dati della tabella."

<th>d'altra parte, viene utilizzato per definire una cella specifica come cella di intestazione anziché come normale cella di dati.


22
Li uso sempre entrambi.

11
Questo è un antico sito web a cui hai collegato il "Altro: thead".
masterxilo,


3
@masterxilo Cosa ti aspettavi? Lo stesso HTML è dannatamente antico.
Dan Bechard,

1
@Kano Saresti contrario a qualcuno che si collega a un RFC di 30 anni ancora in uso? Cosa importa quanti anni ha la pagina finché le informazioni sono ancora pertinenti?
jmbpiano,

65

<th>in realtà è un sostituto per <td>quando si desidera contrassegnare una cella come cella di intestazione.

Se vuoi usare <thead>e <th>non dimenticare di nidificare <th>all'interno <tr>. Altrimenti il ​​codice potrebbe non essere valido.
Esempio:

<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>


2
Questo non risponde alla domanda originale, è più un addendum e dovrebbe essere un commento anziché una risposta.
Gerald Schneider,

7
Lo so ma ho punti di reputazione troppo bassi per pubblicare un commento, quindi ho provato a pubblicare una risposta. Mi dispiace, colpa mia, ma le regole dell'intero servizio dello stack sono talvolta strane per me.
rflw,

28
In realtà, questa risposta è l'unica che mostra l'uso di TH e THEAD. +1 per quello!
barrypicker

4
Se scrivi "Il vantaggio è che thpuò essere utilizzato all'interno di a theade anche all'interno di a tbody, entrambi gli elementi sono utili nel proprio contesto." che risponde alla domanda ... Gerald è solo schizzinoso sul modo in cui hai scritto la risposta, ma in realtà è l'unica risposta qui che ha fornito un esempio significativo.
CPHPython

1
Io non sapevo nemmeno che thottiene grassetto cura di default, senza ulteriore CSS, grazie per questo!
CPHPython

11

thè più specifico di ciò che può risiedere all'interno di thead. Una thcella deve specificare l'intestazione delle tdcelle corrispondenti . In effetti è possibile aggiungere un headersattributo a una tdcella che punta all'ID di una thcella (per gli screen reader). Quindi thè direttamente correlato alla tds di quella colonna.

Tuttavia, theadpuò includere qualsiasi informazione ... in genere sì include le thcelle ma può anche includere tutto ciò che potresti ritenere appropriato come informazione nella parte superiore della tabella (diverso da una didascalia, perché ha il suo tag come bene).


6

<thead> è speciale in quanto può essere utilizzato per ripetere la riga di intestazione nella parte superiore della pagina nelle versioni stampate.


6

<thead>

Le righe della tabella possono essere raggruppate in una testa tavolo, piede tavolo, e una o più sezioni del corpo della tabella, utilizzando i THEAD, TFOOTed TBODYelementi, rispettivamente. Questa divisione consente agli interpreti di supportare lo scorrimento dei corpi del tavolo indipendentemente dalla testa e dal piede del tavolo. Quando vengono stampate tabelle lunghe, le informazioni sull'intestazione e sul piede della tabella possono essere ripetute su ogni pagina che contiene i dati della tabella.

L'intestazione della tabella e il piede della tabella devono contenere informazioni sulle colonne della tabella. Il corpo della tabella dovrebbe contenere righe di dati della tabella.

Se presente, ogni THEAD, TFOOT e TBODY contiene un gruppo di righe. Ogni gruppo di righe deve contenere almeno una riga, definita dall'elemento TR.

<th>

Le celle della tabella possono contenere due tipi di informazioni: informazioni di intestazione e dati. Questa distinzione consente agli interpreti di rendere distintamente celle di intestazione e dati, anche in assenza di fogli di stile. Ad esempio, gli interpreti visivi possono presentare il testo della cella dell'intestazione con un carattere in grassetto. I sintetizzatori vocali possono rendere le informazioni di intestazione con una flessione vocale distinta.

L'elemento TH definisce una cella che contiene informazioni di intestazione. Gli interpreti hanno due informazioni di intestazione disponibili: il contenuto dell'elemento TH e il valore dell'attributo abbr. I programmi utente devono eseguire il rendering del contenuto della cella o del valore dell'attributo abbr. Per i media visivi, quest'ultimo può essere appropriato quando lo spazio è insufficiente per il rendering dell'intero contenuto della cella. Per i media non visivi l'abbraccio può essere usato come abbreviazione di intestazioni di tabella quando queste vengono visualizzate insieme al contenuto delle celle a cui si applicano.

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


3

Per quanto ne so per esperienza, non c'è differenza nel rendering a meno che non si stia utilizzando CSS per specificare una differenza nel rendering. Un <td>interno di un <thead>renderà lo stesso di un <th>interno di a <table>o a <tbody>.


Un elemento thead contiene anche righe.
DanMan,

1
Penso che intendi un <td>interno di un <thead>rendering uguale a a <th>, non che a lo <tr>faccia.
frabjous,

0

Non ci sono regole rigide qui. L' <thead>elemento è solo un altro modo per raggruppare le colonne e righe, proprio come <tbody>e <tfoot>è. Quindi hai più possibilità per lo scripting e la formattazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.