Tablas


Cierta información tiene forma de cuadrícula. Un horario de trenes, un plan de precios, una tabla de posiciones, una lista de datos nutricionales: cada una tiene filas y columnas, y el significado está en cómo se alinean. HTML tiene un conjunto de elementos dedicados exactamente a este tipo de contenido, y usarlos mantiene la cuadrícula legible tanto en pantalla como para el software que lee la página en voz alta.
Lo básico de las tablas
Una tabla es una cuadrícula de filas y columnas, con la misma forma que una hoja de cálculo. Se construye con cuatro elementos. <table> envuelve toda la cuadrícula. Cada <tr> es una fila (tr viene 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 se distinga 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 arriba, luego dos filas de datos. El navegador dibuja la cuadrícula, ajusta el tamaño de cada columna a su contenido y muestra 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 distinguirse de los datos. Constrúyela fila por fila y las columnas se alinean solas. Estructurar una tabla
El orden de tus filas es el orden en que la gente las lee, así que coloca la fila de encabezado, la formada por celdas <th>, en la parte superior. Luego mantén todas las filas con la misma longitud: si la fila de encabezado tiene tres celdas, cada <tr> debajo también necesita tres celdas <td>. Una fila con una celda faltante deja un hueco en la cuadrícula y las columnas dejan de coincidir. Aquí no hay nada nuevo que aprender, solo hay que tener 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 todas las filas con la misma longitud: tres encabezados arriba significa tres celdas <td> en cada fila debajo. Una celda faltante es un hueco en la cuadrícula, y eso es lo que suele confundir al principio. Tablas accesibles
Una tabla accesible es aquella 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 tus herramientas: usa <th> para cada celda de encabezado, no <td>. Así, un lector de pantalla puede decirle a quien escucha cuáles celdas son etiquetas y cuáles son datos, de modo que un valor como "$15" se anuncia junto con la columna a la que pertenece. Una tabla donde cada celda es un simple <td> se escucha como una pared plana de números sin nada que los sostenga.
La accesibilidad va mucho más allá de las tablas; el capítulo de Accesibilidad cubre el resto del panorama.
<th> para los encabezados y <td> para los datos. Un lector de pantalla se apoya en esa distinción para leer cada valor junto con el encabezado al que pertenece, de modo que $15 llega acompañado de su columna en vez de estar suelto. Si te lo saltas, toda la tabla se percibe como una pared de números sueltos. Para qué son las tablas
Hubo una época, antes de que CSS pudiera manejar la disposición visual, en que la gente construía diseños de página completos usando tablas: una <table> para poner el menú a la izquierda y el contenido a la derecha. Visualmente funciona, así que todavía se ve en páginas viejas y en 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 vez de para contener datos hace la página 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 ubicar 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 entre estructura y presentación planteada en ¿Qué es HTML?: estructura en HTML, disposición visual en CSS. Para elegir elementos según su significado, consulta HTML semántico.

