DevPath · Aprenda a programar ESPTEN

HTML semântico, multimídia e tabelas

Tabelas acessíveis para dados

Quando usar uma tabela?

As tabelas são para dados tabulares: informação que só faz sentido cruzando linhas e colunas (um horário, uma comparação de preços, uma classificação). Se você tira as linhas e os dados viram uma bagunça, era uma tabela.

⚠️ Cilada clássica: usar tabelas para diagramar o layout da página. Isso era coisa dos anos 2000; hoje, para posicionar coisas na tela, existem o CSS Grid e o Flexbox. A tabela é para dados, não para layout.

A anatomia de uma tabela

<table>
  <caption>Notas do primeiro trimestre</caption>
  <thead>
    <tr>
      <th scope="col">Aluno</th>
      <th scope="col">Matemática</th>
      <th scope="col">Português</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Ana</th>
      <td>9</td>
      <td>8</td>
    </tr>
    <tr>
      <th scope="row">Luis</th>
      <td>7</td>
      <td>9</td>
    </tr>
  </tbody>
</table>

Peça por peça:

scope: o atributo que torna a tabela acessível

O atributo scope em um <th> indica a que ele se aplica esse cabeçalho:

Isso é fundamental para a acessibilidade: quando alguém com leitor de tela está na célula "9", o leitor pode anunciar "Ana, Matemática: 9" porque sabe que "Ana" é o cabeçalho da sua linha e "Matemática" o da sua coluna. Sem scope, ouviria apenas "9", sem contexto.

Uma tabela bem marcada (com caption, thead/tbody e th scope) faz sentido mesmo ouvida às cegas. Se passa nesse teste, você acertou. Esse é o objetivo.

Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← Multimídia: imagens responsivas, áudio e vídeoVer o módulo →