<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Lucas Henrique Faria</title>
    <description>The latest articles on Forem by Lucas Henrique Faria (@luskafaria).</description>
    <link>https://forem.com/luskafaria</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F398595%2F654f4c51-423c-4af8-bbfa-c3c77bdacd29.png</url>
      <title>Forem: Lucas Henrique Faria</title>
      <link>https://forem.com/luskafaria</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/luskafaria"/>
    <language>en</language>
    <item>
      <title>Notas sobre design de formulários</title>
      <dc:creator>Lucas Henrique Faria</dc:creator>
      <pubDate>Mon, 29 Jun 2020 18:36:44 +0000</pubDate>
      <link>https://forem.com/luskafaria/notas-sobre-design-de-formularios-4bj2</link>
      <guid>https://forem.com/luskafaria/notas-sobre-design-de-formularios-4bj2</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;TL / DR&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mantenha o sentido de leitura em uma direção;&lt;/li&gt;
&lt;li&gt;Delimite visualmente os campos de &lt;em&gt;input&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Indique visualmente quando o usuário interagir com um dos campos de &lt;em&gt;input&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Utilize a tag &lt;em&gt;label&lt;/em&gt; para etiquetar os campos de &lt;em&gt;input&lt;/em&gt; e facilitar o trabalho dos leitores de tela;&lt;/li&gt;
&lt;li&gt;Deixe exemplos sempre visíveis (&lt;strong&gt;(xx) x xxxx-xxxx&lt;/strong&gt;)  quando o preenchimento incorreto do campo de &lt;em&gt;input&lt;/em&gt; puder ocasionar erros;&lt;/li&gt;
&lt;li&gt;Indique visualmente quando houver erro em algum dos campos de &lt;em&gt;input&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Exiba as mensagens de erro preferencialmente próximas aos campos aos quais elas estão relacionadas;&lt;/li&gt;
&lt;li&gt;Utilize &lt;em&gt;tooltips&lt;/em&gt; para exibir informações importantes;&lt;/li&gt;
&lt;li&gt;Utilize o espaçamento (&lt;em&gt;paddings&lt;/em&gt; e &lt;em&gt;margins&lt;/em&gt;) para dispor as informações de forma coerente e esteticamente agradável;&lt;/li&gt;
&lt;li&gt;Se seu formulário tiver vários campos, considere dividir o processo de preenchimento em diferentes etapas;&lt;/li&gt;
&lt;li&gt;Se não for possível dividir o formulário em etapas, utilize o espaçamento para criar diferentes seções e organizar as informações por blocos;&lt;/li&gt;
&lt;li&gt;Minimalismo desnecessário só irá te gerar retrabalho.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Oi, eu sou o Gok...err...&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Fala, dev! Tudo em 'riba'?&lt;/p&gt;

&lt;p&gt;Neste primeiríssimo artigo eu quero compartilhar  com você algumas práticas que utilizo no dia a dia para criar formulários e desenvolver interfaces no geral.   &lt;/p&gt;

&lt;p&gt;Então, bora lá!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Estrutura&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Preencher formulários é algo INCÔMODO. &lt;/p&gt;

&lt;p&gt;Ninguém acorda de manhã e pensa:  &lt;em&gt;"_Ah! Que dia lindo! Vou ligar meu computador e preencher alguns formulários."&lt;/em&gt;. Por isso, formulários precisam ser fáceis de se ler. &lt;/p&gt;

&lt;p&gt;Sempre que possível, mantenha o sentido de leitura em apenas uma direção; isso  melhora a experiência do usuário, porque as informações ficarão dispostas de uma forma mais 'intuitiva'. &lt;/p&gt;

&lt;p&gt;Na imagem abaixo temos um exemplo simples, mas imagine um cenário mais complexo, em que seja necessário que o usuário leia e/ou preencha diversos campos, ( &lt;em&gt;checkboxes, listas,  mensagens de erro, tooltips&lt;/em&gt;). Quanto mais informações forem apresentadas em tela, maior deverá ser o cuidado com como elas estarão dispostas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gdCTQw1V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ccyzojmbb5linz9ljpfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gdCTQw1V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ccyzojmbb5linz9ljpfg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Visibilidade&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Essa vai ser polêmica!&lt;/p&gt;

