· 7 min de leitura

Contraste: porque é que algumas cores não se leem

O que quer dizer 4,5:1, porque é que o verde «brilha» mais e como saber se uma cor se lê, com exemplos reais do meu próprio site.

As letras Aa em três contrastes: branco sobre azul (11,5:1), cinzento sobre branco (4,5:1) e cinzento muito claro sobre branco (1,5:1).

Imagina que alguém te deixa um bilhete escrito a lápis cinzento-claro numa folha branca. Consegues ler, mas tens de aproximar o papel dos olhos. Agora imagina o mesmo bilhete escrito a caneta preta: lês logo, sem esforço. A diferença entre os dois chama-se contraste, o quanto o texto se destaca do fundo.

Nos sites e nas apps passa-se exatamente o mesmo. Uma cor pode ser linda e, mesmo assim, difícil de ler. Por isso, antes de usar uma cor, faço sempre a mesma pergunta: consegue-se ler?

E isto não é só para quem vê mal. Toda a gente perde contraste quando usa o telemóvel ao sol, com o brilho no mínimo ou num ecrã mais fraco. E, com a idade, os olhos também passam a precisar de mais contraste.

O mesmo cartão «Próxima viagem» duas vezes, no escritório e ao sol. Com cinzentos claros, ao sol o texto quase desaparece. Com cores de bom contraste, continua legível.
Ao sol, o ecrã perde contraste. O que já era fraco desaparece; o que era forte aguenta-se.

O que quer dizer «4,5 : 1»

O contraste mede-se com um número, como se fosse uma régua. Essa régua vai do 1 ao 21:

  • 1:1 é contraste nenhum, como branco sobre branco. Não se vê nada.
  • 21:1 é o máximo possível: preto sobre branco.
  • Tudo o resto fica pelo meio. Quanto maior o número, mais fácil é ler.

Lê-se «4,5 para 1» e quer dizer, mais ou menos, que a cor clara é 4,5 vezes mais luminosa do que a escura, tal como os nossos olhos a sentem.

Porque é que o verde «brilha» mais

Aqui entra uma coisa curiosa: os nossos olhos não sentem todas as cores da mesma maneira. São muito mais sensíveis ao verde do que ao vermelho ou ao azul. Por isso, quando se calcula o contraste, o verde conta cerca de 72%, o vermelho 21% e o azul só 7%.

É por isso que um verde vivo parece quase tão claro como o branco, e um azul vivo parece escuro. Repara no texto branco em cima de cada um:

Vermelho, verde e azul puros, cada um com texto branco e preto. No verde, o branco dá só 1,37:1 e o preto 15,30:1. No azul, o branco dá 8,59:1 e o preto 2,44:1.
O verde puro é tão claro que o branco quase desaparece. O azul puro é tão escuro que pede texto branco.

Para quem quiser a conta completa: contraste = (L1 + 0,05) ÷ (L2 + 0,05), em que L1 é a luminosidade da cor mais clara e L2 a da mais escura. Não precisas de a fazer à mão; no fim mostro as ferramentas que a fazem por ti.

A frase «O texto que estás a ler» em seis cinzentos sobre branco, de 1,54:1 (falha) até 21:1 (passa AA e AAA).
A mesma frase em seis cinzentos sobre branco. O #767676 é o cinzento mais claro que ainda passa como texto normal.

As regras: AA e AAA

Existe um conjunto de regras internacionais para a web ser usável por toda a gente, chamado WCAG. Pensa nelas como as estrelas de segurança de um carro: há o mínimo que todos devem ter e há o nível máximo.

  • AA é o mínimo que qualquer site deve cumprir. É também o nível que a lei europeia de acessibilidade usa como referência.
  • AAA é o nível mais exigente.

Os números a decorar são poucos:

  • Texto normal: 4,5:1 para AA, 7:1 para AAA.
  • Texto grande (a partir de 24 px, ou 18,66 px em negrito): 3:1 para AA, 4,5:1 para AAA.
  • Peças da interface e gráficos (ícones, a borda de um campo, as linhas de um gráfico): 3:1 em relação ao que está à volta.

Porque é que o texto grande pode ter menos contraste? Pela mesma razão que lês um cartaz ao longe mas não lês as letras pequeninas de um contrato: letras grandes e grossas são mais fáceis de distinguir. O contrário também é verdade: texto pequeno e fino precisa de mais contraste do que parece.

O mesmo cinzento #949494 sobre branco, com 3,03:1: num parágrafo de letra pequena falha; num título grande e em negrito passa no nível AA.
O mesmo cinzento, o mesmo número. Em texto pequeno chumba; num título grande e em negrito passa.

E não é só o texto. A borda da caixa onde escreves o email, um ícone, a linha de um gráfico: tudo isso também tem de se ver. Se a borda de um campo é quase invisível, a pessoa nem percebe onde tem de escrever. E o texto de exemplo dentro do campo também é texto, por isso precisa dos mesmos 4,5:1.

Dois formulários iguais. À esquerda, bordas com 1,27:1 e texto de exemplo com 1,74:1, quase invisíveis. À direita, bordas com 3,42:1 e texto de exemplo com 5,26:1.
Bordas com 3:1 mostram logo onde se escreve e onde se carrega.
Contraste não é uma questão de gosto. É a diferença entre alguém conseguir ler o teu site ou desistir dele.

Um caso real: o laranja deste site

O laranja deste site é o #D4861A. É ótimo para destaques, mas como texto pequeno sobre o fundo creme dá só 2,76:1. Chumba.

