Tablas

Algunos datos forman una cuadrícula. Un horario de trenes, un plan de precios, una tabla de posiciones, una lista de información nutricional: cada uno tiene filas y columnas, y el significado está en cómo se alinean. HTML tiene un conjunto dedicado de elementos para exactamente este tipo de contenido, y usarlos mantiene la cuadrícula legible tanto en pantalla como para software que lee la página en voz alta.
Conceptos básicos de tablas
Una tabla es una cuadrícula de filas y columnas, con la misma forma que una hoja de cálculo. La construyes con cuatro elementos. <table> envuelve toda la cuadrícula. Cada <tr> es una fila (tr es abreviatura de table row). Dentro de una fila, cada <td> es una celda de datos (td es table data). Cuando una celda etiqueta su columna o fila, usas <th> en su lugar (th es table header), y el navegador la muestra en negrita y centrada para que destaque de los datos.
<table>
<tr>
<th>Día</th>
<th>Horario de apertura</th>
</tr>
<tr>
<td>Lunes</td>
<td>8:00 a 18:00</td>
</tr>
<tr>
<td>Sábado</td>
<td>9:00 a 14:00</td>
</tr>
</table>Dos celdas de encabezado en la parte superior, luego dos filas de datos. El navegador dibuja la cuadrícula, dimensiona cada columna para que se ajuste a su contenido, y representa las dos celdas <th> en negrita.
<table> alrededor de todo, <tr> para cada fila, <td> para una celda, y <th> para una celda de encabezado. Las celdas de encabezado salen en negrita y centradas para que destaquen de los datos. Construye fila a fila y las columnas se alinean solas. Estructuración de una tabla
El orden de tus filas es el orden en que las personas las leen, así que pon la fila de encabezado, la que se construye con celdas <th>, en la parte superior. Luego mantén cada fila con la misma longitud: si la fila de encabezado tiene tres celdas, cada <tr> debajo de ella necesita tres celdas <td> también. Una fila con una celda faltante deja un hueco en la cuadrícula y las columnas dejan de alinearse. No hay nada nuevo que aprender aquí, solo cuidado con las filas que ya conoces.
<table>
<caption>Ingresos trimestrales por región</caption>
<thead>
<tr>
<th>Región</th>
<th>T1</th>
<th>T2</th>
</tr>
</thead>
<tbody>
<tr>
<th>Norte</th>
<td>£12.000</td>
<td>£15.400</td>
</tr>
<tr>
<th>Sur</th>
<td>£9.800</td>
<td>£11.200</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Total</th>
<td>£21.800</td>
<td>£26.600</td>
</tr>
</tfoot>
</table><th>. Luego mantén cada fila con la misma longitud: tres encabezados arriba significa tres celdas <td> en cada fila de abajo. Una celda faltante es un hueco en la cuadrícula, y eso es lo que desconcierta a la gente al principio. Tablas accesibles
Una tabla accesible es una que tiene sentido para todos, incluidas las personas que escuchan la página con un lector de pantalla (software que lee la página en voz alta) en lugar de verla. Lo más útil que puedes hacer ya está en tu kit de herramientas: usa <th> para cada celda de encabezado, no <td>. Un lector de pantalla puede entonces decirle a su oyente qué celdas son etiquetas y cuáles son datos, por lo que un valor como "£15" se anuncia junto con la columna a la que pertenece. Una tabla donde cada celda es un <td> simple se lee como una pared plana de números sin nada para anclarlos.
La accesibilidad es más amplia que las tablas solas; el capítulo Accesibilidad cubre el resto del cuadro.
<th> para encabezados y <td> para datos. Un lector de pantalla se apoya en esa división para leer cada valor con el encabezado al que pertenece, así que £15 llega con su columna en lugar de solo. Omítelo y toda la tabla llega como una pared de números sueltos. Las tablas son para datos, no para diseño
Hubo un tiempo, antes de que CSS pudiera manejar el diseño, cuando la gente construía diseños de página completos con tablas: una <table> para poner el menú a la izquierda y el contenido a la derecha. Funciona visualmente, así que aún lo ves en páginas antiguas y algunas plantillas de correo. No lo copies. Una tabla es para datos tabulares, información que pertenece a una cuadrícula de filas y columnas. Organizar las piezas de una página es trabajo de CSS. Usar una tabla para posicionar cosas en lugar de para contener datos hace que la página sea más difícil de leer para cualquiera que use un lector de pantalla, y más difícil de ajustar después.
<!-- Incorrecto: una tabla usada para poner una barra lateral junto a un artículo -->
<table>
<tr>
<td><nav>...</nav></td>
<td><article>...</article></td>
</tr>
</table>
<!-- Correcto: elementos reales, con CSS manejando las columnas -->
<nav>...</nav>
<article>...</article>Esta es la misma separación de estructura y presentación establecida en Qué es HTML: estructura en HTML, diseño en CSS. Para elegir elementos por su significado, ver HTML Semántico.