&lt;p&gt;Indicar que existe um campo de &lt;em&gt;input&lt;/em&gt; na interface com um &lt;em&gt;border-bottom&lt;/em&gt;, pode ser &lt;em&gt;cool&lt;/em&gt;, mas talvez não seja  a melhor decisão do ponto de vista do usuário.&lt;/p&gt;

&lt;p&gt;Veja bem, alguns públicos não estão tão familiarizados com a 'cara da internet'. Então, essa linha minimalista que você chama de &lt;em&gt;input&lt;/em&gt;, para um usuário menos assíduo, pode ser apenas... bem... uma linha.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Na dúvida, seja óbvio!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deixe claro que existe um campo de preenchimento em seu formulário. Isso irá poupar alguns cliques de usuários menos habituados à web. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BhZy28xk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/twpj0jtp3r2mll9h4d8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BhZy28xk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/twpj0jtp3r2mll9h4d8v.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Interatividade&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Lembra que eu disse que preencher formulários é uma tarefa incômoda?&lt;/p&gt;

&lt;p&gt;Os efeitos de &lt;em&gt;hover, selected, checked&lt;/em&gt;, são uma boa forma de deixas as coisas um pouco mais interessantes e indicar que a página está 'viva' e respondendo às ações do usuário.&lt;/p&gt;

&lt;p&gt;É uma boa prática acrescentar efeitos que indicam interação, tanto nos botões quanto nos campos de &lt;em&gt;input&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Esse tipo de recurso também pode ajudar o usuário a se localizar mais rapidamente. Com isso, fica  fácil perceber se algum campo passou despercebido ou não durante o preenchimento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LMAop0pH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdgdc1b28c1v12sfw2qo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LMAop0pH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdgdc1b28c1v12sfw2qo.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Utilize a tag *label&lt;/strong&gt;*
&lt;/h3&gt;

&lt;p&gt;A tag  foi criada especificamente para etiquetar coisas no seu código HTML.&lt;/p&gt;

&lt;p&gt;"_&lt;em&gt;Duh! _Mas por que eu preciso etiquetar meus campos de input?"&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Porque isso melhora a experiência de quem utiliza &lt;a href="https://pt.wikipedia.org/wiki/Leitor_de_tela"&gt;leitores de tela&lt;/a&gt; e, também, facilita o clique em elementos muito pequenos, já que o evento de clique sobre a &lt;em&gt;label&lt;/em&gt; será redirecionado para o elemento ao qual ela se refere.&lt;/p&gt;

&lt;p&gt;Outro ponto a favor das &lt;em&gt;labels&lt;/em&gt;: imagine que você está preenchendo um campo de &lt;em&gt;input&lt;/em&gt; sem &lt;em&gt;label&lt;/em&gt; e precisa parar o preenchimento para atender o telefone. Agora você finaliza a ligação e quer voltar a preencher o formulário, mas... &lt;em&gt;que campo era esse mesmo?&lt;/em&gt; Nesse sentido, as &lt;em&gt;labels&lt;/em&gt; também podem poupar alguns cliques de quem não depende de leitores de tela.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;label &amp;gt; placeholder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H_o0egB2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ftu3x69oa6qbt9iv1lda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H_o0egB2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ftu3x69oa6qbt9iv1lda.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Preenchimento dos campos&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Geralmente se utiliza a propriedade &lt;em&gt;placeholder&lt;/em&gt; da &lt;em&gt;tag input&lt;/em&gt; para indicar como o usuário deverá preencher determinado campo, mas existe um problema aí: o &lt;em&gt;placeholder&lt;/em&gt; desaparece e isso abre margem para erros e ou cliques desnecessários e é exatamente isso que queremos evitar.&lt;/p&gt;

&lt;p&gt;Quando for preciso que o usuário siga um padrão para preencher determinado campo, é uma boa prática manter visível um 'exemplo' de como esse preenchimento deverá ser feito.&lt;/p&gt;