Por isso, nos títulos pequenos (como o «PORTFOLIO» em maiúsculas por cima dos títulos grandes), eu usava um laranja mais escuro, o #AD6012. Sobre branco dava 4,71:1 e parecia resolvido. Mas, enquanto escrevia este post, medi-o sobre os fundos verdadeiros do site: no creme dava 4,48:1 e no cinzento claro 4,20:1. Ficava por um triz abaixo do mínimo, e eu nunca teria reparado só a olhar.

A solução não foi trocar de cor. Foi escurecer um bocadinho o mesmo laranja: agora é o #A0570E, com 5,16:1 no creme. Sobre o azul escuro faço o contrário e uso um laranja mais claro, o #F6C27A (7,07:1). É sempre «o laranja», só ajustado a cada fundo, como quem sobe ou baixa o volume consoante o barulho da sala.

Três cartões com o título «Processo / Como trabalho»: laranja da marca sobre o fundo creme com 2,76:1 (falha), laranja para texto #A0570E com 5,16:1 (AA) e laranja claro sobre azul com 7,07:1 (AA e AAA).
O mesmo laranja, afinado para cada fundo.
Medir uma cor sobre branco não chega. Mede-a sobre os fundos onde ela vai mesmo aparecer.

Os números das cores deste site

Antes de desenhar, meço as combinações que vou usar mais vezes. É como provar a sopa antes de a servir. No modo claro:

  • Texto principal #0D0D1C sobre o fundo #FAF9F7: 18,29:1
  • Texto secundário #40405A sobre o mesmo fundo: 9,51:1
  • Texto branco sobre o azul da marca #1E3A5F, nos botões: 11,50:1

O modo escuro não é só trocar o branco pelo preto. O azul da marca, que fica ótimo em fundo claro, sobre o fundo escuro dá apenas 1,40:1: praticamente desaparece. Por isso, no modo escuro passa a ser um azul mais claro, o #4A90D9 (4,82:1). E em vez de branco puro sobre preto puro, que encandeia, uso um cinzento muito claro sobre um fundo cinza-azulado.

  • Texto principal #EDEEF2 sobre #1E2128: 13,90:1
  • Texto secundário #A0A4AE: 6,46:1
  • Azul de destaque #4A90D9: 4,82:1
As cores do site medidas. Modo claro: texto principal 18,29:1, secundário 9,51:1, pequeno título 5,16:1 e botão 11,50:1. Modo escuro: texto principal 13,90:1, secundário 6,46:1, destaque 4,82:1, e o azul da marca com 1,40:1, que falha.
A paleta do site, medida nos dois modos. O azul da marca fica de fora no modo escuro.

A cor nunca deve trabalhar sozinha

Cerca de 1 em cada 12 homens tem algum tipo de daltonismo (nas mulheres, é perto de 1 em cada 200). A confusão mais comum é entre o vermelho e o verde. E repara: são exatamente as cores que usamos para «está tudo bem» e «correu mal».

Duas listas de pagamentos. À esquerda, como eu vejo: pontos verdes e vermelhos, e etiquetas Pago e Falhou. À direita, simulação de deuteranopia: os pontos ficam quase iguais, mas as etiquetas com ícone e texto continuam claras.
À direita, uma simulação de deuteranopia, um tipo de daltonismo. Só com cor, «pago» e «falhou» ficam quase iguais. Com ícone e texto, continua tudo claro.

A regra é simples: se tirasses a cor toda, a informação devia continuar lá. Um erro leva uma mensagem escrita, não só uma borda vermelha. Os links no meio do texto levam sublinhado. Num gráfico, as linhas levam nomes, não só cores diferentes.

Como verifico na prática

  1. No Figma, com um plugin de contraste, logo quando escolho as cores e antes de desenhar ecrãs.
  2. No browser, as ferramentas de programador do Chrome mostram o contraste ao inspecionar um texto, e o Lighthouse aponta os que falham.
  3. Online, o WebAIM Contrast Checker: metes duas cores e dá-te o número em segundos.
  4. Dois testes rápidos: ver o design a preto e branco (se deixas de perceber o que é importante, estava tudo dependente da cor) e abri-lo no telemóvel com o brilho no mínimo.
Uma janela «Apagar o post?» com dois botões. Só com cor (verde e vermelho), em cinzentos os botões ficam quase iguais. Com cor e forma (contorno para Cancelar, botão cheio com ícone para Apagar), a diferença continua clara em cinzentos.
O teste dos cinzentos: se os dois botões ficam iguais, a diferença estava só na cor.

Em resumo

  • O contraste vai de 1 a 21. Quanto maior, mais fácil é ler.
  • 4,5:1 para texto normal; 3:1 para texto grande e peças da interface.
  • Cinzento claro sobre branco é o erro mais comum. O #767676 é o limite.
  • Ajusta a cor a cada fundo, mais clara ou mais escura, e mede-a nos fundos reais.
  • Nunca uses só a cor para dizer alguma coisa.
  • Mede sempre: os olhos enganam, os números não.

Bom contraste não deixa o design mais feio. Deixa-o mais fácil de usar para toda a gente, incluindo tu, ao sol, com o brilho do telemóvel no mínimo.

Diogo Baraoo

Designer multidisciplinar · Sobre mim

Vamos trabalhar juntos

Tens uma vaga, um projeto
ou uma ideia?

Estou disponível para emprego a tempo inteiro e projetos freelance.