tablas html: thead vs th


155

Parece (de acuerdo con los ejemplos en esta página , de todos modos) que si está usando THEAD, no necesita usar TH.

¿Es eso cierto? Si es así, ¿cuáles son las ventajas / desventajas de THEAD vs TH?

Respuestas:


124

La <thead>etiqueta se usa para agrupar el contenido del encabezado en una tabla HTML. El theadelemento debe usarse junto con el tbodyytfoot elementos .

Más: thead

Se utiliza <thead>para encapsular una fila completa (o filas) para designarlas como el Encabezado de la tabla. De acuerdo con la especificación,

"Esta división permite a los agentes de usuario admitir el desplazamiento de los cuerpos de las tablas independientemente del encabezado y pie de la tabla. Cuando se imprimen tablas largas, la información del encabezado y pie de la tabla puede repetirse en cada página que contiene datos de la tabla".

<th>, por otro lado, se usa para diseñar una celda específica como una celda de encabezado en lugar de una celda de datos normal.


22
Siempre los uso a ambos.

11
Ese es un sitio web antiguo al que se vinculó en "Más: thead".
masterxilo

ver también: doc developer.mozilla.org de
docs

3
@masterxilo ¿Qué esperabas? El HTML en sí mismo es bastante antiguo.
Dan Bechard

1
@Kano ¿Se opondría a que alguien se vincule a un RFC de 30 años que todavía está en uso? ¿Qué importancia tiene la antigüedad de la página siempre que la información siga siendo relevante?
jmbpiano

65

<th>en realidad es un reemplazo para <td>cuando desea marcar una celda como celda de encabezado.

Si quieres usar <thead>y <th>no te olvides de anidar <th>dentro <tr>. De lo contrario, el código puede no ser válido.
Ejemplo:

<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
Esto no responde a la pregunta original, es más un apéndice y debería ser un comentario en lugar de una respuesta.
Gerald Schneider

77
Lo sé pero tengo puntos de reputación demasiado bajos para publicar comentarios, así que intenté publicar una respuesta. Lo siento, es mi culpa, pero las reglas del servicio de stack completo a veces son extrañas para mí.
rflw

28
En realidad, esta respuesta es la única que muestra un uso de TH y THEAD. +1 por eso!
barrypicker

44
Si escribe "La ventaja es que thpuede usarse dentro de ay theadtambién dentro de a tbody, ambos elementos son útiles en su propio contexto". eso responde a la pregunta ... Gerald solo está siendo exigente con la forma en que escribió la respuesta, pero de hecho es la única respuesta aquí que proporcionó un ejemplo significativo.
CPHPython

1
Ni siquiera sabía que se thpone en negrita por defecto, sin CSS adicional, ¡gracias por eso!
CPHPython

11

thes más específico de lo que puede residir dentro de thead. Una thcelda debe especificar el encabezado de las tdceldas correspondientes . De hecho, puede agregar un headersatributo a una tdcelda que apunta a la identificación de una thcelda (para lectores de pantalla). Por thlo tanto, está directamente relacionado con la tds de esa columna.

Sin embargo, theadpuede incluir cualquier información ... comúnmente sí, incluye las thceldas, pero también puede incluir cualquier cosa que considere apropiada como información en la parte superior de la tabla (que no sea un título, porque tiene su propia etiqueta como bien).


6

<thead> es especial porque puede usarse para repetir la fila del encabezado en la parte superior de la página en versiones impresas.


6

<thead>

Las filas de tabla se pueden agrupar en una cabeza de mesa, el pie de mesa, y una o más secciones del cuerpo de la mesa, utilizando los THEAD, TFOOTy TBODYelementos, respectivamente. Esta división permite a los agentes de usuario soportar el desplazamiento de los cuerpos de la mesa independientemente de la cabeza y el pie de la mesa. Cuando se imprimen tablas largas, la información del encabezado y pie de la tabla puede repetirse en cada página que contiene datos de la tabla.

El encabezado y el pie de la tabla deben contener información sobre las columnas de la tabla. El cuerpo de la tabla debe contener filas de datos de la tabla.

Cuando está presente, cada THEAD, TFOOT y TBODY contiene un grupo de filas. Cada grupo de filas debe contener al menos una fila, definida por el elemento TR.

<th>

Las celdas de la tabla pueden contener dos tipos de información: información de encabezado y datos. Esta distinción permite a los agentes de usuario representar celdas de encabezado y datos de forma distinta, incluso en ausencia de hojas de estilo. Por ejemplo, los agentes de usuario visual pueden presentar texto de celda de encabezado con una fuente en negrita. Los sintetizadores de voz pueden generar información de encabezado con una inflexión de voz distinta.

El elemento TH define una celda que contiene información de encabezado. Los agentes de usuario tienen dos piezas de información de encabezado disponibles: el contenido del elemento TH y el valor del atributo abbr. Los agentes de usuario deben representar el contenido de la celda o el valor del atributo abbr. Para los medios visuales, este último puede ser apropiado cuando no hay espacio suficiente para representar el contenido completo de la celda. Para medios no visuales, abbr puede usarse como una abreviatura de encabezados de tabla cuando se representan junto con el contenido de las celdas a las que se aplican.

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


3

Por lo que puedo ver por experiencia, no hay diferencia en la representación a menos que esté utilizando CSS para especificar una diferencia en la representación. Un <td>interior de a <thead>representará lo mismo que un <th>interior de a <table>o a <tbody>.


Un elemento thead también contiene filas.
DanMan

1
Creo que te refieres a un <td>interior de un <thead>renderizado igual que a <th>, no que a lo <tr>hace.
frabjous

0

No hay reglas estrictas aquí. El <thead>elemento es solo otra forma de agrupar sus columnas y filas, al igual que <tbody>y <tfoot>es. Por lo tanto, tiene más posibilidades de secuencias de comandos y formateo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.