Bhinish Dhiman
Qual taxa de contraste você realmente precisa?
Traduzido do original em inglês. Ler o original
4.5:1 para texto corrido e 3:1 para texto grande, para atender à WCAG 2.2 AA. Grande significa 24px, ou 18.66px em negrito. Componentes de interface, como bordas de campos e ícones com significado, precisam de 3:1. O nível AAA eleva o texto corrido para 7:1 e o texto grande para 4.5:1.
Os limites são simples o bastante para decorar. O que dá trabalho é saber qual deles vale para um determinado elemento, e há quatro regras que muita gente entende errado.
Os números
| O quê | AA | AAA |
|---|---|---|
| Texto corrido | 4.5:1 | 7:1 |
| Texto grande | 3:1 | 4.5:1 |
| Componentes de interface e gráficos com significado | 3:1 | sem nível AAA |
| Controles desativados, elementos decorativos, logotipos | isentos | isentos |
O AA é o nível exigido de quase todo mundo. A ADA, o European Accessibility Act e regimes equivalentes fazem referência à WCAG 2.x no nível AA. O AAA costuma ser buscado de forma seletiva, não no site inteiro; os próprios autores da WCAG dizem que ele não é alcançável para todo tipo de conteúdo.
Regra 1: “grande” tem uma definição precisa
Texto grande significa 24px ou mais, ou 18.66px ou mais se o peso for 700 ou superior.
Esses números vêm da conversão de 18pt e de 14pt em negrito, com uma referência de 96dpi. O limite para negrito é menor porque um traço mais pesado põe mais tinta na tela no mesmo tamanho.
O erro comum é supor que qualquer título se qualifica. Um subtítulo de 20px em peso regular não é texto grande. Ele precisa de 4.5:1, igual ao texto corrido.
Regra 2: componentes de interface também precisam de contraste
O Critério de Sucesso 1.4.11, incluído na WCAG 2.1, é o que mais passa totalmente despercebido. Ele exige 3:1 para a informação visual necessária para identificar um componente e o estado dele.
Na prática:
- Bordas de campos de formulário, em relação ao fundo ao redor
- Indicadores de foco
- Contornos de toggles e checkboxes nos dois estados
- Ícones que carregam significado sozinhos
- As partes com significado de um gráfico: uma linha, uma barra, um ponto de dados
Ele não se aplica a gráficos decorativos nem a partes de um componente que não são necessárias para entendê-lo. Uma sombra sutil sob um card não tem problema. Já a borda do card, se for a única coisa que mostra onde está o campo, tem.
Esse critério pega muitos designs que, fora isso, são cuidadosos. Bordas de campo em cinza-claro #e5e7eb sobre branco ficam em cerca de 1.3:1: um padrão comum e uma reprovação clara.
Regra 3: texto de placeholder não é isento
Controles desativados são isentos dos requisitos de contraste. O texto de placeholder não é, e os dois são confundidos o tempo todo.
O placeholder é conteúdo real apresentado ao usuário, então precisa de 4.5:1 como qualquer outro texto corrido. O placeholder típico, em cinza-claro, nem chega perto.
A melhor solução costuma ser estrutural, e não de cor: se o placeholder está fazendo o papel de um rótulo, ele deveria ser um rótulo. Placeholders somem assim que a pessoa começa a digitar, que é exatamente quando mais se precisa lembrar para que servia o campo.
Regra 4: texto sobre imagem precisa de um fundo definido
Se o texto fica sobre uma foto ou um degradê, não existe uma única cor de fundo para medir, e a taxa muda conforme a imagem muda.
Você precisa criar um fundo determinado: uma camada sólida, uma sobreposição em degradê forte o suficiente para garantir o pior caso, ou um contêiner para o texto. Meça contra o ponto mais claro da área atrás do texto, não contra a média.
O mesmo raciocínio explica por que superfícies muito translúcidas e desfocadas são difíceis de deixar em conformidade: o fundo delas é o que estiver rolando por baixo no momento, então a taxa não é uma propriedade fixa.
Um limite não é uma nota
Passar de 4.5:1 por 0.01 não é muito melhor do que ficar 0.01 abaixo. O número é um piso, não uma nota.
Se um par passa raspando, trate isso como um alerta de que ele vai reprovar assim que alguém o usar um pouco menor, ou que um designer deixar o cinza um tom mais claro. Deixe margem em tudo o que você espera reaproveitar.
O que a taxa não consegue dizer
Duas coisas ficam totalmente fora desse modelo.
Ela não enxerga a tipografia. Uma legenda de 12px com traço fino e um título de 32px em negrito, nas mesmas cores, recebem a mesma taxa, e só um deles é legível. O APCA modela isso; a WCAG 2 não.
Ela não diz se duas cores de primeiro plano podem ser distinguidas uma da outra. É isso que quebra gráficos e cores de status para pessoas daltônicas, e nenhum teste de contraste pega o problema, porque as duas cores nunca são comparadas entre si.
As duas lacunas são reais, e vale a pena verificar cada uma separadamente depois que as taxas estiverem em ordem.
Nosso verificador de contraste mostra todos os limites de uma vez (AA e AAA, texto corrido e grande, além da regra de componentes), para você ver o que um par atende e o que não atende sem trocar de modo.