Acessibilidade

As pessoas acessam a web de muitas maneiras. Algumas veem a tela e movem um mouse. Algumas não conseguem ver a tela e a ouvem ler em voz alta. Algumas nunca tocam um mouse e se movem pela página com o teclado, com voz ou com um botão que pressionam. Acessibilidade é a prática de construir páginas que todos possam usar, e a maior parte dela se resume a escrever HTML da maneira como foi pensado.
Por que acessibilidade importa
Acessibilidade significa garantir que todos possam usar sua página, independentemente das circunstâncias e de como navegam. Alguém pode não conseguir ver a tela e ouvi-la em vez disso, através de software que lê a página em voz alta. Alguém pode não usar um mouse e se mover pela página com o teclado. Alguém pode precisar de texto maior ou cores mais fortes para ler confortavelmente.
Pense em um edifício com uma rampa ao lado dos degraus. A rampa ajuda pessoas que não conseguem subir escadas e não tira nada de ninguém que consiga. HTML acessível é a mesma ideia: abre a página para mais pessoas sem piorar para ninguém.
A parte tranquilizadora é que HTML é acessível para começar. Você chega a maior parte do caminho gratuitamente ao usar o elemento correto para cada pedaço de conteúdo.
HTML semântico como fundação
A coisa única mais eficaz que você pode fazer pela acessibilidade é usar o elemento que corresponde ao significado do conteúdo, em vez de um elemento genérico estilizado para parecer certo.
HTML semântico significa escolher uma tag pelo que o conteúdo é, não por como se parece. Um título usa <h1> a <h6>. Um botão usa <button>. Um link usa <a>. Uma lista usa <ul> ou <ol>. Cada um desses já carrega significado que um leitor de tela pode anunciar, então um ouvinte sabe "isto é um botão" ou "isto é um título" sem ver.
É como rotular caixas quando você se muda de casa. Uma caixa marcada "cozinha" ajuda quem a carrega, não apenas a pessoa que a embalou. Tags semânticas rotulam seu conteúdo da mesma maneira, então o navegador e a tecnologia assistiva sabem o que cada parte é.
Na prática, isso significa usar <button> quando você quer um botão, não uma <div> que você estilizou para parecer uma. O <div> pode ser feito para parecer idêntico, mas não diz nada sobre o que é. O capítulo HTML Semântico passa pelo conjunto completo.
<button> para um botão, <h1> para um título, <a> para um link. Cada um já diz a um leitor de tela o que é, então você obtém isso gratuitamente. Uma <div> estilizada pode parecer igual e ainda não dizer nada. Alternativas de texto, rótulos, foco e teclado
Alguns conteúdos não podem falar por si. Uma imagem é invisível para um leitor de tela até você descrevê-la. Um campo de formulário é um palpite até ser rotulado. E uma página que responde apenas a um mouse deixa de fora todos que não usam um. Essas quatro áreas são onde um pouco de cuidado vai longe.
Alguns hábitos confiáveis cobrem a maior parte disso:
- Imagens precisam de texto alternativo. O atributo
altdescreve uma imagem para quem não consegue vê-la. Se a imagem é apenas decorativa, umalt=""vazio diz ao leitor de tela para pulá-la.
<img src="red-fox.jpg" alt="Uma raposa vermelha enrolada dormindo na neve">- Campos de formulário precisam de rótulos. Um
<label>diz tanto ao visitante quanto ao leitor de tela o que digitar em um campo.
<label for="email">Endereço de e-mail</label>
<input id="email" type="email">- Botões e links precisam de texto claro. "Saiba mais" por si só é unclear quando lido fora de contexto; "Saiba mais sobre preços de ingressos" faz sentido por si só.
- A ordem de teclado deve corresponder à ordem de leitura. Alguém pressionando Tab se move pela página na ordem em que os elementos aparecem em seu HTML, então mantenha essa ordem sensata.
Os capítulos Imagens e mídia e Formulários e entradas aprofundam-se no texto alternativo e rótulos.
alt, dê aos campos de formulário um <label>, escreva o texto do botão e link que faz sentido por si só, e mantenha a ordem de abas correspondente à ordem de leitura. Nenhum deles leva muito tempo. Imagens decorativas recebem um alt="" vazio para que sejam puladas. ARIA e por que não a alcançar primeiro
Há um conjunto de atributos HTML feitos especificamente para acessibilidade, chamado ARIA. É útil no lugar certo, e é uma das partes mais usadas incorretamente da plataforma, então vale a pena entender tanto o que faz quanto quando deixá-la de lado.
ARIA significa Aplicações Ricas de Internet Acessíveis. É um conjunto de atributos extras que você pode adicionar a um elemento para dizer à tecnologia assistiva mais sobre ele. O nome faz parecer como a primeira ferramenta a alcançar, e geralmente é a última.
A razão é simples: a maioria do que ARIA pode descrever, HTML já diz por si próprio. Um <button> já é anunciado como um botão. Adicionar role="button" a ele não muda nada. Se você se encontrar adicionando ARIA para explicar o que um elemento é, isso geralmente é um sinal para trocar pelo elemento HTML simples que já o diz.
Imagine uma nota adesiva adicionada a uma caixa de mudança. Se a caixa já está impressa "cozinha", uma nota adesiva lendo "cozinha" só adiciona bagunça. Guarde a nota para a caixa que não tem rótulo próprio. ARIA é para as partes de uma página que HTML não tem elemento, o que é mais raro do que parece.
<button> real já diz que é um botão. Guarde ARIA para a parte rara de uma página que HTML não tem elemento, e mantenha todo o resto simples. Uma auto-auditoria rápida
Você não precisa de software especializado para capturar os problemas mais comuns. Alguns testes com ferramentas que você já tem na sua máquina encontram a maioria deles, e levam apenas alguns minutos para rodar.
Aqui está uma checklist curta que você pode rodar em qualquer página:
- Coloque o mouse de lado e pressione Tab. Você consegue alcançar cada link e botão, em uma ordem que faz sentido? Você consegue ativá-los com Enter?
- Cada imagem tem um atributo
alt? - Cada campo de formulário tem um
<label>? - Seus botões e links ainda fazem sentido quando lidos por conta própria?
- O texto está claro para ler contra seu fundo?
Rodar estes em sua própria página é rápido, e captura os problemas que as pessoas encontram com mais frequência. Se a tecla Tab ficar presa em algum lugar, ou uma imagem não tiver alt, você encontrou algo que vale a pena corrigir.
alt, cada campo tem um <label> e o texto se lê claramente contra seu fundo. Alguns minutos disso capturam os problemas que as pessoas encontram mais. 
