Sí, puede usarlos, por ejemplo, los uso para diseñar más fácilmente grupos de datos, como este:
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>
Puedes ver un ejemplo aquí . Solo funcionará en navegadores más nuevos, pero eso es lo que estoy admitiendo en mi aplicación actual, puede usar la agrupación para JavaScript, etc. Lo principal es que es una forma conveniente de agrupar visualmente las filas para que los datos sean mucho más legibles . Hay otros usos, por supuesto, pero en cuanto a los ejemplos aplicables, este es el más común para mí.
tbody
o múltiples?<tbody>
. Cuando comienzas a anidar tablas, eso es lo que generalmente da problemas de navegación reales para un lector de pantalla.<tbody>
elementos describen grupos separados en la tabla, como se explicó en la respuesta. También debo añadir que es generalmente mejor a las células diana para los fondos, por lo que la CSS debe ser, por ejemplo,tbody:nth-child(odd) td { background: #f5f5f5; }
:nth-child()
uso de CSS para la demostración vinculada, los múltiples<tbody>
funcionarán en cualquier navegador.Si. De la DTD
Entonces espera uno o más. Luego continúa diciendo
fuente
tbody
elementos están bien" sigue siendo fundamental . Específicamente, ahora se le permite colocar eltfoot
elemento después deltbody
si lo desea (desviaron cuidadosamente el aspecto DTD). diciendo que no proporcionan uno .) :-)<tr>
por lo que también podría ser cero (es decir, un cuerpo o un tr significa que podría ser un tr y ningún cuerpo).De acuerdo con este ejemplo se puede hacer: w3-struct-tables .
fuente
El problema de Martin Joiner es causado por un malentendido de la
<caption>
etiqueta.La
<caption>
etiqueta define un título de tabla.La
<caption>
etiqueta debe ser el primer hijo de la<table>
etiqueta.Puede especificar solo un título por tabla.
Además, tenga en cuenta que el
scope
atributo debe colocarse en un<th>
elemento y no en un<tr>
elemento.La forma correcta de escribir una tabla multi-encabezado multi-tbody sería algo como esto:
fuente
caption
etiqueta debe seguir a latable
etiqueta de apertura . developer.mozilla.org/en-US/docs/Web/HTML/Element/tablescope="rowgroup"
(en lugar decol
) para lostbody
encabezados. Ver ejemplo .Si. Los uso para ocultar / revelar dinámicamente la parte relevante de una tabla, por ejemplo, un curso. Verbigracia.
Se puede proporcionar un botón para alternar entre todo o solo el día actual manipulando los cuerpos sin procesar muchas filas individualmente.
fuente
EDITAR: la
caption
etiqueta pertenece a la tabla y, por lo tanto, solo debe existir una vez. No asocie uncaption
a cadatbody
elemento como lo hice yo:MALO EJEMPLO ANTERIOR: NO COPIE
El ejemplo anterior no se procesa como cabría esperar porque escribir así indica un malentendido de la
caption
etiqueta. Necesitaría muchos hacks CSS para que se renderice correctamente porque iría en contra de los estándares.Busqué los estándares W3Cs en la
caption
etiqueta, pero no pude encontrar una regla explícita que indique que debe haber solo uncaption
elemento por tabla, pero ese es el caso.fuente
Además, si ejecuta un documento HTML con varias
<tbody>
etiquetas a través del Validador HTML del W3C , con un DOCTYPE HTML5, se validará con éxito.fuente
He creado un JSFiddle donde tengo dos ng-repite anidadas con tablas, y el padre ng-repeat en tbody. Si inspecciona cualquier fila de la tabla, verá que hay seis elementos tbody, es decir, el nivel principal.
HTML
(Nota al margen: esto llena el DOM si tiene una gran cantidad de datos en ambos niveles, por lo tanto, estoy trabajando en una directiva para recuperar datos y reemplazarlos, es decir, agregarlos al DOM cuando se hace clic en padre y eliminar cuando se hace clic en otro o en el mismo padre de nuevo. Para obtener el tipo de comportamiento que encuentra en Prisjakt.nu , si se desplaza hacia abajo a las computadoras enumeradas y hace clic en la fila (no en los enlaces). Si lo hace e inspecciona los elementos, verá que se agrega un tr y luego se elimina si se hace clic en padre nuevamente u otro.)
fuente