Oui, vous pouvez les utiliser, par exemple je les utilise pour styliser plus facilement des groupes de données, comme ceci:
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>
Vous pouvez voir un exemple ici . Cela ne fonctionnera que dans les nouveaux navigateurs, mais c'est ce que je soutiens dans mon application actuelle, vous pouvez utiliser le regroupement pour JavaScript, etc. L'essentiel est que c'est un moyen pratique de grouper visuellement les lignes pour rendre les données beaucoup plus lisibles . Il y a bien sûr d'autres utilisations, mais en ce qui concerne les exemples applicables, celui-ci est le plus courant pour moi.
tbody
ou plusieurs?<tbody>
. Lorsque vous commencez à imbriquer des tables, c'est ce qui pose généralement de réels problèmes de navigation pour un lecteur d'écran.<tbody>
éléments décrivent des groupes séparés dans le tableau, comme cela a été expliqué dans la réponse. Je dois également ajouter qu'il est généralement préférable de cibler les cellules pour les arrière-plans, de sorte que le CSS devrait être, par exemple,tbody:nth-child(odd) td { background: #f5f5f5; }
:nth-child()
utilisation de CSS pour la démonstration liée, le multiple<tbody>
fonctionnera dans n'importe quel navigateur.Oui. De la DTD
Il attend donc un ou plusieurs. Il poursuit en disant
la source
tbody
éléments sont très bien) reste. Plus précisément, vous êtes maintenant autorisé à mettre le seultfoot
élément après letbody
si vous le souhaitez . (Ils ont soigneusement décalé l'aspect DTD en disant qu'ils n'en fournissent pas .) :-)<tr>
donc ça pourrait aussi être zéro (c'est-à-dire un tbody ou un tr signifie que ça pourrait être juste un tr et pas de tbody.)Selon cet exemple, cela peut être fait: w3-struct-tables .
la source
Le problème de Martin Joiner est dû à une mauvaise compréhension de la
<caption>
balise.La
<caption>
balise définit une légende de table.La
<caption>
balise doit être le premier enfant de la<table>
balise.Vous ne pouvez spécifier qu'une seule légende par table.
Notez également que l'
scope
attribut doit être placé sur un<th>
élément et non sur un<tr>
élément.La bonne façon d'écrire une table multi-en-tête multi-corps serait quelque chose comme ceci:
la source
caption
balise doit suivre latable
balise d' ouverture . developer.mozilla.org/en-US/docs/Web/HTML/Element/tablescope="rowgroup"
(au lieu decol
) pour les en-tbody
têtes. Voir l' exemple .Oui. Je les utilise pour masquer / révéler dynamiquement la partie pertinente d'une table, par exemple un cours. Viz.
Un bouton peut être fourni pour basculer entre tout ou simplement le jour en cours en manipulant les corps sans traiter plusieurs lignes individuellement.
la source
EDIT: la
caption
balise appartient à la table et ne doit donc exister qu'une seule fois. N'associez pas uncaption
à chaquetbody
élément comme je l'ai fait:MAUVAIS EXEMPLE CI-DESSUS: NE PAS COPIER
L'exemple ci-dessus ne s'affiche pas comme prévu car l'écriture comme celle-ci indique une mauvaise compréhension de la
caption
balise. Vous auriez besoin de beaucoup de hacks CSS pour le rendre correctement car vous iriez à l'encontre des normes.J'ai cherché les normes W3C sur la
caption
balise mais je n'ai pas pu trouver de règle explicite qui stipule qu'il ne doit y avoir qu'un seulcaption
élément par table mais c'est en fait le cas.la source
De plus, si vous exécutez un document HTML avec plusieurs
<tbody>
balises via le validateur HTML du W3C , avec un DOCTYPE HTML5, il sera validé avec succès.la source
J'ai créé un JSFiddle où j'ai deux ng-répétitions imbriquées avec des tables et le parent ng-repeat sur tbody. Si vous inspectez une ligne du tableau, vous verrez qu'il y a six éléments tbody, c'est-à-dire le niveau parent.
HTML
(Note latérale: cela remplit le DOM si vous avez beaucoup de données aux deux niveaux, donc je travaille donc sur une directive pour récupérer les données et les remplacer, c'est-à-dire ajouter dans DOM lorsque vous cliquez sur parent et supprimer lorsqu'un autre est cliqué ou même parent Pour obtenir le type de comportement que vous trouvez sur Prisjakt.nu , si vous faites défiler les ordinateurs répertoriés et cliquez sur la ligne (pas les liens). Si vous faites cela et inspectez les éléments, vous verrez qu'un tr est ajouté et puis supprimé si le parent est cliqué à nouveau ou un autre.)
la source