sexta-feira, 10 de outubro de 2014

Cores na Web (HTML E CSS)

As cores da web são formadas por três pares de números hexadecimais, ou seja, números de 0 a 9 e letras de A a F.
As cores na web usam o conceito de RGB, portanto, cada par representa um nivelamento de cor. Esses hexadecimais são definidos por tralha inicial (ou em inglês, sharp - #). A fusão das cores compõe outras cores, indo do mais escuro (0) ao mais claro (F).

Tabela Referencial
 RGB
VermelhoVerdeAzul
#000000

Sabendo que podemos fazer qualquer combinação, usar 6 hexadecimais nos dá uma gama de mais de 16 milhões de cores.

Além dos hexadecimais, podemos usar cores já pré-definidas utilizando seus nomes. Veja a tabela:

CorNomeHexadecimalCorNomeHexadecimal
 Black#000000 Green#008000
 Silver#C0C0C0 Lime#00FF00
 Gray#808080 Olive#808000
 White#FFFFFF Yellow#FFFF00
 Maroon#800000 Navy#000080
 Red#FF0000 Blue#0000FF
 Purple#800080 Teal#008080
 Fuchsia#FF00FF Aqua#00FFFF





Considerações importantes


Desde o surgimento de folhas de estilo, o uso de cores especificadas por atributos HTML como bgcolor ou color é extremamente desencorajado pelo W3C.

Outra recomendação do W3C é que não podemos usar combinações que causem problemas à pessoas com dificuldades em distingüir cores.

Se for usar uma imagem ou cor de fundo, certifique-se de modificar as cores do texto também.

Cores especificadas em tags têm aparência diferente em plataformas diferentes (exemplo: Windows, Mac, Monitor LCD e CRT). Portanto, não podemos confiar inteiramente neste efeito. No futuro, suporte a modelos de cores SRGB juntamente com perfis de cores ICC deverão acabar com este problema.

domingo, 21 de setembro de 2014

Validação de formulário com HTML5



HTML5
HTML5 evoluiu bastante e tem uma série de novidades entre elementos e atributos para formulários. Nesse artigo mostro um pouco sobre validação dos campos de um formulário. Acredito que em um futuro próximo os desenvolvedores não precisaram escrever o código de validação de formulário em JavaScript, por exemplo, já que os navegadores serão capazes de fazer tudo isso para nós.

Atributo required

Utilizamos esse atributo para informar ao navegador que um elemento do formulário é de preenchimento obrigatório, ou seja, o usuário não consegue enviar o formulário se não preencher o campo com o atributo required. Seu uso é exclusivo com os elementos input, select e textarea.
Uma mensagem é informada ao usuário em uma tentativa de envio de formulário sem o preenchimento de um campo com required. Esse atributo apenas verifica se o campo foi preenchido ou não. Quero dizer que, qualquer caractere será aceito.
view plaincopy to clipboardprint?
  1. <form method="post" action=""> 
  2. <label for="nome">Nome: </label><input id="nome" type=text required name=nome> 
  3. <input type=submit value="OK"> 
  4. </form> 
Abaixo mostro as mensagens de alerta nos seguintes navegadores: Google Chrome, Firefox e Opera. Perceba que cada fabricante estiliza a mensagem de forma diferente.
mensagem de alerta em diferentes navegadores

type=”email”

Atributo type de um input com a opção igual a email significa definir o campo para receber um endereço de e-mail válido. A forma de validação não verifica se o e-mail digitado realmente existe, mas sim se o formato está correto. Exemplo de um formato de email aceito: teste@teste.com.
view plaincopy to clipboardprint?
  1. <form method="post" action=""> 
  2.     <label for="email">E-mail: </label><input id="email" type=email required name=email> 
  3.     <input type=submit value="OK"> 
  4.     </form> 
Atente para o seguinte: além de ser um campo onde o usuário deve digitar um endereço de e-mail válido o campo é de preenchimento obrigatório.
Alerta para o usuário caso não seja digitado nada no campo input.
Validação email required
Alerta para o usuário caso não seja digitado um formato de e-mail no campo input.
Validaçao email
Um recurso CSS3 pode ser usando para identificar se o elemento do formulário recebeu ou não um dado válido. Esse recurso é o pseudoclasse :valid e :invalid
Assim que o usuário digitar um dado válido, o navegador altera o pseudoclasse de :invalid para:valid. No exemplo abaixo o campo inicia com uma cor de fundo avermelhada, assim que o usuário digitar um formato de e-mail o campo é alterado para verde.
Veja o CSS:
view plaincopy to clipboardprint?
  1. #email:valid {background:#006600;color:#fff } 
  2. #email:invalid {background:#990000; color:#fff} 

type=”url”

Um campo input com type igual a url recebe apenas url’s no seu formato correto, ou seja, http://www.site.com, http://www.site.com.br etc.
view plaincopy to clipboardprint?
  1. <form method="post" action=""> 
  2. <label for="site">Site: </label><input id="email" type=url required name=site> 
  3. <input type=submit value="OK"> 
  4. </form> 
Mensagem de alerta do navegador Chrome ao digitarmos uma url em um formato inválido.
Exemplo validação de url com HTML5

pattern = “Expressão”

Com uso do atributo pattern você pode exigir que o usuário digite valores em um padrão feito comexpressão regular, ou seja, o que for digitado no compo input deverá satisfazer a expressão regular criada pelo desenvolvedor.
Explicarei o atribudo criando uma expressão para entrada de um número de telefone. O valor inserido no campo de input deverá iniciar com (xx) logo terá um espaço em branco com uma sequência de quatro dígitos, um traço, e para terminar mais uma sequência de quatro dígitos, ficando assim: (xx) xxxx-xxxx.
Abaixo o código para criar a condição descrita acima.
view plaincopy to clipboardprint?
  1. <form> 
  2.    <label>Telefone: <input required name="tel" pattern="\([0-9]{2}\)[\s][0-9]{4}-[0-9]{4}"></label> (xx) xxxx-xxxx 
  3.    <input type=submit value=Enviar> 
  4.   </form> 
\([0-9]{2}\) usuário deve digitar dois números de 0 até 9 entre parênteses.
[\s][0-9]{4}-[0-9]{4} um espaço e duas sequência de números divididas por um traço.
Em HTML5 há um valor para o atributo type que é o tel. Ao utilizar esse valor não há máscara de formatação ou validação, já que não há um padrão para números de telefones. Ele serve apenas para informar que o valor do campo é um número de telefone.
Abaixo outro exemplo utilizando o atributo pattern, agora validando CEP
view plaincopy to clipboardprint?
  1. <form> 
  2.    <label>CEP: <input required name="cep" pattern="[0-9]{5}-[0-9]{3}"></label> (xx) xxxx-xxxx 
  3.    <input type=submit value=Enviar> 
  4. </form> 

novalidate=”novalidate”

Quando presente dentro do elemento form, especifica que os elementos do formulário não devem ser validados quando submetidos mesmo que tenham em seu type atributos iguais a email, url, etc.
view plaincopy to clipboardprint?
  1. <form action=" " novalidate="novalidate"> 
  2.   <label>nome: <input name="nome" required></label> 
  3.   <label>email: <input name="email" type="email" required></label> 
  4.   <input type="submit" name="action" value="Enviar"> 
  5. </form> 
No exemplo acima mesmo que o usuário clique no botão enviar sem preencher os campos com required o formulário será submetido. Isso porque passamos o valor novalidate="novalidate".

Compatibilidade entre navegadores

Pelos testes que fiz a validação funcionou perfeitamente nos navegadores Chrome, Opera e Firefox em suas últimas versões. Navegadores como Safari e Internet Explorer não foram capazes de reconhecer tais elementos da HTML5.