SVGs acessíveis: padrões perfeitos para usuários de leitores de tela

Publicados: 2022-03-10
Resumo rápido ↬ Descubra quais padrões SVG devemos evitar e quais padrões são os mais inclusivos ao comparar diferentes combinações de SOs, navegadores e leitores de tela. Carie também estará realizando um workshop online sobre Padrões de Front-End Acessíveis em toda a acessibilidade de front-end.

Embora os Scalable Vector Graphics (SVGs) tenham sido introduzidos pela primeira vez no final dos anos 90, eles viram um grande ressurgimento em popularidade na última década devido à sua extrema flexibilidade, alta fidelidade e relativa leveza em um mundo onde a largura de banda e o desempenho são mais importantes do que nunca . Os avanços em JavaScript e a introdução de consultas de mídia CSS, como @prefers-color-scheme e @prefers-reduced-motion, estenderam a funcionalidade dos SVGs muito além de seu caso de uso inicial de simplesmente exibir imagens vetoriais em um site.

À medida que a tecnologia SVG avança, nossa compreensão de como projetamos e desenvolvemos SVGs também precisa avançar. Parte desse avanço inclui considerar o impacto de tais designs e códigos em humanos reais, também conhecidos como nossos usuários finais.

Este artigo descreve doze padrões SVG distintos encontrados “na natureza” e cada descrição alternativa anunciada quando acessada por diferentes combinações de sistemas operacionais, navegadores e leitores de tela.

É claro que os exemplos a seguir não pretendem ser uma lista exaustiva de todos os padrões possíveis usados ​​na esfera digital, mas destacam alguns dos padrões SVG mais populares ou onipresentes que você pode encontrar. Continue lendo para descobrir quais padrões SVG você deve evitar e quais são os mais inclusivos!

Descrições alternativas básicas usando a tag <img>

O primeiro grupo de quatro padrões utiliza a tag <img> vinculada a um arquivo SVG. Essa é uma boa opção para imagens básicas e descomplicadas em seu site, aplicativo ou outro produto digital. Embora a desvantagem de usar esse padrão seja que você não pode controlar facilmente muitos elementos visuais ou animações como um SVG embutido, esse padrão deve renderizar imagens mais leves e rápidas em geral e permitir uma manutenção mais fácil em SVGs que você usa em vários locais.

Padrão #1: <img> + alt="[words]"

ilustração de raposa apresentada no exemplo do codepen
 <img class="fox" alt="What does the fox say?" src="https://upload.wikimedia.org/wikipedia/commons/3/39/Toicon-icon-fandom-howl.svg">

Padrão #2: <img> + role="img" + alt="[words]"

ilustração de raposa apresentada no exemplo do codepen
 <img role="img" class="fox" alt="What does the fox say?" src="https://upload.wikimedia.org/wikipedia/commons/3/39/Toicon-icon-fandom-howl.svg">

Padrão #3: <img> + role="img" + aria-label="[words]"

ilustração de raposa apresentada no exemplo do codepen
 <img role="img" class="fox" aria-label="What does the fox say?" src="https://upload.wikimedia.org/wikipedia/commons/3/39/Toicon-icon-fandom-howl.svg">

Padrão #4: <img> + role="img" + aria-labelledby="[ID]"

ilustração de raposa apresentada no exemplo do codepen
 <p class="visually-hidden">What does the fox say?</p> <img role="img" aria-labelledby="caption1" class="fox" src="https://upload.wikimedia.org/wikipedia/commons/3/39/Toicon-icon-fandom-howl.svg">

Descrições alternativas básicas usando a tag <svg>

O segundo grupo de quatro padrões utiliza a tag <svg> com um arquivo SVG embutido. Embora adicionar o código SVG diretamente na marcação possa tornar a página um pouco mais lenta para carregar, essa pequena ineficiência será compensada por ter mais controle sobre os elementos visuais ou animações de suas imagens. Ao adicionar seu SVG diretamente ao HTML, você também tem mais opções quando se trata de fornecer informações de imagem para seus usuários de leitores de tela.

Padrão nº 5: <svg> + role="img" + <title>

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <title>What does the fox say?</title> [design code] </svg>

Padrão nº 6: <svg> + role="img" + <text>

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <text class="visually-hidden" font-size="0">What does the fox say?</text> [design code] </svg>

Padrão #7: <svg> + role="img" + <title> + aria-describedby="[ID]"

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <title>What does the fox say?</title> [design code] </svg>

Padrão #8: <svg> + role="img" + <title> + aria-labelledby="[ID]"

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" aria-labelledby="fox8" ...> <title>What does the fox say?</title> [design code] </svg>
Mais depois do salto! Continue lendo abaixo ↓

Descrições alternativas estendidas usando a tag <svg>

O último grupo de quatro padrões utiliza a tag <svg> com um arquivo SVG embutido, muito parecido com o segundo grupo. No entanto, neste caso, estamos estendendo as descrições alternativas simples com informações adicionais devido à complexidade da imagem.

Esta seria uma boa escolha de padrão para imagens mais complicadas que precisam de mais explicações. No entanto, é importante ter em mente que existem algumas pessoas com deficiências – como distúrbios cognitivos – que podem se beneficiar de ter essas informações de imagem adicionais prontamente disponíveis na tela, em vez de enterradas no código SVG.

