tabelas html: thead vs th


155

Parece (de acordo com os exemplos desta página , de qualquer maneira) que, se você estiver usando THEAD, não precisará usar TH.

Isso é verdade? Em caso afirmativo, quais são as vantagens / desvantagens de THEAD vs TH?

Respostas:


124

A <thead>tag é usada para agrupar o conteúdo do cabeçalho em uma tabela HTML. O theadelemento deve ser usado em conjunto com os elementos tbodye tfoot.

Mais: thead

Você usa <thead>para encapsular uma linha inteira (ou linhas) para designá-las como cabeçalho da tabela. De acordo com as especificações,

"Esta divisão permite que os agentes do usuário suportem a rolagem dos corpos da tabela independentemente da cabeça e do pé da tabela. Quando tabelas longas são impressas, as informações da cabeça e do pé da tabela podem ser repetidas em cada página que contém dados da tabela."

<th>, por outro lado, é usado para estilizar uma célula específica como uma célula de cabeçalho em vez de uma célula de dados comum.


22
Eu sempre uso os dois.

11
Esse é um site antigo ao qual você vinculou no "Mais: tópico".
Masterxilo 28/05


3
@masterxilo O que você esperava? O próprio HTML é bastante antigo.
Dan Bechard

1
@Kano Você se oporia a alguém vinculado a uma RFC de 30 anos que ainda está em uso? Qual é a idade da página, desde que a informação ainda seja relevante?
jmbpiano

65

<th>na verdade, é um substituto para <td>quando você deseja marcar uma célula como uma célula de cabeçalho.

Se você deseja usar <thead>e <th>não se esqueça de aninhar <th>dentro <tr>. Caso contrário, o código pode não ser válido.
Exemplo:

<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
Isso não responde à pergunta original, é mais um adendo e deve ser um comentário em vez de uma resposta.
Gerald Schneider

7
Eu sei, mas tenho pontos de reputação muito baixos para postar comentários, então tentei postar uma resposta. Sinto muito, minha culpa, mas as regras do serviço de pilha inteira às vezes são estranhas para mim.
rflw

28
Na verdade, essa resposta é a única que mostra o uso de TH e THEAD. +1 para isso!
barrypicker

4
Se você escrever "A vantagem é que thpode ser usada dentro de theade também dentro de a tbody, ambos os elementos são úteis em seu próprio contexto". isso responde à pergunta ... Gerald está sendo exigente com a maneira como você escreveu a resposta, mas é de fato a única resposta aqui que forneceu um exemplo significativo.
precisa saber é o seguinte

1
Eu nem sabia que isso thfica em negrito por padrão, sem CSS extra, obrigado por isso!
precisa saber é o seguinte

11

thé mais específico do que aquilo que pode residir dentro de thead. Uma thcélula é para especificar o cabeçalho das tdcélulas correspondentes . Na verdade, você pode adicionar um headersatributo a uma tdcélula que aponte para o ID de uma thcélula (para leitores de tela). Então, thestá diretamente relacionado aos tds dessa coluna.

No entanto, theadpode incluir qualquer informação ... geralmente sim, inclui as thcélulas, mas também pode incluir qualquer coisa que você considere apropriada como informações na parte superior da tabela (exceto uma legenda, porque ela possui sua própria tag como bem).


6

<thead> é especial, pois pode ser usado para repetir a linha do cabeçalho na parte superior da página nas versões impressas.


6

<thead>

As linhas da tabela podem ser agrupados em uma cabeça de mesa, pé de mesa, e uma ou mais secções do corpo da tabela, usando a THEAD, TFOOTeTBODY elementos, respectivamente. Essa divisão permite que os agentes do usuário suportem a rolagem dos corpos da tabela independentemente da cabeça e do pé da tabela. Quando tabelas longas são impressas, as informações de cabeçalho e pé da tabela podem ser repetidas em cada página que contém dados da tabela.

O cabeçalho e o pé da tabela devem conter informações sobre as colunas da tabela. O corpo da tabela deve conter linhas de dados da tabela.

Quando presentes, cada THEAD, TFOOT e TBODY contém um grupo de linhas. Cada grupo de linhas deve conter pelo menos uma linha, definida pelo elemento TR.

<th>

As células da tabela podem conter dois tipos de informações: informações e dados do cabeçalho. Essa distinção permite que os agentes do usuário processem células de cabeçalho e dados distintamente, mesmo na ausência de folhas de estilo. Por exemplo, os agentes visuais do usuário podem apresentar o texto da célula do cabeçalho com uma fonte em negrito. Sintetizadores de fala podem renderizar informações de cabeçalho com uma inflexão de voz distinta.

O elemento TH define uma célula que contém informações do cabeçalho. Os agentes do usuário têm duas informações de cabeçalho disponíveis: o conteúdo do elemento TH e o valor do atributo abbr. Os agentes do usuário devem renderizar o conteúdo da célula ou o valor do atributo abbr. Para mídia visual, o último pode ser apropriado quando não houver espaço suficiente para renderizar todo o conteúdo da célula. Para mídias não visuais, a abreviação pode ser usada como uma abreviação de cabeçalhos de tabela quando estes são renderizados junto com o conteúdo das células às quais se aplicam.

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


3

Pelo que sei pela experiência, não há diferença na renderização, a menos que você esteja usando CSS para especificar uma diferença na renderização. Um <td>interior de a <thead>renderizará o mesmo que um <th>interior de a <table>ou a <tbody>.


Um elemento thead também contém linhas.
DanMan

1
Eu acho que você quer dizer que um <td>interior de um <thead>processa o mesmo que um <th>, não que um <tr>faça.
frabjous

0

Não há regras rígidas aqui. O <thead>elemento é apenas outra maneira de agrupar as suas colunas e linhas, como <tbody>e <tfoot>é. Então você tem mais possibilidades de criação de scripts e formatação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.