Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. Form Design
Webdesign

Atualize Seus Formulários com Validação Via CSS3 e HTML5

by
Difficulty:BeginnerLength:LongLanguages:

Portuguese (Português) translation by Hugo Carlos Borges Pinto (you can also view the original English article)

Vamos ver como criar um formulário funcional que valida os dados do usuário, no lado do cliente. Com isso feito, vamos cobrir embelezamento do formulário usando CSS, inclusive CSS3!

Passo 1: Conceitualização de Funcionalidade

Primeiro nós queremos conceituar como nosso formulário vai se parecer e como ele vai funcinoar. Para este exemplo, vamos criar um formulário de contato simples que pede as seguintes informações ao usuário:

  • Nome
  • Email
  • Website
  • Mensagem

Nós queremos nos assegurar que o usuário está digitando as informações corretamente. Para alcançar isto, nós vamos usar as novas técnicas de validação do HTML5 do lado do cliente. E os usuários que não possuiem HTML5? Você pode usar simplesmente uma validação no lado do servidor, mas isso está além do escopo deste artigo.

Passo 2: Conceituação do Formulário

Vamos ter uma idéia de como nós queremos que nosso formulário se pareça criando um mockup.

Como você pode ver, os seguintes elementos integram nosso formulário:

  • Título do Formulário Notificação de Campos Obrigatórios
  • Nomes do Formulário
  • Dados do Formulário Texto Temporário
  • Dicas de Campos do Formulário
  • Botão de Enviar

Agora que especificamos quais elementos compõe nosso formulário, nós podemos criar a marcação HTML.

Passo 3: Código HTML Básico

Vamos criar nossa marcação HTML básica do conceito de formulário que criamos.

Até este ponto, nosso arquivo HTML ainda vai aparecer em branco no navegador. Este é simplesmente o código básico para uma página HTML5.

Passo 4: Formulário HTML

Vamos criar o formulário HTML (nós vamos deixar o método de ação em branco por enquanto, já que a validação do lado do servidor não será incluída neste tutorial):

Passo 5: Elementos do Formulário HTML

Para manter o conteúdo de nosso formulário organizado e estruturado, nós vamos envolver nossos elementos de formulário (label, input, etc) em uma lista. Então vamos começar criando o cabeçalho e o primeiro elemento de entrada do formulário:

Dicas de Formulário

Como vimos no nosso mockup, nós vamos ter dicas de formatação para os campos "email" e "website". Então, nós vamos adicionar nossas dicas dentro do campo input onde necessário, e dar a eles uma classe para que nós possamos estilizar depois.

Elementos de Input Restantes

Vamos seguir em frente e criar nossos elementos de formulários restantes, lembrando de envolver cada seção em um item list.

Passo 6: Adicionando o Atributo Temporário

Um dos primeiros melhoramentos que o HTML5 traz para formulários na web (um com o qual você provavelmente já está acostumado) é a habilidade de determinar textos temporários. Textos temporários são mostrados quando o campo de entrada está ou vazio ou fora de foco.

Vamos adicionar um atributo placeholder no nosso elemento input. Isso vai ajudar o usuário a entender o que eles devem digitar em cada campo.

Dica Rápida: Estilize seu Texto placeholder

Aqui vai uma dica rápida, se você quer estilizar seu texto temporário, existem alguns prefixos de navegadores para lhe ajudar:

Suporte para o atributo placeholder está bem estabelecido em navegadores modernos (exceto o IE9, desculpe). Se você realmente precisa ter esse suporte em todos os nvageadores, existem algumas soluções JavaScript que você deve conferir.

Passo 7: CSS Básico

Vamos adicionar um CSS básico para dar ao nosso formulário alguma estrutura. Eu vou lhes guiar pelas regras:

Remova o Estilo :focus

O Webkit adiciona automaticamente alguns estilos em elementos de entrada quando eles estão em foco. Como nós vamos adicionar nossos próprios estilos, nós queremos sobrescrever esses padrões:

Estilo de Tipografia

Vamos adicionar alguns estilos tipográficos aos nossos elementos de formulário:

Estilos de Lista

Vamos estilizar nossos elementos de lista para dar ao nosso formulário alguma estrutura:

Também, vamos adicionar uma leve borda no topo e fundo da seção do formulário. Nós podemos conseguir isso utilizando os seletores :first-child e :last-child. Eles selecionam, como o nome indica, o primeiro e último elementos na lista <ul>.

Isso adiciona algumas seções visuais úteis ao nosso formulário. Tenha em mente que esses seletores CSS não são suportados em navegadores antigos. Como isto não é uma funcionalidade vital, nós vamos recompensar aqueles que usam navegadores modernos.

Cabeçalho do Formulário

Vamos estilizar a seção do cabeçalho do nosso formulário. Isso inclue a tag heading e a notificação que informa ao usuário que o asterisco (*) indica um campo requerido.

Elementos de Entrada do Formulário

