Avançar para o conteúdo
SilktideAjuda

Cabeçalhos de tabela

A Silktide verifica se as tabelas que apresentam dados definem células de cabeçalho. Os cabeçalhos informam às pessoas que usam o significado de cada linha e coluna, algo que os leitores que veem inferem a partir do esquema da tabela.

Considere uma tabela de apelidos e cidades. Sem uma linha de cabeçalho, um valor como "Washington" poderia ser qualquer um dos dois — o significado só fica claro quando as colunas são identificadas.

<!-- Problema: os cabeçalhos são células comuns, por isso não têm significado -->
<table>
  <tr>
    <td>Sobrenome</td>
    <td>Cidade</td>
  </tr>
  <tr>
    <td>Washington</td>
    <td>Londres</td>
  </tr>
</table>

Por que isso é importante

Um percorre uma tabela uma célula de cada vez. Quando os cabeçalhos são definidos, ele pode anunciar o cabeçalho relevante junto com cada valor, de modo que "Londres" seja lido como "Cidade: Londres". Sem cabeçalhos, a pessoa ouve apenas um fluxo de valores e precisa memorizar o esquema da tabela para entendê-los — e, em tabelas maiores, isso é praticamente impossível.

Deixar a linha superior em negrito ou com uma cor diferente não é suficiente. A formatação visual não transmite significado à tecnologia assistiva; apenas o subjacente o faz.

Como corrigir

  1. Altere cada célula de cabeçalho de <td> para <th> e adicione um atributo scope indicando se ela é o cabeçalho de uma coluna ou de uma linha:
<!-- Corrigido: os cabeçalhos são células de cabeçalho reais -->
<table>
  <tr>
    <th scope="col">Sobrenome</th>
    <th scope="col">Cidade</th>
  </tr>
  <tr>
    <td>Washington</td>
    <td>Londres</td>
  </tr>
</table>
  1. Se a tabela não apresentar dados e for usada apenas para organizar visualmente a página, adicione role="presentation" ao elemento <table> para que a tecnologia assistiva ignore sua estrutura. Melhor ainda, substitua as tabelas de layout por CSS — elas são fortemente desencorajadas no design moderno para a Web.

Como a Silktide faz essa verificação

  1. Encontra todas as tabelas em cada página.
  2. Ignora as tabelas marcadas como apresentações com role="presentation".
  3. Ignora as tabelas com apenas uma linha ou apenas uma coluna, que provavelmente não são tabelas de dados.
  4. Relata cada tabela restante que não contém nenhuma célula de cabeçalho <th>.

Solução de problemas

Minha tabela tem cabeçalhos, mas eles são células <td> formatadas

Células que apenas parecem cabeçalhos não contam. A tecnologia assistiva não consegue perceber fontes ou cores; converta as células para <th>.

Minha tabela de layout foi sinalizada

A Silktide só ignora tabelas de layout que declaram role="presentation". Se uma tabela for realmente apenas para apresentação, adicione esse atributo — ou substitua a tabela por um layout em CSS.

Saiba mais

Última atualização

Esta página foi útil?