Tabelas

Algumas informações formam uma grade. Um horário de trens, um plano de preços, uma tabela de classificação, um conjunto de informações nutricionais: cada um tem linhas e colunas, e o significado está em como elas se alinham. HTML possui um conjunto dedicado de elementos para exatamente esse tipo de conteúdo, e usá-los mantém a grade legível tanto na tela quanto para software que lê a página em voz alta.
Noções básicas de tabelas
Uma tabela é uma grade de linhas e colunas, com a mesma forma que uma planilha. Você a constrói a partir de quatro elementos. <table> envolve toda a grade. Cada <tr> é uma linha (tr é abreviação de table row). Dentro de uma linha, cada <td> é uma célula de dados (td é table data). Quando uma célula rotula sua coluna ou linha, você usa <th> em vez disso (th é table header), e o navegador a mostra em negrito e centralizada para se destacar dos dados.
<table>
<tr>
<th>Dia</th>
<th>Horário de funcionamento</th>
</tr>
<tr>
<td>Segunda-feira</td>
<td>8:00 a 18:00</td>
</tr>
<tr>
<td>Sábado</td>
<td>9:00 a 14:00</td>
</tr>
</table>Duas células de cabeçalho no topo, depois duas linhas de dados. O navegador desenha a grade, dimensiona cada coluna para se ajustar ao seu conteúdo, e renderiza as duas células <th> em negrito.
<table> em volta de tudo, <tr> para cada linha, <td> para uma célula, e <th> para uma célula de cabeçalho. As células de cabeçalho saem em negrito e centralizado para se destacarem dos dados. Construa linha por linha e as colunas se alinham sozinhas. Estruturando uma tabela
A ordem de suas linhas é a ordem em que as pessoas as leem, então coloque a linha de cabeçalho, a que é construída a partir de células <th>, no topo. Depois mantenha cada linha com o mesmo comprimento: se a linha de cabeçalho tem três células, cada <tr> abaixo dela precisa de três células <td> também. Uma linha com uma célula faltando deixa um espaço na grade e as colunas param de se alinhar. Não há nada de novo para aprender aqui, apenas cuidado com as linhas que você já conhece.
<table>
<caption>Receita trimestral por região</caption>
<thead>
<tr>
<th>Região</th>
<th>Q1</th>
<th>Q2</th>
</tr>
</thead>
<tbody>
<tr>
<th>Norte</th>
<td>£12.000</td>
<td>£15.400</td>
</tr>
<tr>
<th>Sul</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>. Depois mantenha cada linha com o mesmo comprimento: três cabeçalhos no topo significa três células <td> em cada linha abaixo. Uma célula faltante é um espaço na grade, e é isso que confunde as pessoas no início. Tabelas acessíveis
Uma tabela acessível é aquela que faz sentido para todos, incluindo pessoas que ouvem a página com um leitor de tela (software que lê a página em voz alta) em vez de vê-la. A coisa mais útil que você pode fazer já está em seu kit de ferramentas: use <th> para cada célula de cabeçalho, não <td>. Um leitor de tela pode então dizer ao seu ouvinte quais células são rótulos e quais são dados, então um valor como "£15" é anunciado junto com a coluna à qual pertence. Uma tabela onde cada célula é um <td> simples lê como uma parede plana de números sem nada para ancorar.
A acessibilidade se estende além de apenas tabelas; o capítulo Acessibilidade cobre o resto da imagem.
<th> para cabeçalhos e <td> para dados. Um leitor de tela depende dessa divisão para ler cada valor com o cabeçalho ao qual pertence, então £15 chega com sua coluna em vez de sozinho. Pule isso e a tabela inteira pousa como uma parede de números soltos. Tabelas são para dados, não para layout
Houve uma época, antes do CSS conseguir lidar com layout, quando as pessoas construíam layouts de página inteira a partir de tabelas: uma <table> para colocar o menu à esquerda e o conteúdo à direita. Funciona visualmente, então você ainda vê em páginas antigas e alguns modelos de email. Não copie. Uma tabela é para dados tabulares, informações que pertencem a uma grade de linhas e colunas. Organizar as peças de uma página é o trabalho do CSS. Usar uma tabela para posicionar coisas em vez de manter dados torna a página mais difícil de ler para qualquer pessoa usando um leitor de tela, e mais difícil de ajustar depois.
<!-- Errado: uma tabela usada para colocar uma barra lateral ao lado de um artigo -->
<table>
<tr>
<td><nav>...</nav></td>
<td><article>...</article></td>
</tr>
</table>
<!-- Correto: elementos reais, com CSS cuidando das colunas -->
<nav>...</nav>
<article>...</article>Essa é a mesma separação de estrutura e apresentação estabelecida em O que é HTML: estrutura em HTML, layout em CSS. Para escolher elementos por seu significado, veja HTML Semântico.

