W3docs

Etiqueta HTML <td>

La etiqueta <td> define una celda de datos estándar en una tabla HTML. Debe usarse como elemento hijo de <tr>, que define una fila en la tabla.

La etiqueta <td> especifica una celda de datos estándar en una tabla HTML. Debe usarse como elemento hijo de <tr>, que define una fila en la tabla. Para definir una celda de encabezado se utiliza la etiqueta <th>.

La etiqueta <td> puede contener texto, formularios, imágenes, tablas, etc. El contenido dentro de ella está alineado a la izquierda de forma predeterminada.

Consejo

Si presentas datos tabulares en tablas, cada celda de datos debe añadirse individualmente como un elemento <td>.

Todas las filas de la tabla contienen un número igual de celdas, equivalente al número de celdas de la fila más larga. Si una fila tiene menos celdas, el navegador llenará automáticamente la fila colocando celdas vacías al final.

Consejo

Las tablas más avanzadas pueden contener los elementos <caption>, <colgroup>, <col>, <tfoot>, <tbody> o <thead>.

Si necesitas destacar que no hay datos en otras celdas, crea una celda sin contenido donde sea necesario.

Las celdas añadidas por el navegador no tienen bordes y, si van una tras otra, se mostrarán como una sola celda integrada.

Sintaxis

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

Etiqueta HTML <td>

<table> 
  <tr> 
    <td>...</td> 
  </tr> 
</table>

Ejemplo de la etiqueta HTML <td>:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 80%;
        margin: 30px auto;
        border-collapse: collapse;
      }
      tr {
        background-color: lightgrey;
      }
      tr:first-child {
        background-color: #1c87c9;
        color: #fff;
      }
      th,
      td {
        padding: 10px;
        border: 1px solid #666;
      }
    </style>
  </head>
  <body>
    <table>
      <tr>
        <th>Month</th>
        <th>Date</th>
      </tr>
      <tr>
        <td>March</td>
        <td>10.09.2018</td>
      </tr>
      <tr>
        <td>June</td>
        <td>18.07.2018</td>
      </tr>
    </table>
  </body>
</html>

En este ejemplo usamos la etiqueta <tr> para definir filas de tabla, <th> para definir celdas de encabezado y <td> para definir celdas de datos estándar.

Expansión de columnas y filas

Los atributos colspan y rowspan se usan habitualmente con la etiqueta <td> para permitir que una sola celda se extienda por varias columnas o filas.

  • colspan establece cuántas columnas ocupa una celda. El valor debe ser un entero positivo; el valor predeterminado es 1. Una celda con colspan="2" ocupa el espacio horizontal de dos celdas normales, por lo que la fila a la que pertenece debe contener un <td> menos que las demás filas.
  • rowspan establece cuántas filas ocupa una celda. El valor debe ser un entero positivo; el valor predeterminado es 1. Una celda con rowspan="2" se extiende hacia la fila siguiente, por lo que esa fila siguiente debe omitir el <td> que quedaría debajo de ella.

Ten cuidado de no crear una extensión mayor de lo que la tabla permite. Si un colspan o rowspan supera el límite de la tabla, los navegadores lo recortarán a las columnas o filas disponibles en lugar de añadir nuevas. Por el contrario, si olvidas eliminar las celdas que una extensión solapa, la fila termina con demasiadas celdas y el diseño de la tabla se rompe.

Ejemplo de la etiqueta HTML <td> con el atributo colspan:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 80%;
        margin: 30px auto;
        border-collapse: collapse;
      }
      tr {
        background-color: #e6ebef;
      }
      tr:first-child {
        background-color: #1c87c9;
        color: #fff;
      }
      tr:last-child {
        height: 60px;
      }
      tr:last-child td {
        background-color: #a3cced;
        vertical-align: bottom;
      }
      tr:last-child span {
        font-size: 14px;
      }
      th,
      td {
        padding: 10px;
        border: 1px solid #666;
      }
    </style>
  </head>
  <body>
    <table>
      <tr>
        <th>Company e-mail</th>
        <th>Date</th>
      </tr>
      <tr>
        <td>
          <a href="#">[email protected]</a>
        </td>
        <td>01.09.2017</td>
      </tr>
      <tr>
        <td colspan="2">[email protected];
          <strong>01.09.2017 </strong>
          <span>(received date)</span>
        </td>
      </tr>
    </table>
  </body>
</html>

Resultado

ejemplo de td 1

Ejemplo de la etiqueta HTML <td> con el atributo rowspan:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 80%;
        margin: 30px auto;
        border-collapse: collapse;
      }
      th, td {
        padding: 10px;
        border: 1px solid #666;
      }
      thead tr {
        background-color: #1c87c9;
        color: #fff;
      }
      tbody td {
        background-color: #e6ebef;
      }
      .year {
        background-color: #a3cced;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>Month</th>
          <th>Year</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>March</td>
          <td class="year" rowspan="2">2014</td>
        </tr>
        <tr>
          <td>April</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Asociación de celdas con encabezados para accesibilidad

En una tabla simple, los lectores de pantalla pueden asociar cada celda de datos a su encabezado de columna y de fila de forma automática. En una tabla compleja — con varios niveles de encabezados o celdas expandidas — esa asociación automática falla. Para que esas tablas sean legibles por tecnologías de asistencia, asigna un id a cada <th> y luego lista los ids correspondientes en el atributo headers de cada <td> relacionado. Una celda puede referenciar varios encabezados separando sus ids con espacios.

Ejemplo de la etiqueta HTML <td> con el atributo headers:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        border-collapse: collapse;
        margin: 30px auto;
      }
      th, td {
        padding: 10px;
        border: 1px solid #666;
      }
    </style>
  </head>
  <body>
    <table>
      <tr>
        <th id="name">Name</th>
        <th id="hours">Hours</th>
        <th id="rate">Rate</th>
      </tr>
      <tr>
        <td headers="name">Ann</td>
        <td headers="hours">38</td>
        <td headers="rate">$25</td>
      </tr>
      <tr>
        <td headers="name">Bob</td>
        <td headers="hours">40</td>
        <td headers="rate">$30</td>
      </tr>
    </table>
  </body>
