.sr-only
é um nome de classe usado especificamente para leitores de tela. Você pode usar qualquer nome de classe, mas .sr-only
é bastante usado. Se você não se importa com o desenvolvimento com a conformidade em mente, ele pode ser removido. Ele não afetará a interface do usuário de nenhuma maneira se for removido porque o CSS para esta classe não é visível para navegadores de desktop e dispositivos móveis.
Parece haver algumas informações faltando aqui sobre o uso de .sr-only
para explicar sua finalidade e ser para leitores de tela. Em primeiro lugar, é muito importante manter sempre em mente os usuários prejudicados. O comprometimento é o objetivo da conformidade com o 508: https://www.section508.gov/ , e é ótimo que o bootstrap leve isso em consideração. No entanto, o uso de .sr-only
não é tudo o que precisa ser levado em consideração para a conformidade com o 508. Você pode usar cores, tamanho de fontes, acessibilidade via navegação, descritores, uso de árias e muito mais.
Mas quanto a .sr-only
- o que o CSS realmente faz? Existem várias variantes ligeiramente diferentes do CSS usado .sr-only
. Um dos poucos que eu uso está abaixo:
.sr-only {
position: absolute;
margin: -1px 0 0 -1px;
padding: 0;
display: block;
width: 1px;
height: 1px;
font-size: 1px;
line-height: 1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
outline: 0;
}
O CSS acima oculta o conteúdo dos navegadores de desktop e móveis incluídos nesta classe, mas é visto por um leitor de tela como o JAWS: http://www.freedomscientific.com/Products/Blindness/JAWS . A marcação de exemplo é a seguinte:
<a href="#" target="_blank">
Click to Open Site
<span class="sr-only">This is an external link</span>
</a>
Além disso, se um elemento DOM tiver largura e altura 0, o elemento não será visto pelo DOM. É por isso que o CSS acima usa width: 1px; height: 1px;
. Ao usar display: none
e definir seu CSS como height: 0
e width: 0
, o elemento não é visto pelo DOM e, portanto, é problemático. O uso de CSS acima width: 1px; height: 1px;
não é tudo o que você faz para tornar o conteúdo invisível para navegadores de desktop e dispositivos móveis (sem o overflow: hidden
seu conteúdo ainda seria exibido na tela) e visível para os leitores de tela. Ocultar o conteúdo dos navegadores de desktop e móvel é feito adicionando um deslocamento width: 1px
e height: 1px
mencionado anteriormente usando:
position: absolute;
margin: -1px 0 0 -1px;
overflow: hidden;
Por fim, para ter uma idéia muito boa do que um leitor de tela vê e retransmite para o usuário prejudicado, desative o estilo da página no seu navegador. Para o Firefox, você pode fazer isso acessando:
View > Page Style > No Style
Espero que as informações que forneço aqui sejam mais úteis para alguém, além das outras respostas.