Tenho o seguinte código:
<h2>
Deadpool
<svg width="53" height="64" class="inline" aria-label="and">
<use href="#oleo-ampersand"></use>
</svg>
Wolverine:<br>
A StackOverflow Example
</h2>
O e comercial é estilizado da seguinte forma:
Agora, quero que os leitores de tela narrem isso como uma frase regular (por exemplo, "Deadpool e Wolverine"). Adicionar aria-label="and"
ao <svg>
parece ser ignorado. Existe uma maneira de conseguir isso? Talvez eu deva fazer o bloco inteiro aria-hidden
e adicionar um elemento visualmente oculto?
Além disso, seria legal fazer com que o bloco fosse copiado da mesma forma em Ctrl+C
, mas acho que não é possível sem uma interceptação JS.
De fato, não é trivial copiar o texto sem JS.
Essa marcação funciona para você no leitor de tela?
Você também pode aplicar a
.sr-only
classe somente a um objeto oculto<span>
com o conteúdo de texto "e".Se o seu SVG não contiver nenhum elemento de texto, você pode até omitir o
aria-hidden
atributo.Para evitar inconsistências do navegador ao copiar o texto, podemos:
aria-hidden="true"
ao elemento SVG (contendo o e comercial)<span>
Você também usa um span com uma versão de subconjunto da fonte desejada aplicada (1. exemplo). Neste caso, você precisaria aplicar
aria-hidden="true"
e torná-lo não selecionável viauser-select:none
As regras comumente usadas
sr-only
garantem que o texto ainda seja legível por leitores de tela e selecionável - embora invisível para usuários videntes. O truque principal dessa técnica é tornar o elemento invisível por várias propriedades sem aplicardisply:none
ou,visibility:hidden
já que ambas as propriedades removeriam o conteúdo da árvore de acessibilidade.Veja também "O Projeto A11Y: Ocultar conteúdo"
Conversão de SVG para fonte
Se o seu gráfico SVG embutido não estiver disponível como uma fonte, você também pode usar um gerador de SVG para fonte, como icomoon ou fontello, para converter seus ativos em uma fonte de ícone.
Subconjunto
Se o seu serviço de fonte não suportar subconjuntos, você também pode convertê-lo com um serviço como o transfonter . Ele também tem uma opção para gerar dataURLs codificados em base64 do recurso de fonte.
Sim, remova o svg da árvore de acessibilidade e adicione a palavra "e" como texto visualmente oculto.
Além disso, observe que removi o
br
elemento após "Wolverine" e, em vez disso, envolvi a primeira linha de conteúdo em um span e dei a ele uma exibição de bloco para obter a quebra de linha desejada. No modo de navegação, alguns leitores de tela anunciarão o título como se fossem dois títulos separados se você usar obr
elemento para forçar uma quebra de linha, então esta é uma cortesia para evitar isso.