W3docs

Etiqueta HTML <tbody>

La etiqueta <tbody> define el contenido del cuerpo de una tabla HTML. Se usa junto con <thead> y <tfoot>. Ver ejemplos.

La etiqueta <tbody> define el contenido del cuerpo (un conjunto de filas) de una tabla HTML, creando un bloque semántico separado dentro de ella. Se utiliza junto con las etiquetas <thead> y <tfoot>, que especifican el encabezado y el pie de la tabla respectivamente. Juntos, estos tres elementos agrupan una tabla en su encabezado, cuerpo y pie, lo que hace que el marcado sea más fácil de leer, más fácil de aplicar estilos y accesible para la tecnología asistiva.

La etiqueta <tbody> debe usarse como elemento hijo de <table>, después de <caption> y <colgroup> (si los hay) y después del elemento <thead>. En HTML5, el elemento <tfoot> puede aparecer antes o después del elemento <tbody> — ambas opciones son válidas, y <tfoot> siempre se renderiza en la parte inferior independientemente de su posición en el código fuente.

Por qué <tbody> es importante

Incluso si nunca escribes una etiqueta <tbody>, el navegador crea una por ti. Cuando colocas filas <tr> directamente dentro de una <table>, el analizador las envuelve automáticamente en un <tbody> implícito. Esto tiene consecuencias prácticas:

  • Selectores CSS. Debido al <tbody> implícito, un selector descendiente como table > tbody > tr coincide con las filas incluso cuando no escribiste la etiqueta, mientras que table > tr no coincide con nada. Conocer esto evita confusos errores de «mi selector no funciona».
  • Agrupación de filas. Una tabla puede contener múltiples elementos <tbody>, lo que permite dividir una tabla larga en secciones lógicas (por ejemplo, por año o categoría) que se pueden aplicar estilos y desplazar de forma independiente.
  • Scripting con DOM. Cada <table> expone una colección tBodies en JavaScript (table.tBodies[0]), lo que te da acceso directo a cada grupo del cuerpo sin recorrer los nodos hijos.
  • Impresión. Cuando una tabla larga abarca varias páginas impresas, los navegadores repiten <thead> y <tfoot> en cada página mientras el contenido de <tbody> fluye de página en página.
Consejo

Los elementos <thead>, <tbody> y <tfoot> no afectan el diseño de la tabla de forma predeterminada. Usa propiedades CSS para personalizar el aspecto de la tabla.

Al imprimir un documento, los elementos <thead> y <tfoot> definirán la información que puede ser igual o muy similar en cada página de una tabla de varias páginas, mientras que el contenido de la etiqueta <tbody> variará de página en página.

En caso de usar <tbody>, no se pueden tener elementos <tr> (filas de tabla) que sean hijos del elemento <table> pero que no estén incluidos dentro de <tbody>. Si se usan filas que no son de encabezado ni de pie, deben estar dentro del elemento <tbody>.

Se puede usar más de un elemento <tbody> en cada tabla, siempre que sean todos sucesivos. Esto separará las filas de tablas grandes en secciones y permitirá aplicar formato a cada una por separado.

Sintaxis

La etiqueta <tbody> va en pares. El contenido se escribe entre las etiquetas de apertura (<tbody>) y cierre (</tbody>).

Etiqueta HTML <tbody>

<table>
  <thead> ... </thead>
  <tfoot> ... </tfoot>
  <tbody>
    <tr>
      <td> ... </td>
    </tr>
  </tbody>
</table>

Ejemplo de la etiqueta HTML <tbody>:

Etiqueta HTML <tbody>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      th, td {
        padding: 10px;
        border: 1px solid #666;
      }
    </style>
  </head>
  <body>
    <table style="width:80%; margin:30px auto; border-collapse:collapse;">
      <thead style="background-color:#1c87c9; color:#fff;">
        <tr>
          <th>Month</th>
          <th>Savings</th>
        </tr>
      </thead>
      <tfoot style="background-color:grey;">
        <!-- <tfoot> is placed after <thead>, but is shown on the bottom of the table. -->
        <tr>
          <td>Total</td>
          <td>1500</td>
        </tr>
      </tfoot>
      <tbody style="background-color:lightgrey;">
        <tr>
          <td>January</td>
          <td>500</td>
        </tr>
        <tr>
          <td>February</td>
          <td>1000</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Resultado