Vamos estilizar todos os nossos elementos principais do formulário, aqueles utilizados para coletar informações do usuário.

Agora, vamos adicionar alguns estilos CSS extras. Alguns desses são estilos CSS3 que recompensam usuários que usam navegadores modernos.

Passo 8: Adicionando um Pouco de Interatividade com CSS3

Vamos adicionar um pouco de interatividade. Nós vamos fazer com que o campo que esteja selecionado seja expandido adicionando algum padding.

Agora, para navegadores que suportam, vamos fazer a expansão do campo com uma transição suave usanod CSS3.

Passo 9: O Atributo required no HTML5

Agora é a hora que todos estávamos esperando: ferramentas de manipulação de formulário do HTML5.

Adicionando o atributo required a qualquer elemento input/textarea vai dizer ao navegador que o valor é requerido antes que o formulário possa ser enviado. Então, um formulário não pode ser enviado se um campo required não foi preenchido.

Vamos em frente adicionar o atributo required a todos os nossos elementos de formulário (porque queremos que todos eles sejam preenchidos).

Passo 10: Estilizando Campos required

Você provavelmente vai notar que, falando visualmente, nada aconteceu ao adicionar o atributo required. Nós vamos estilizar os atributos obrigatórios usando CSS. Para este exemplo, nós vamos adicionar um asterisco vermelho como uma imagem de fundo em cada campo requerido. Para alcançar isto, vamos primeiro adicionar um pouco de padding no lado direito do nosso input onde a imagem de fundo vai estar (isso vai prevenir que o texto seja sobreposto se a entrada do campo é uma frase longa):

Agora nós vamos usar o pseudo seletor CSS :required para selecionar todos os elementos de formulário com este atributo. Eu fiz um asterisco simples de 16x16 pixels no Photoshop que vai servir como um indicador visual de um campo requerido.

O que acontece quando o formulário é enviado?

Neste momento, navegadores diferentes fazem coisas diferentes quando um forumlário utilizando elementos HTML5 é enviado. Quando o formulário é enviado, a maioria dos navegadores vai evitar que o formulário seja enviado e vai mostrar uma "dica" para o usuário, fazendo com que o primeiro campo requerido e que esteja em branco seja marcado. Estilo visual e suporte para estes 'campos bolha' é bastante amplo. Tomara que estes comportamentos sejam padronizados no futuro.

Você pode conferir o suporte atual de navegadores ao atributo required no quirksmode.

Dica Rápida:

Você pode estilizar a mensagem em bolha um pouco no Webkit usando o seguinte:

Passo 11: Entendendo os Novos Atributos type do HTML5 e Validação no Lado do Cliente

Validação HTML5 funciona de acordo com o atributo type que é determinado dentro de um campo de formulário. Por anos o HTML somente suportou alguns tipos de atributos type, como type="text" mas com o HTML5 existem diversos novos tipos de entrada, incluindo email e url que nós vamos usar em nosso formulário.

Combinando nosso atributo type de entrada com o novo atributo required, o navegador pode agora validar as informações do formulário no lado do cliente. Se um navegador de usuário não suporta os novos tipos do atributo type, ele simplesmente vai recair para o padrão type="text". Isto na verdade é sensacional. Você essencialmente tem compatibilidade retroativa com todos os navegadores da Terra!

E se o navegador suporta os novos atributos type? Para navegadores de desktop não existem diferenças visuais (a não ser que seja especificado por regras customizadas de CSS). Um campo type="text" parece o mesmo que um campo type="email". Entretanto, para navegadores de dispositivos móveis, há uma diferença na interface do usuário.

Um Exemplo: O iPhone

O iPhone da Apple detecta os tipos de formulário e dinamicamente muda o teclado na tela disponibilizando caracteres relativos ao contexto. Por exemplo, todos os campos de email requerem os seguintes símbolos: "@" e ".". Então o iPhone mostra esses caracteres quando o tipo de entrada é especificado para email.

Passo 12: Alterando os Atributos type

Nossos campos de formulário já estão com o padrão type="text". Mas agora nós queremos mudar o tipo do atributo para nosso email e website para corresponder ao tipo previsto no HTML5.

Passo 13: Validação HTML5

Como mencionado antes, a validação HTML5 é baseada no atributo type e é ativada por padrão. Não há necessidade de markup específico para ativar a validação. Se você deseja desligar a validação, você pode usar o atributo novalidate desta maneira:

Campo de Nome

Vamos olhar para nosso primeiro campo que pede o nome do usuário. Como descrito anteriormente, nós adicionamos o atributo type="text" e o atributo required. Isto informa ao navegador que este campo é obrigatório e que ele deve validar o campo como texto apenas. Enquanto o usuário digitar ao menos um caractere no campo, ele sará validado.

Agora nós vamos criar nosso próprio CSS para estilizar os campos de entrada que são considerados válidos e inválidos pelo navegador. Se você lembrar, nós usamos o :required no nosso CSS para estilizar os elementos de entrada com um atributo required. Agora, nós podemos estilizar nossos campos obrigatórios que são ou válidos ou inválidos adicionando :valid ou :invalid à nossa regra CSS.

