Este codelab mostra como criar um formulário de inscrição seguro, acessível e fácil de usar.
Etapa 1: use um HTML significativo
Nesta etapa, você aprenderá a usar elementos de formulário para aproveitar ao máximo os recursos integrados do navegador.
- Clique em Remixar para editar para tornar o projeto editável.
Confira o HTML do seu formulário em index.html
. Você verá que há entradas para nome, e-mail
e senha. Cada um está em uma seção e cada um tem um rótulo. O botão Sign up é... um <button>
!
Mais adiante neste codelab, você vai aprender os poderes especiais de todos esses elementos.
<form action="#" method="post">
<h1>Sign up</h1>
<section>
<label>Full name</label>
<input>
</section>
<section>
<label>Email</label>
<input>
</section>
<section>
<label>Password</label>
<input>
</section>
<button id="sign-up">Sign up</button>
</form>
Clique em Ver aplicativo para visualizar seu formulário de inscrição. Isso mostra a aparência de um formulário sem um CSS além do estilos padrão de navegador.
- Os estilos padrão parecem corretos? O que você mudaria para melhorar o formulário?
- Os estilos padrão funcionam corretamente? Quais problemas podem ser encontrados ao usar seu formulário do modo como ele está? O quê? no celular? E para leitores de tela ou outras tecnologias assistivas?
- Quem são seus usuários e quais dispositivos e navegadores você está segmentando?
Testar o formulário
É possível adquirir muito hardware e configurar device lab, mas existem maneiras mais baratas e simples de testar seu formulário em vários navegadores, plataformas e dispositivos:
- Usar o Modo dispositivo do Chrome DevTools para simular dispositivos móveis.
- Envie o URL do computador para o smartphone.
- Usar um serviço como o BrowserStack para testar em um intervalo de dispositivos e navegadores.
- Teste o formulário usando uma ferramenta de leitura de tela, como a extensão ChromeVox do Chrome.
Clique em Ver aplicativo para visualizar seu formulário de inscrição.
- Teste seu formulário em diferentes dispositivos usando o Modo dispositivo do Chrome DevTools.
- Agora abra o formulário em um smartphone ou em outro dispositivo real. Quais diferenças você percebe?
Etapa 2: adicionar CSS para que o formulário funcione melhor
Clique em Exibir código-fonte para retornar ao código-fonte.
Não há nada de errado com o HTML até agora, mas você precisa garantir que seu formulário funcione bem para uma de usuários em dispositivos móveis e computadores.
Nesta etapa, você adicionará CSS para facilitar o uso do formulário.
Copie e cole todo o CSS a seguir no arquivo css/main.css
:
Clique em Ver aplicativo para conferir seu formulário de inscrição estilizado. Em seguida, clique em Ver código-fonte para retornar à
css/main.css
Este CSS funciona com vários navegadores e tamanhos de tela?
Ajuste
padding
,margin
efont-size
de acordo com seus dispositivos de teste.O CSS prioriza dispositivos móveis. Consultas de mídia são usados para aplicar regras CSS para janelas de visualização com pelo menos
400px
de largura e novamente para janelas de visualização com pelo menos500px
de largura. Esses são os pontos de interrupção? adequadas? Como você deve escolher pontos de interrupção para formulários?
Etapa 3: adicionar atributos para ajudar os usuários a inserir dados
Nesta etapa, você vai adicionar atributos aos elementos de entrada para permitir que o navegador armazene e preencha automaticamente. valores de campo de formulário e avisar sobre campos com dados ausentes ou inválidos.
Atualize o arquivo index.html
para que o código do formulário fique assim:
<form action="#" method="post">
<h1>Sign up</h1>
<section>
<label for="name">Full name</label>
<input id="name" name="name" autocomplete="name"
pattern="[\p{L}\.\- ]+" required>
</section>
<section>
<label for="email">Email</label>
<input id="email" name="email" autocomplete="username"
type="email" required>
</section>
<section>
<label for="password">Password</label>
<input id="password" name="password" autocomplete="new-password"
type="password" minlength="8" required>
</section>
<button id="sign-up">Sign up</button>
</form>
Os valores type
fazem muitas coisas:
* type="password"
oculta o texto conforme ele é inserido e ativa a
gerenciador de senhas para sugerir uma senha forte.
* type="email"
oferece validação básica e garante que os usuários de dispositivos móveis recebam um teclado adequado. Testar
Clique em Ver app e no marcador E-mail. O que acontece? O foco vai para o e-mail
entrada porque o marcador tem um valor for
que corresponde ao id
da entrada do e-mail. Os outros rótulos e
funcionam da mesma forma. Os leitores de tela também anunciam o texto do rótulo quando o rótulo
entrada associada) recebe o foco. Tente fazer isso usando a extensão ChromeVox.
Tente enviar o formulário com um campo vazio. O navegador não enviará o formulário e solicitará
completar os dados ausentes e definir o foco. Isso ocorre porque você adicionou o atributo require
a todas as
de entrada. Agora tente enviar com uma senha que tenha menos de oito caracteres. O navegador avisará que
a senha não é longa o suficiente e define o foco na entrada de senha devido ao minlength="8"
. O mesmo funciona para pattern
(usado para a entrada de nome) e outros
restrições de validação.
O navegador faz tudo isso automaticamente, sem precisar de nenhum código extra.
Usar o valor name
de autocomplete
para a entrada Nome completo faz sentido, mas e quanto ao
outras entradas?
* autocomplete="username"
na entrada E-mail significa que o gerenciador de senhas do navegador armazenará
o endereço de e-mail como "name" para esse usuário (o nome de usuário!) seguir a senha.
* autocomplete="new-password"
para Password é uma dica para o gerenciador de senhas de que ela deve
oferecer para armazenar esse valor como a senha do site atual. Em seguida, você pode usar
autocomplete="current-password"
para ativar o preenchimento automático em um formulário de login (esse é
formulário de inscrição).
Etapa 4: ajudar os usuários a inserir senhas seguras
Com o formulário como está, você notou algo de errado com a senha inserida?
Há dois problemas: * Não há como saber se há restrições no valor da senha. * Você não consegue ver a senha para verificar se acertou.
Não deixe os usuários adivinharem.
Atualize a seção de senha do index.html
com o seguinte código:
<section>
<label for="password">Password</label>
<button id="toggle-password" type="button" aria-label="Show password as plain text.
Warning: this will display your password on the screen.">Show password</button>
<input id="password" name="password" type="password" autocomplete="new-password"
minlength="8" aria-describedby="password-constraints" required>
<div id="password-constraints">Eight or more characters.</div>
</section>
Isso adiciona novos recursos para ajudar os usuários a inserir senhas:
- Um botão (na verdade, apenas texto) para alternar a exibição da senha. O a funcionalidade do botão será adicionada com JavaScript.)
- Um atributo
aria-label
para o botão de ativação de senha. - Um atributo
aria-describedby
para a entrada de senha. Leitores de tela ler o texto do rótulo, o tipo de entrada (senha) e a descrição.
Para ativar o botão de alternância de senhas e mostrar aos usuários informações sobre restrições de senha, copie todo o JavaScript abaixo e cole no seu arquivo js/main.js
.
O CSS já está em vigor desde a etapa 2. Confira como funciona o botão de alternância de senhas estilizada e posicionada.
Um icon funcionaria melhor do que um texto ativar ou desativar a exibição de senha? Teste o Teste de usabilidade com desconto com um pequeno grupo de amigos ou colegas.
Para saber como os leitores de tela funcionam com formulários, instale a extensão ChromeVox e navegue pelo formulário. Você poderia preencher o formulário usando apenas o ChromeVox? Se não, o que você mudaria?
Confira como seu formulário vai ficar neste momento:
Indo mais longe
Este codelab não abrange vários recursos importantes:
Procurando senhas comprometidas. Nunca permita senhas comprometidas. Você pode (e deve) usar um serviço de verificação de senhas para detectar senhas comprometidas. É possível usar um serviço atual ou executar um nos seus servidores. Faça o teste! Adicionar senha verificando seu formulário.
Link para seus Termos de Serviço e documentos da Política de Privacidade: deixe claro para os usuários como você proteger os dados.
Estilo e branding: verifique se eles combinam com o restante do site. Ao inserir nomes e endereços e ao efetuar pagamentos, os usuários precisam se sentir à vontade, confiantes de que ainda estão no lugar certo.
Análise e monitoramento de usuários reais: permitem que o desempenho e a usabilidade do design de seu formulário sejam testados e monitorados para usuários reais.