Sim, você pode usá-los, por exemplo, eu os uso para estilizar grupos de dados com mais facilidade, assim:
thead th { width: 100px; border-bottom: solid 1px #ddd; font-weight: bold; }
tbody:nth-child(odd) { background: #f5f5f5; border: solid 1px #ddd; }
tbody:nth-child(even) { background: #e5e5e5; border: solid 1px #ddd; }
<table>
<thead>
<tr><th>Customer</th><th>Order</th><th>Month</th></tr>
</thead>
<tbody>
<tr><td>Customer 1</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 1</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 1</td><td>#3</td><td>March</td></tr>
</tbody>
<tbody>
<tr><td>Customer 2</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 2</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 2</td><td>#3</td><td>March</td></tr>
</tbody>
<tbody>
<tr><td>Customer 3</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 3</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 3</td><td>#3</td><td>March</td></tr>
</tbody>
</table>
Você pode ver um exemplo aqui . Ele funcionará apenas em navegadores mais novos, mas é isso que estou suportando no meu aplicativo atual, você pode usar o agrupamento para JavaScript etc. O principal é que é uma maneira conveniente de agrupar visualmente as linhas para tornar os dados muito mais legíveis . Existem outros usos, é claro, mas, nos exemplos aplicáveis, este é o mais comum para mim.
tbody
ou vários?<tbody>
. Quando você começa a aninhar tabelas, é isso que geralmente causa problemas reais de navegação para um leitor de tela.<tbody>
elementos descrevem grupos separados na tabela, como foi explicado na resposta. Também devo acrescentar que geralmente é melhor para células-alvo para os fundos, de modo que o CSS deve ser, por exemplo,tbody:nth-child(odd) td { background: #f5f5f5; }
:nth-child()
uso de CSS para a demonstração vinculada, o múltiplo<tbody>
funcionará em qualquer navegador.Sim. Do DTD
Portanto, espera um ou mais. Em seguida, continua a dizer
fonte
tbody
elementos são bons) permanece. Especificamente, agora você pode colocar otfoot
elemento após otbody
que quiser . dizendo que eles não fornecem um ) :-).<tr>
modo que também poderia ser zero (ou seja, uma tbody ou um meio tr Poderia ser apenas um tr e nenhum tbody.)De acordo com este exemplo, isso pode ser feito: w3-struct-tables .
fonte
O problema de Martin Joiner é causado por um mal-entendido da
<caption>
tag.A
<caption>
tag define uma legenda da tabela.A
<caption>
tag deve ser o primeiro filho da<table>
tag.Você pode especificar apenas uma legenda por tabela.
Além disso, observe que o
scope
atributo deve ser colocado em um<th>
elemento e não em um<tr>
elemento.A maneira correta de escrever uma tabela com vários cabeçalhos e vários corpos seria algo como isto:
fonte
caption
tag deve seguir atable
tag de abertura . developer.mozilla.org/pt-BR/docs/Web/HTML/Element/tablescope="rowgroup"
(em vez decol
) para ostbody
cabeçalhos. Veja o exemplo .Sim. Eu os uso para ocultar / revelar dinamicamente a parte relevante de uma tabela, por exemplo, um curso. Viz.
Um botão pode ser fornecido para alternar entre tudo ou apenas o dia atual, manipulando tbodies sem processar muitas linhas individualmente.
fonte
EDIT: A
caption
tag pertence à tabela e, portanto, só deve existir uma vez. Não associe acaption
a cadatbody
elemento como eu fiz:MAU EXEMPLO ACIMA: NÃO COPIE
O exemplo acima não é renderizado como seria de esperar, porque escrever assim indica um mal-entendido da
caption
tag. Você precisaria de muitos hacks CSS para torná-lo renderizado corretamente, porque você iria contra os padrões.Procurei os padrões W3Cs na
caption
tag, mas não consegui encontrar uma regra explícita que afirma que deve haver apenas umcaption
elemento por tabela, mas esse é realmente o caso.fonte
Além disso, se você executar um documento HTML com várias
<tbody>
tags através do Validador HTML do W3C , com um DOCTYPE HTML5, ele será validado com êxito.fonte
Criei um JSFiddle em que tenho duas repetições ng aninhadas com tabelas e a repetição ng pai em tbody. Se você inspecionar qualquer linha da tabela, verá seis elementos do corpo, ou seja, o nível pai.
HTML
(Observação: isso preenche o DOM se você tiver muitos dados nos dois níveis, portanto, estou trabalhando em uma diretiva para buscar dados e substituir, ou seja, adicionando ao DOM ao clicar em pai e removendo quando outro é clicado ou no mesmo pai. Para obter o tipo de comportamento encontrado no Prisjakt.nu , se você rolar para baixo até os computadores listados e clicar na linha (não nos links). Se você fizer isso e inspecionar elementos, verá que um tr é adicionado e removido, se o pai for clicado novamente ou em outro.)
fonte