Informática Aplicada · HTML & Acessibilidade

Aula 17
Tabelas, Formulários
& WAI-ARIA

Aprenda a estruturar tabelas de dados, criar formulários acessíveis e aplicar os atributos WAI-ARIA para tornar suas páginas utilizáveis por todos.

🗂 Tabelas HTML 📋 Formulários ♿ Acessibilidade Web 🔖 WAI-ARIA ✏️ Exercícios Práticos
01

Tabelas HTML

O que é uma tabela?

Elemento HTML usado para organizar dados em linhas e colunas. Ideal para comparações, horários, listas de notas, etc.

Quando usar?

Use tabelas apenas para dados tabulares. Nunca utilize tabelas para criar layouts de página — use CSS para isso.

Semântica importa!

Tags como <thead>, <tbody>, <tfoot> e <caption> ajudam leitores de tela e buscadores.

🔖 Estrutura básica de uma tabela

<!-- Estrutura semântica completa --> <table> <caption>Notas dos Alunos – 1º Bimestre</caption> <thead> <tr> <th scope="col">Aluno</th> <th scope="col">Prova 1</th> <th scope="col">Prova 2</th> <th scope="col">Média</th> </tr> </thead> <tbody> <tr> <td>Ana Silva</td> <td>8,5</td> <td>9,0</td> <td>8,75</td> </tr> </tbody> <tfoot> <tr> <td>Média da Turma</td> <td colspan="3">8,5</td> </tr> </tfoot> </table>

👁 Resultado visual da tabela acima:

Notas dos Alunos – 1º Bimestre
Aluno Prova 1 Prova 2 Trabalho Média
Ana Silva8,59,010,09,2
Bruno Costa7,07,58,07,5
Carla Mendes9,08,59,59,0
Diego Rocha6,57,07,06,8
Eduarda Lima10,09,510,09,8
Média da Turma8,28,38,98,5

colspan e rowspan

colspan="2" une 2 colunas.
rowspan="2" une 2 linhas. Use para células que abrangem mais de uma posição.

scope nos cabeçalhos

scope="col" indica que o <th> é cabeçalho de coluna. scope="row" indica cabeçalho de linha. Essencial para acessibilidade.


02

Formulários para Entrada de Dados

Tag <form>

Envolve todos os campos. Atributos principais: action (onde enviar) e method (GET ou POST).

Tipos de <input>

text, email, password, number, date, checkbox, radio, file, submit.

<label> obrigatório!

Todo campo precisa de um <label> associado via for / id. Facilita clique e é essencial para leitores de tela.

🔖 Código do formulário

<form action="#" method="post" novalidate> <!-- Fieldset agrupa campos relacionados --> <fieldset> <legend>Dados Pessoais</legend> <label for="nome">Nome completo</label> <input type="text" id="nome" name="nome" required placeholder="Ex.: Maria da Silva"/> <label for="email">E-mail</label> <input type="email" id="email" name="email" required/> <label for="turma">Turma</label> <select id="turma" name="turma"> <option value="">Selecione...</option> <option value="A">Turma A</option> <option value="B">Turma B</option> </select> <label for="obs">Observações</label> <textarea id="obs" name="obs" rows="4"></textarea> <button type="submit">Enviar</button> </fieldset> </form>

👁 Formulário funcional:

📋 Cadastro de Aluno

Informe um e-mail válido.


03

Acessibilidade Web

O que é acessibilidade?

É a prática de criar sites que qualquer pessoa possa usar, incluindo pessoas com deficiências visuais, auditivas, motoras ou cognitivas.

WCAG

Web Content Accessibility Guidelines — diretrizes do W3C com critérios de acessibilidade divididos em níveis: A, AA e AAA.

Leitores de tela

Softwares como NVDA e JAWS leem o conteúdo da tela em voz alta. Um HTML semântico e bem estruturado é fundamental para eles funcionarem.

4 Princípios POUR

Perceptível · Operável · Compreensível · Robustez — todo conteúdo deve atender esses pilares.

💡 Dica de ouro: Use sempre HTML semântico. Tags como <header>, <nav>, <main>, <article>, <footer> já oferecem acessibilidade por padrão — sem precisar de ARIA!

04

Padrão WAI-ARIA

WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) é um conjunto de atributos HTML que permite comunicar às tecnologias assistivas a função, o estado e as propriedades de elementos de interface, especialmente quando o HTML nativo não é suficiente.

role=""

Define o papel de um elemento. Ex.: role="navigation", role="alert", role="dialog", role="button".

aria-label=""

Fornece um nome acessível quando não há texto visível. Ex.: botão com ícone sem texto. aria-label="Fechar menu".

aria-describedby=""

Aponta para um elemento que descreve o campo. Ideal para mensagens de erro ou dicas de preenchimento.

Estados dinâmicos

aria-expanded, aria-hidden, aria-checked, aria-disabled comunicam o estado atual de componentes interativos.

🔖 Exemplos práticos de WAI-ARIA

<!-- 1. Botão de menu com estado expandido --> <button aria-expanded="false" aria-controls="menu-nav" aria-label="Abrir menu de navegação"></button> <!-- 2. Campo com descrição de erro --> <label for="cpf">CPF</label> <input type="text" id="cpf" aria-describedby="cpf-erro" aria-invalid="true" /> <span id="cpf-erro" role="alert"> CPF inválido. Use o formato 000.000.000-00. </span> <!-- 3. Elemento oculto visualmente mas lido pelo leitor --> <span class="sr-only">Carregando conteúdo...</span> <!-- 4. Elemento decorativo que deve ser ignorado --> <img src="decoracao.png" alt="" aria-hidden="true" /> <!-- 5. Live region para notificações dinâmicas --> <div aria-live="polite" aria-atomic="true"> Formulário enviado com sucesso! </div>

📌 Principais atributos ARIA

role="alert"

Anuncia mensagens urgentes ao leitor de tela imediatamente.

aria-live="polite"

Anuncia mudanças dinâmicas no conteúdo quando o usuário estiver livre.

aria-hidden="true"

Oculta o elemento de tecnologias assistivas (decorativos ou duplicados).

aria-label="texto"

Nomeia o elemento quando não há texto visível disponível.

aria-expanded

Indica se um menu, acordeão ou seção está aberto (true) ou fechado (false).

aria-required

Informa que o campo é obrigatório — use junto com required.

⚠️ Regra de ouro do ARIA: "Não use ARIA se o HTML nativo resolve." Prefira sempre <button> a <div role="button">, <nav> a <div role="navigation">, etc.

05

Exercícios Práticos

Abra o Bloco de Notas, crie um arquivo .html e resolva cada exercício. Salve e abra no navegador para ver o resultado.

🛠 Ferramentas para testar acessibilidade:
NVDA — leitor de tela gratuito para Windows · axe DevTools — extensão para Chrome/Firefox · Lighthouse — auditor do próprio Chrome (F12 → Lighthouse → Accessibility) · W3C Validator — validator.w3.org