Explore os comportamentos antes de definir a interface.
Guia rápido para designers
Sempre avalie o contexto da aplicação, mesmo com a orientação tendo um padrão. Design de interação documenta a intenção. O funcionamento deve ser verificado na implementação.
Quando usar
Use para informar um endereço de e-mail. Validar o formato não comprova que o endereço existe.
O que desenhar
Mostre rótulo persistente, dica de formato, foco e estados preenchido e com erro.
Como se comporta
A pessoa edita e cola texto normalmente. Em caso de erro, preserve o valor e explique a correção.
O que documentar no Figma
Registre obrigatoriedade, mensagens e ação de Enter. Se aceitar vários endereços, explique como separá-los.
Como revisar
Confira se o objetivo e os estados são claros em telas pequenas e grandes, com ampliação. Verifique os comportamentos documentados na implementação, incluindo teclado e leitor de telas quando aplicáveis.
Orientações completas
Design de Interação
Questionamentos que devem ser feitos ao projetar componentes do tipo Input "email".
Avalie cada orientação conforme o contexto de uso do componente.
Projetando para a "não interação"
- O rótulo permanece visível e explica a finalidade do campo?
- Instruções, obrigatoriedade e limites estão disponíveis antes da entrada?
- Estados vazio, preenchido, inválido, desabilitado e somente leitura são distinguíveis sem depender apenas de cor?
Projetando para uso com mouse
- Clicar no campo ou no rótulo associado posiciona o foco para digitar?
- O foco e os controles associados têm feedback visual perceptível?
Projetando para uso com gestos
- A área de toque permite selecionar o campo e seus controles sem acionamentos acidentais?
- O teclado virtual e a ampliação permitem continuar vendo e editando o campo?
Projetando para uso com teclado
TabeShift + Tabpercorrem os controles na ordem da interface?- É possível editar e selecionar texto com os comandos nativos, sem prender o foco?
Projetando para uso com leitor de telas
- Nome, tipo, obrigatoriedade, instruções e erros são apresentados de forma compreensível?
- O rótulo está associado ao campo e permanece disponível depois de preencher?
Métodos de Interação
O campo usa type="email" e, em dispositivos compatíveis, oferece teclado adequado para e-mail.
Interação com mouse
- Clicar no campo ou no rótulo associado coloca o foco no campo.
- Selecionar, editar, copiar e colar segue o comportamento nativo do campo.
Interação com teclado
Tabmove o foco para o campo;Shift + Tabretorna ao controle anterior.- Digitação insere texto;
setas,Home,Ende comandos de seleção e edição seguem a plataforma. Entersegue a ação de envio definida para o formulário; o campo não cria uma nova linha.
Interação com gestos
- Tocar no campo ou no rótulo permite editar com o teclado virtual.
- A seleção e edição de texto seguem os gestos disponíveis na plataforma.
Interação com teclado (ou gestos) + leitor de telas
- Ao navegar até o campo, o leitor apresenta seu rótulo e tipo, além de estados e instruções associados.
- Erros são associados ao campo e explicam como corrigir a informação; o valor digitado é preservado.
Gherkin
Metodologia BDD (Behavior-Driven Development ou Desenvolvimento Orientado ao Comportamento) com foco em 3 pilares: Histórias de Usuário, Critérios de Aceite e Sintaxes Gherkin (Dado (Given), Quando (When), Então (Then)).
Cenário: Considerando que estou em uma página que contém Input "email"
Navegação por teclado
- QUANDO uso a tecla
Tabpara mover o foco para o campo - O foco que VEJO é fortemente indicado visualmente
- ENTÃO, quando digito, seleciono ou edito o conteúdo com os comandos nativos
- VEJO que o valor do campo é atualizado
- E, quando uso
TabouShift + Tab, VEJO que o foco segue a ordem da página, sem ficar preso no campo
Leitor de telas para desktop
-
QUANDO uso um leitor de tela no computador (NVDA, JAWS, VoiceOver) e uso a tecla
Tabpara mover o foco para o campo, acontece o seguinte:- OUÇO o rótulo e a finalidade do campo.
- OUÇO que o componente é um campo de e-mail.
- OUÇO a obrigatoriedade, as instruções e os erros associados, quando existirem.
- ENTÃO, quando digito ou edito o conteúdo com os comandos nativos
- OUÇO ou percebo que posso editar o campo e que seu valor foi atualizado.
Leitor de telas para dispositivos móveis
-
QUANDO uso um leitor de tela no celular (Talkback, VoiceOver) e deslizo o dedo para focar no campo, acontece o seguinte:
- OUÇO o rótulo e a finalidade do campo.
- OUÇO que o componente é um campo de e-mail.
- OUÇO a obrigatoriedade, as instruções e os erros associados, quando existirem.
- ENTÃO, quando eu toco duas vezes ou uso o gesto adequado para ativar o campo e editar seu conteúdo
- OUÇO ou percebo que posso editar o campo e que seu valor foi atualizado.
Validação da entrada
- QUANDO uma entrada é rejeitada por uma regra de validação informada
- VEJO uma mensagem associada ao campo que explica como corrigir a informação
- E, quando navego até o campo com leitor de telas, OUÇO a indicação de erro e a orientação associada
- ENTÃO, quando volto a editar, VEJO que o valor foi preservado para correção
Formato do e-mail
- QUANDO envio um valor com formato de e-mail inválido
- VEJO ou OUÇO uma orientação para corrigir o formato
- A validação de formato não comprova a existência do endereço
Pontos de atenção
- Usar um rótulo persistente associado ao input. Placeholder é uma dica complementar e não substitui o rótulo.
- Associar instruções e erros ao campo, por exemplo com aria-describedby, e marcar aria-invalid quando houver erro.
- Informar a obrigatoriedade e usar required quando necessário. Não comunicar erros apenas por cor.
- Manter foco visível e garantir contraste e área de interação adequados.
- A validação de formato não comprova que o endereço existe. Aceitar um endereço por padrão; usar multiple apenas se o contexto pedir vários endereços e explicar como separá-los.
Referências
Documentação do campo
Design System
- GOV.UK — Email addresses open_in_new (link externo, abre em uma nova aba) — Padrão específico para e-mail, com type="email", autocomplete e mensagens de erro.
- GOV.UK — Text input open_in_new (link externo, abre em uma nova aba) — Componente de base utilizado pelo padrão de e-mail.
- Bootstrap — Form controls open_in_new (link externo, abre em uma nova aba) — Exemplo de campo type="email".
- Carbon — Text input open_in_new (link externo, abre em uma nova aba) — Orientações gerais de campos de texto, complementares ao tipo e-mail.