Como criar um indicador de carregamento perfeito para seus web apps
Web apps são complexos e, mantê-los acessíveis para pessoas com necessidades especiais exige um bom conhecimento das suas espeficações. Mas não se preocupe, pois neste artigo, eu vou mostrar como criar o indicadores de carregamento acessíveis e bonitos para suas aplicações.
Usamos indicadores de carregamento sempre que é necessário recuperar dados de maneira assíncrona em nossas aplicações, normalmente relacionadas à alguma interação do usuário: envio de formulários, requisições à APIs externas, upload de arquivos, etc. Para executarmos estas ações, é necessário que forneçamos alguma identificação visual para que o usuário possa identificar que a nossa aplicação está esperando algum dado ou retorno externo.
Vamos começar com um exemplo simples, onde uma região da tela será atualizada quando um usuário selecionar um planeta da lista:
Agora, precisamos dizer para o leitores de telas ou qualquer outra tecnologia assistiva
que o parte do conteúdo exibido na tela é dinâmico. Para fazermos isso, usamos o
atributo aria-live
1, o qual pode receber um dos três argumentos:
off
: atributo padrão para todos os elementos da página. Normalmente, você não precisa definir este atributo de maneira explícita;assertive
: interrompe a leitura da tecnologia assistiva de maneira abrupta. Só deve ser utilizado para notificações críticas ou que requeiram a atenção imediata do usuário;polite
: indica que a uma região da página foi atualizada, mas não requer a atenção imediata do usuário. É o atributo utilizado com mais frequência.
Também utilizamos o atributo aria-busy
para informar aos leitores de tela que
a região está aguardando uma atualiação. Este atributo só aceita valores booleanos:
true
ou false
.
Se você leu o código acima com atenção, verá que definimos outros atributos:
aria-controls
2 (linha 9) e role
3 (linha 32).
O primeiro indica qual elemento o formulário controla, enquanto o segundo facilita
o acesso à região para pessoas que só podem utilizar o teclado para navegar na página.
Agora, vamos adicionar um pouco de JavaScript para selecionar os dados dos planetas selecionados em nosso formulário:
Perceba que utilizamos a função setTimeout
(linha 27) para simular o acesso à uma API externa.
E para finalizar, adicionaremos um indicador de carregamento utilizando CSS. Sempre
que algum elemento da página (div
, aside
, main
, etc.) tiver um atributo aria-busy
que seja igual a true
, diminuiremos a opacidade do elemento e adicionaremos um
ícone de carregamento sobre o elemento em questão.
Depois de tudo isso, podemos ver o nosso exemplo em ação:
Experimente utilizar um leitor de tela no exemplo que acabamos de construir e veja como os atributos que adicionados ao nosso exemplo fornecem uma boa experiência de uso para usuários com necessidades especiais. Claro que podemos chegar ao mesmo resultado de diversas outras formas, mas é importante sempre levarmos em consideração se a nossa aplicação é acessível.
P.S.: interaja e edite o código deste exemplo no CodePen.