</html>

Aquí cada celda de datos apunta de vuelta al encabezado que la describe, de modo que un lector de pantalla puede anunciar, por ejemplo, "Rate: $25" en lugar de simplemente "$25".

Problemas de diseño con <td>

Por defecto, cada celda de datos se alinea verticalmente con las celdas de la misma columna en las demás filas. Añadir un <td> extra a una sola fila rompe esa alineación, porque cada celda siguiente de esa fila se desplaza una columna.

Por ejemplo, esta fila tiene tres celdas mientras que el resto de la tabla tiene dos, por lo que sus celdas ya no se alinean bajo los encabezados:

<tr>
  <th>Month</th>
  <th>Total</th>
</tr>
<tr>
  <td>March</td>
  <td>Q1</td>
  <td>120</td>
</tr>

La solución es fusionar celdas con colspan en lugar de añadir una columna extra. Aquí la celda "March" abarca ambas columnas sobre los totales, manteniendo la cuadrícula alineada:

<tr>
  <th>Month</th>
  <th>Total</th>
</tr>
<tr>
  <td colspan="2">March (Q1)</td>
</tr>
<tr>
  <td>April</td>
  <td>120</td>
</tr>

Atributos

AtributoValorDescripción
abbrtextoDefine una versión abreviada del contenido de una celda, o un texto alternativo. (Los agentes de usuario, como los lectores de voz, pueden presentar esta descripción antes que el propio contenido). No compatible con HTML 5.
alignleft right center justify charAlinea el contenido de una celda. No compatible con HTML 5.
axiscategory_nameCategoriza celdas con contenido similar. No compatible con HTML 5.
backgroundbackgroundEstablece el fondo de una celda. No compatible con HTML 5.
bgcolorrgb(x,x,x) #xxxxxx colornameDefine el color de fondo de una celda. No compatible con HTML 5.
bordercolorbordercolorEstablece el color del borde. No compatible con HTML 5.
charcharacterAlinea el contenido de una celda con un carácter. Se usa únicamente si el atributo align="char". No compatible con HTML 5.
charoffnumberEstablece el número de caracteres a los que el contenido se alineará desde el carácter especificado por el atributo char. Se usa únicamente si el atributo align="char". No compatible con HTML 5.
colspannumberDefine el número de columnas que debe abarcar una celda. El valor del atributo debe ser un entero positivo. El valor predeterminado es 1.
headersheader_idEspecifica una o más celdas de encabezado (definidas por la etiqueta <th>) con las que está relacionada una celda estándar.
height% pixelsEstablece la altura de una celda. No compatible con HTML 5.
nowrapnowrapEspecifica que el contenido dentro de una celda no debe ajustarse. No compatible con HTML 5.
rowspannumberEspecifica el número de filas que debe abarcar una celda. El valor del atributo debe ser un entero positivo. El valor predeterminado es 1. No se recomienda usar valores superiores a 65534, ya que se recortarán a 65534.
valigntop middle bottom baselineEspecifica la alineación vertical del contenido dentro de una celda. No compatible con HTML 5. Usa la propiedad CSS vertical-align en su lugar.
width% pixelsEstablece el ancho de una celda. No compatible con HTML 5.

La etiqueta <td> admite los Atributos Globales y los Atributos de Evento.

Información

El atributo scope no es válido en <td>; pertenece al elemento <th>, donde declara si un encabezado aplica a una columna o a una fila. Usa headers en un <td> para apuntar de vuelta a sus celdas de encabezado.

Cómo dar estilo a una etiqueta HTML <td>

Los estilos más comunes de <td> controlan el espaciado, los bordes y la alineación. Aplica el estilo a td junto con th para que las celdas de encabezado y de datos compartan un aspecto coherente:

table {
  border-collapse: collapse;
}
td {
  padding: 10px;
  border: 1px solid #666;
  text-align: left;
  vertical-align: middle;
}
td:hover {
  background-color: #f1f7fb;
}

Etiquetas relacionadas

  • <table> — el contenedor que alberga todas las filas y celdas.
  • <tr> — define una fila de tabla; cada <td> debe estar dentro de una.
  • <th> — define una celda de encabezado, vinculada con <td> a través del atributo headers.

Práctica

Práctica
¿Cuál de las siguientes afirmaciones sobre los atributos de la etiqueta HTML td es correcta?
¿Cuál de las siguientes afirmaciones sobre los atributos de la etiqueta HTML td es correcta?
Was this page helpful?