&lt;p&gt;Nesses casos eu costumo adotar o seguinte protocolo: &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Placeholder&lt;/em&gt;: campos que não exigem um formato específico de preenchimento; ex: nome, sobrenome, e-mail.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Span&lt;/em&gt;: campos que exigem um formato específico; ex: senhas, telefones, CPF, CNPJ, CEP etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_CN0-UoN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2nrua89r95j99hrp9xbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_CN0-UoN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2nrua89r95j99hrp9xbk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Mensagens de erro&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Esta dica é bem rápida.&lt;br&gt;
Quando houver mensagens de erro, indique de forma explicita a qual campo  a mensagem se refere.&lt;/p&gt;

&lt;p&gt;Uma forma bastante comum de se fazer isso é exibir o erro logo após o &lt;em&gt;input&lt;/em&gt; e adicionar alguma estilização que indique que esse campo apresenta algum problema de preenchimento.&lt;/p&gt;

&lt;p&gt;Animações também são um recurso bem-vindo nesses casos. :D&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sYIL4rYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/04ae4xxwa2ihd1ol3geq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sYIL4rYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/04ae4xxwa2ihd1ol3geq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Informações importantes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Alguns campos exigem que o usuário siga orientações específicas para realizar o preenchimento corretamente.&lt;/p&gt;

&lt;p&gt;Nos casos em que for necessário exibir mensagens muito longas, opte por adicionar &lt;em&gt;&lt;a href="https://www.w3schools.com/howto/howto_css_tooltip.asp"&gt;tooltips&lt;/a&gt;&lt;/em&gt; ao layout.&lt;/p&gt;

&lt;p&gt;O mais importante é, quando o recurso de &lt;em&gt;tooltip&lt;/em&gt; se fizer necessário, deixar claro que esse item da interface é interativo. Então, lance mão de recursos como animações, ícones divertidos e cores chamativas para atrair a atenção do usuário.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SuTDMrx6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kffy55u5tkonbrypelu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SuTDMrx6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kffy55u5tkonbrypelu3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Espaçamento&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Espaçamento é uma questão estética e um assunto totalmente a parte se pensarmos em como isso pode afetar o design do formulário e da página como um todo.&lt;/p&gt;

&lt;p&gt;Para não errar, imagine que seu formulário é como um texto e que o espaçamento, além de facilitar a leitura, também divide as informações em blocos. &lt;/p&gt;

&lt;p&gt;Note que na imagem ao lado a estética do primeiro caso passa uma sensação de desorganização, enquanto o segundo tem um aspecto mais agradável.&lt;/p&gt;

&lt;p&gt;Veja que eu adicionei espaçamento entre o título e entre os campos de &lt;em&gt;input&lt;/em&gt; e também adicionei uma folga entre as bordas do campo de &lt;em&gt;input&lt;/em&gt; e a informação digitada pelo usuário.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--McKWNE3y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o04e55xqajong3p2sqab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--McKWNE3y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o04e55xqajong3p2sqab.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Poupando espaço&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Se seu formulário for muito grande, tente dividi-lo em seções e exibir uma seção por vez.&lt;/p&gt;

&lt;p&gt;Agrupe os campos que se inter-relacionam e crie um menu de navegação entre eles.&lt;/p&gt;

&lt;p&gt;Lembre-se de manter o estado (manter as informações preenchidas) enquanto o usuário navega pela aplicação. &lt;/p&gt;

&lt;p&gt;Não se esqueça: PREENCHER FORMULÁRIO É UM SACO.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3T_D0DYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wb6jwatcj0emps26efqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3T_D0DYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wb6jwatcj0emps26efqk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Formulários de seção única&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Mas se você não quer ou não pode dividir seu formulário em diferentes seções, utilize o espaçamento para indicar quais campos se inter-relacionam. &lt;/p&gt;

&lt;p&gt;Novamente, seu formulário é como um texto e esse tipo de espaçamento é análogo a um parágrafo, ou seja, tem a função de separar as informações em blocos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RtwyiDQO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yiukbegflytwd0e05gnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RtwyiDQO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yiukbegflytwd0e05gnm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Muito obrigado se você leu esse texto até aqui. Essa foi minha primeira postagem por essas bandas.&lt;/p&gt;

&lt;p&gt;Fique à vontade para dizer o que achou dessas dicas na seção de comentários.&lt;/p&gt;

&lt;p&gt;Por hoje é só! :D&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ux</category>
      <category>frontend</category>
      <category>firstyearincode</category>
    </item>
  </channel>
</rss>