Primeiro, vamos estilizar os campos que são inválidos. Para este exemplo, nós apenas queremos estilizar o formulário como inválido quando está em foco. Nós vamos adicionar uma borda vermelha, sombra vermelha e um ícone vermelho criado no Photoshop para indicar o campo inválido.

Agora, vamos criar as regras que indicam que o campo é válido. Nós vamos adicionar uma borda verde, uma sombra verde e um ícone verde de concluído criado no Photoshop. Isso vai ser aplicado a todos os campos válidos estejam eles em foco ou não.

Agora quando você foca em um campo do formulário, o estilo vermelho de inválido é mostrado. Assim que um único caractere foi digitado no campo, ele é validado e o estilo CSS muda para indicar o fato.

Campos de Email e URL

Nossos estilos CSS e regras de validação já são aplicadas ao campo de email porque nós determinamos os atributos type e required anteriormente.

Passo 14: Introduzindo o Atributo HTML5 pattern

Utilizando o atributo type="email" como exemplo, parece que a maioria dos navegadores valida aquele campo como *@* (qualquer caractere + o símbolo "@" + qualquer caractere). Isto obviamente não é muito limitante mas evita que os usuários digitem espaços ou valores que são totalmente incorretos.

No exemplo do atributo type="url", parece que o mínimo requerido para a maioria dos navegadores é qualquer caractere seguido de dois pontos. Então, se você digitar "h:" então o campo será validado. Isto não é muito útil mas evita que usuários digitem informações irrelevantes, como email ou endereço residencial. Agora, você pode ser mais específico com os valores de entrada na validação no lado do servidor; entretando, nós vamos ver como fazer isto no HTML5.

O Atributo pattern

O atributo pattern aceita uma expressão regular em JavaScript. Esta expressão é utilizada no lugar da expressão padrão do navegador para validar o valor do campo. Então, nosso HTML agora está assim:

Agora nosso campo vai aceitar apenas valores que comecem com "http://" ou "https://" e um caractere adicional. Estas expressões regulares podem parecer confusas a princípio, mas uma vez que você dedica tempo para aprendê-las, seus formulários vão se abrir para um novo mundo.

Passo 15: Dicas em Campos do Formulário (CSS)

Agora vamos estilizar as dicas que informam ao usuário o formato que eles devem usar ao entrar as informações.

Nós colocamos display:none porque nós estamos apenas mostrando as dicas quando o usuário focar no campo de entrada. Nós também colocamos nossas tooltips para ficar com a cor vermelha padrão para entrada inválida, porque elas sempre serão consideradas inválidas até a informação correta ser digitada.

Utilizando o Seletor ::before

Agora nós vamos adicionar um pequeno triângulo às nossa caixas de dicas que ajudam a direcionar e guiar os olhos. Isso pode ser feito utilizando-se imagens, mas no nosso caso nós vamos fazer isto utilizando puramente CSS.

Por ser um elemento puramente de apresentação que não é vital para a funcionalidade da página, nós vamos adicionar um pequeno triângulo que aponta para a esquerda usando o pseudo seletor ::before. Nós podemos fazer isso utilizando uma das formas geométricas UNICODE.

Normalmente nós utilizaríamos o formato HTML Unicode para mostrar estas formas no nosso HTML (como mostrado na imagem acima). Contudo, porque nós vamos utilizar o seletor CSS ::before, nós temos que usar o código correspondente ao triângulo devidamente escapado quando usamos a regra content:"". Então nós apenas utilizamos posicionamento para colocá-lo onde queremos.

Usando o Seletor Adjacente +

Finalmente, nós vamos utilizar o seletor adjacente do CSS para mostrar e esconder as dicas de campos de formulário. O seletor adjacente (x + y) seleciona o elemento que é imediatamente precedido pelo primeiro elemento. Como nossas dicas vem logo após os campos de entrada no nosso HTML, nós podemos utilizar este seletor para mostrar/esconder as dicas.

Como você pode ver pelo CSS, nós também colocamos as dicas para mudar de cor de acordo com a borda do campo de entrada de acordo com a validade/invalidade dos valores inseridos.

Passo 16: Relaxe e Admire Seu Lindo Formulário HTML5

Vá em frente e dê uma olhada no seu produto final!

Conclusão

Como você pode ver, as novas ferramentas de formulário do HTML5 são bem interessantes! Tudo é compatível retroativamente então incorporar essas ferramentas no seu website não vai quebrar nada.

Validação via HTML5 está chegando próximo de substituir validação no lado do cliente ao ajudar usuários a preencher os formulários corretamente. Contudo, a validação HTML5 ainda não substitui plenamente a validação no lado do servidor. Por enquanto, é melhor utilizar ambos os métodos ao lidar informação submetida pelo usuário. Obrigado por ler!

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.