ejemplo de tbody

Ejemplo de la etiqueta HTML <tbody> con las etiquetas <thead> y <tfoot>:

Etiqueta HTML <tbody>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 60%;
        margin: 30px auto;
        border-collapse: collapse;
      }
      thead {
        background-color: #8ebf42;
        color: #fff;
      }
      tbody {
        background-color: #f3ebeb;
      }
      tfoot {
        background-color: #ccc7c7;
      }
      th,
      td {
        padding: 10px;
        border: 1px solid #666666;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>Month</th>
          <th>Savings</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>January</td>
          <td>1500</td>
        </tr>
        <tr>
          <td>February</td>
          <td>1000</td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td>Total</td>
          <td>2500</td>
        </tr>
      </tfoot>
    </table>
  </body>
</html>

Ejemplo de múltiples elementos <tbody>

Puedes usar varios elementos <tbody> en una tabla para agrupar filas en secciones separadas. Aquí, cada trimestre es su propio grupo del cuerpo, y cada grupo tiene su propio color de fondo:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 60%;
        margin: 30px auto;
        border-collapse: collapse;
      }
      th,
      td {
        padding: 10px;
        border: 1px solid #666666;
        text-align: left;
      }
      thead {
        background-color: #1c87c9;
        color: #fff;
      }
      tbody:nth-of-type(odd) {
        background-color: #f3ebeb;
      }
      tbody:nth-of-type(even) {
        background-color: #e3f0fb;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>Month</th>
          <th>Savings</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>January</td>
          <td>500</td>
        </tr>
        <tr>
          <td>February</td>
          <td>1000</td>
        </tr>
      </tbody>
      <tbody>
        <tr>
          <td>March</td>
          <td>750</td>
        </tr>
        <tr>
          <td>April</td>
          <td>1200</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Accesibilidad

Los elementos <tbody>, <thead> y <tfoot> ayudan a los lectores de pantalla a transmitir la estructura de una tabla. Para la tabla más accesible, combínalos con celdas de encabezado que usen el atributo scope, para que la tecnología asistiva pueda anunciar a qué encabezado pertenece una celda de datos:

<table>
  <thead>
    <tr>
      <th scope="col">Month</th>
      <th scope="col">Savings</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">January</th>
      <td>500</td>
    </tr>
  </tbody>
</table>

Usa scope="col" para encabezados de columna (normalmente dentro de <thead>) y scope="row" para encabezados de fila dentro del cuerpo.

Atributos

AtributoValoresDescripción
alignright left center justify charEspecifica la alineación del contenido dentro del elemento <tbody>. No compatible con HTML5
bgcolorbgcolorEstablece el color de fondo de las filas dentro del elemento <tbody>. No compatible con HTML5.
charcharacterEspecifica la alineación del contenido dentro del elemento <tbody> respecto a un carácter. Se usa solo cuando el atributo align="char". No compatible con HTML5.
charoffnumberEspecifica el número de caracteres que el contenido dentro del elemento <tbody> se alineará desde el carácter especificado por el atributo char. Se usa solo cuando el atributo align="char". No compatible con HTML5.
valigntop bottom middle baselineEspecifica la alineación vertical del contenido dentro del elemento <tbody>. No compatible con HTML5.

La etiqueta <tbody> también admite los Atributos Globales y los Atributos de Eventos.

Reemplazos CSS para los atributos obsoletos

Los atributos de presentación mencionados anteriormente están obsoletos en HTML5. En su lugar, usa CSS:

Atributo antiguoUsa este CSS en su lugar
align="center"text-align: center;
valign="top"vertical-align: top;
bgcolor="#eee"background-color: #eee;

Cómo aplicar estilos a una etiqueta HTML <tbody>

Apunta al elemento <tbody> directamente en tu hoja de estilos para dar al cuerpo de la tabla su propio fondo, bordes y alineación de celdas:

tbody {
  background-color: #f3ebeb;
  border: 2px solid #1c87c9;
}

tbody td {
  text-align: center;
  vertical-align: top;
}

/* Zebra-stripe the body rows */
tbody tr:nth-of-type(even) {
  background-color: #e3f0fb;
}

Consulta dar estilos a tablas con CSS para más técnicas.

Práctica

Práctica
¿Qué hace la etiqueta HTML tbody?
¿Qué hace la etiqueta HTML tbody?
Was this page helpful?