Dependendo do tipo e da quantidade de informações que você precisa adicionar ao seu SVG, você pode considerar uma abordagem totalmente diferente.

Padrão #9: <svg> + role="img" + <title> + <text>

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <title>What does the fox say?</title> <text class="visually-hidden" font-size="0">Will we ever know?</text> [design code] </svg>

Padrão #10: <svg> + role="img" + <title> + <desc>

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <title>What does the fox say?</title> <desc>Will we ever know?</desc> [design code] </svg>

Padrão #11: <svg> + role="img" + <title> + <desc> + aria-labelledby="[ID]"

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" aria-labelledby="fox11 description11" ...> <title>What does the fox say?</title> <desc>Will we ever know?</desc> [design code] </svg>

Padrão #12: <svg> + role="img" + <title> + <desc> + aria-describedby="[ID]"

ilustração de raposa apresentada no exemplo do codepen
 <svg role="img" ...> <title>What does the fox say?</title> <desc>Will we ever know?</desc> [design code] </svg> 

Veja o CodePen completo [Comparação de padrões SVG acessíveis (versão Fox)](https://codepen.io/smashingmag/pen/dyvvbKj) de Carie Fisher.

Veja a comparação completa de padrões SVG acessíveis do CodePen (versão Fox) por Carie Fisher.

Vencedores e perdedores do padrão SVG

Ao executar vários leitores de tela em diferentes combinações de sistemas operacionais e navegadores, vemos padrões definidos surgindo na tabela de resultados finais. Existem alguns vencedores e perdedores de padrões SVG claros , além de alguns padrões em algum lugar no meio que você pode implementar desde que esteja ciente e possa aceitar suas limitações. Analisando a tabela de resultados, podemos concluir o seguinte:

Descrições alternativas básicas usando a tag <img> (Grupo 1)

Melhor em exibição

  • Padrão 2 : <img> + role="img" + alt="[words]"
  • Padrão 3 : <img> + role="img" + aria-label="[words]"

Cuidado

  • Padrão 4 : <img> + role="img" + aria-labelledby="[ID]"

Não recomendado

  • Padrão 1 : <img> + alt="[words]"

Descrições alternativas básicas usando a tag <svg> (grupo 2)

Melhor em exibição

  • Padrão 5 : <svg> + role="img" + <title>
  • Padrão 8 : <svg> + role="img" + <title> + aria-labelledby="[ID]"

Cuidado

  • Padrão 7 : <svg> + role="img" + <title> + aria-describedby="[ID]"

Não recomendado

  • Padrão 6 : <svg> + role="img" + <text>

Descrições alternativas estendidas usando a tag <svg> (grupo 3)

Melhor em exibição

  • Padrão 11 : <svg> + role="img" + <title> + <desc> + aria-labelledby="[ID]"

Nota : Embora esse padrão não seja perfeito, pois repetiu descrições alternativas, ele não ignorou nenhum dos elementos do teste, ao contrário dos padrões “use cautela”.

Cuidado

  • Padrão 9 : <svg> + role="img" + <title> + <text>
  • Padrão 10 : <svg> + role="img" + <title> + <desc>
  • Padrão 12 : <svg> + role="img" + <title> + <desc> + aria-describedby="[ID]"

Não recomendado

  • Nenhum dos padrões neste grupo falhou completamente nos testes.

Resultados do teste

Veja a caneta [resultados dos testes](https://codepen.io/smashingmag/pen/YzZQBwG) de Carie Fisher.

Veja os resultados do teste da caneta por Carie Fisher.

Empacotando

É importante observar que parte da interpretação dos resultados dos testes de padrão SVG é entender que os criadores de cada leitor de tela têm navegadores recomendados aos quais são totalmente compatíveis. Isso não significa que você não deve ou não pode usar um leitor de tela em um navegador diferente, isso significa apenas que, se o fizer, os resultados podem não ser tão precisos quanto se você usasse o(s) recomendado(s).

O teste de padrão para este artigo incluiu algumas combinações de navegadores e leitores de tela que podem se enquadrar na categoria “franja”, mas também há notas sobre quais combinações de sistemas operacionais, navegadores e leitores de tela são recomendadas para seu próprio teste. Os resultados desses testes devem ajudá-lo a tomar a melhor decisão possível sobre o padrão SVG, com base nas suas necessidades e restrições de padrão.

Um lembrete de que, antes de se decidir por um padrão, certifique-se de conhecer os fundamentos de como e quando criar imagens acessíveis e de compreender completamente as informações alternativas necessárias para os diferentes tipos de imagem.

Se você precisar de ajuda adicional para decidir qual padrão usar para seu ambiente, confira o artigo Bom, melhor, melhor: desvendando o mundo complexo dos padrões acessíveis para ajudá-lo a navegar nas águas complicadas dos padrões acessíveis. Armado com todas essas informações e apenas um pouco de esforço, seus SVGs estão a caminho de serem mais inclusivos para todos.

Nota do editor : Você pode aprender as melhores práticas de acessibilidade com Carie em seu próximo workshop online sobre padrões de front-end acessíveis — com diretrizes, ferramentas de teste, tecnologia assistiva e padrões de design inclusivos. Online e ao vivo.