Varios <thead> / <tbody> en la tabla ¿Válido?

82

Imagina una lista de listas similar a esta:

var list = [
  { name: 'group1', 
    items: [ 1, 2, 3, 4, 5 ]
  },
  { name: 'group2', 
    items: [ 1, 2, 3, 4, 5 ]
  },
  etc...
]

Ahora olvidar todo el "tablas de datos no son diseñar" argumento, quería mostrar una sola mesa para listy tienen un separado <thead>y <tbody>para cada entrada list.

¿Es esto técnicamente válido? Esto funciona en el navegador, pero mis sentidos de araña están hormigueando en este .

AlbertEngelB
fuente
1
Definitivamente puedes tener múltiples tbodies, tendría que verificar las especificaciones para ver sobre thead.
Kevin B
2
@KevinB: IIRC a lo sumo un thead y un tfoot: w3.org/TR/html-markup/table.html#table
Zeta
1
@unor Mi pregunta tiene que ver con múltiples elementos <thead>y <tfooter>, no <tbody>. No son lo mismo y están dictados por reglas separadas.
AlbertEngelB
@ Dropped.on.Caprica: Ah, cierto, me perdí que también querías varios thead elementos. Me retracté del voto.
unor

Respuestas:

120

Puede tener tantos <tbody>elementos como desee, pero no más de uno de <thead>y <tfoot>. Referencia :

Modelo de contenido:

En este orden: opcionalmente un elemento de título, seguido de cero o más elementos colgroup, seguido opcionalmente de un elemento thead, seguido de cero o más elementos tbody o uno o más elementos tr, seguido opcionalmente de un elemento tfoot , opcionalmente entremezclado con uno o más elementos de soporte de guiones.

Jon
fuente
Y puede usar th scope=rowgroupdentro de un regular trpara describir cada uno tbody. Ver "Ejemplo" .
CletusW
12

Se permite como máximo uno theady uno , por lo que no debe crear encabezados adicionales. Después de todo, en a le da un significado a sus columnas, como "hora del día", "temperatura", "cantidad de gatos actualmente en llamas".tfoot ththead

Si las entradas de su lista están relacionadas, todas deben estar en la misma tabla y debe proporcionar un encabezado adecuado para mostrar esa relación.

Si las entradas no están relacionadas, debe proporcionar una sola tabla para cada una de ellas. Aún puede aplicar el mismo CSS en cada tabla para obtener un buen resultado.

Zeta
fuente
5
"Si las entradas de su lista están relacionadas, todas deben estar en la misma tabla y debe proporcionar un encabezado adecuado para mostrar esa relación". Creo que a veces sería deseable repetir el mismo encabezado en una tabla muy larga para que el usuario no tiene que volver a la parte superior para recordar cuáles son las columnas. Por supuesto, existen otras soluciones para esto (por ejemplo, JavaScript para usar un encabezado de tabla "pegajoso" o CSS en los elementos de la fila de la tabla para que sea visualmente diferente a las otras filas).
Mike
5

Lo considero como idatributos. Se supone que son únicos, pero en realidad puede reutilizarlos en la misma página y aún puede seleccionarlos. Dicho esto, el hecho de que se pueda hacer no significa que deba hacerse.

Recomendaría no hacerlo.

Justin
fuente
3
No hay nada de malo en tener más de uno <tbody>, pero según la especificación puede haber solo uno <thead>y uno <tfoot>.
puntiagudo
Por lo que puedo decir, no estaba sugiriendo hacerlo en absoluto. ¿Solo digo que funcionó en el navegador?
AlbertEngelB
@Sebas La primera oración es dar a conocer que puede agregar más que en, al igual que la identificación, pero no debería.
Justin
@Sebas mejor? A veces lo que tengo en la cabeza es más claro que lo que escribí: S
Justin
No, me disculpo totalmente, la culpa fue mía. ¡Salud!
Sebas