Dia destes, navegando casualmente pela internet achei um tutorial interessante no site Ask the CSS Guy onde o desenvolvedor explicava uma solução baseada em CSS e JavaScript para apresentar dicas de preenchimento de formulários tão logo o usuário clicasse dentro de um campo do formulário.
Examinando o resultado visual final, antes mesmo de analisar os códigos HTML e JavaScript que fazem o efeito funcionar conclui que seria possível abrir mão de JavaScript e obter efeito muito semelhante com uso de CSS puro.
Imaginei como seria a solução, mas não me dispus a desenvolvê-la, pois estava envolvido com outros afazeres e em particular a terminar meu próximo livro "Criando sites com HTML", uma abordagem sob o ponto de vista dos Padrões Web, a ser lançado na segunda quinzena de julho.
Na semana passada recebi e-mail de um leitor perguntando se eu conhecia algum tutorial sobre dicas em campos de formulário que pudesse indicar-lhe e ato contínuo me lembrei do que tinha achado casualmente na web. Consultando o histórico do navegador recuperei o endereço do site e passei ao leitor. Tendo entregue o livro à Editora Novatec para revisão gramatical, encontrei um tempinho extra para voltar ao assunto do tutorial e concretizar o que eu tinha imaginado na primeira visita ao tutorial. Agora mostro como desenvolvi a solução e consegui o resultado com CSS puro, ou seja, sem uso de JavaScript.
Sugiro que comecemos com uma visita à página com o resultado final obtido com CSS e JavaScript e nela se observe o que acontece quando o usuário clica dentro de um dos dois últimos campos do formulário: Username e Password.
Agora uma visita à página com o resultado final com CSS puro por mim desenvolvida e nela observe o que acontece quando você passa o mouse ou dá o foco a qualquer um dos campos do formulário ou ao botão de envio. A página que desenvolvi segue o mesmo layout e apresentação da página original em inglês, para fins de comparação, mas a semelhança pára aí, pois tanto o HTML do formulário como as regras de estilização para ele são diferentes.
Como a página foi por mim desenvolvida com a mesma apresentação da original, por cortesia e consideração com o autor, postei um comentário no site dele informando sobre a alternativa por mim criada. Já fazem alguns dias e o comentário não foi liberado para exposição, por razões que desconheço, mas registro aqui em nome da mesma cortesia e consideração.
Não vou me estender em longas explicações com considerações básicas de marcação e estilização, pois a solução é bem simples e pode ser deduzida da simples análise do código fonte da página na qual coloquei a folha de estilo incorporada justamente para facilitar a consulta marcação/CSS no mesmo arquivo. Contudo não vou deixar totalmente por conta do meu leitor, com pouca intimidade com CSS, a tarefa de estudar o código e "se virar" sozinho. Tomarei como exemplo, para explicar como obter o efeito, o campo "Username" do formulário e a partir dele a técnica para os demais campos é a mesma.
Observe a marcação do campo e leia a explicação em cada linha da marcação:
<form action-xhr="#" method="post" id="exemplo">
...
<label for="user">Username:</label> /* Nome do campo */ <a href="#" tabindex="9"> /* ops! um link morto - agradeça ao IE6 que não entende :focus */ <input type="text" id="user" tabindex="10" /> /* campo de texto */ <b>Username? I am sure you know what this is.</b> /* a dica para preenchimento do campo */ <span></span> /* container para a setinha no lado esquerdo da caixa com a dica */ </a>
<hr /> /* o que esta linha horizonatal está fasendo aqui? */...
</form>
Os elementos b
e spam
contêm a dica e serão posicionados fora de visão na tela com uso da regra CSS a seguir:
form#exemplo a b,
form#exemplo a span {
position:absolute;
left:-10000px;
}
Quando o usuário passar o mouse sobre o link que, conforme mostra a marcação, é o campo input a dica é revelada com uso da seguinte regra CSS:
form#exemplo a:hover b,
form#exemplo a:focus b {
position:absolute;
top:-10px;
left:370px;
}
form#exemplo a:hover span,
form#exemplo a:focus span {
background:url(seta.gif) no-repeat;
display:block;
position:absolute;
top:-5px;
left:361px;
width:15px;
height:22px;
}
Estas duas regras de estilo fazem o dica funcionar. As demais regras complementam a estilização e para a folha de estilo completa veja o código fonte da página.
Se você preferir estudar offline faça o download da página com o formulário
Em 2006 comecei a publicar nesse blog uma série de desafios CSS que consistiam em…
Há muito tempo que eu não publico um "Teste seu conhecimento". Esta semana, revendo algumas…
Introdução Elementos da marcação HTML podem ser aninhados uns dentro de outros, criando-se uma cadeia…
HTML5? Web universal? É comum eu me deparar com dúvidas sobre a HTML5 não só…
Quem é Tab Atkins Jr? Tab Atkins Jr, um desenvolvedor americano, trabalhou durante muitos anos…
Pessoal, a BrazilJS Conf 2013 disponibilizou para o Maujor cupons de desconto para serem oferecidos…
View Comments
Otima solução, muito interessante. Geralmente eu uso o atributo "title" dentro das tags de input, mas funciona somente com o mouse sobre o campo, para o uso do tab essa solução eh muito melhor.
Parabéns pela materia
Muito bom galera... Música na cabeça...
Legal a solução, mas via tab não funciona nem no IE7 nem no Chrome. E não tem como fazer o balão aparecer quando o foco estiver no input, e não no link, como no exemplo original? É que é esquisito ter que dar dois tabs pra passar de um campo para outro.
@soh dubom
A solução com CSS funciona tanto para mouse como para tecla.
Bom o artigo, mas vale lembar q são 2 propostas diferentes e não algo como eliminar o js pq posso fazer o mesmo com css. Tudo bem q qdo utilizamos js temos q pensar em Graceful Degradation, mas imho qdo se trata de formularios utilizo a tecla TAB para navegar entre os form fields e q intenção no artigo original eh justamente mostrar o tooltip no momento da tabulação e não no mouse-over.
Parabens, já me ajudou hoje.
Sucesso!
Téo
Olá, estou de novo em seu site, e pela primeira vez no blog. Como sempre, suas soluções são ótimas, e o mais importante, simples. Na hora que passei o mouse logo pensei no hover, mas me lembrei que vi aqui no seu site que no ie6 e mais antigos só reconhecia o hover da tag a. Pensei naqueles códigos imensos que se propõem a fazer o ie reconhecer o hover artificialmente, mas quando olhei o fonte... Lá estava uma tag a envolvendo o input! Meus parabéns! Me fez rir de mim mesmo e na complexidade que eu estava criando desnecessáriamente. Abraço! Não tem um livro seu com desconto não?
é um bom modo de gerenciar formularios
Durval - http://www.hotmastersound.com.br
Ficou quase tão bom quanto a idéia original. Há problema com a tabulação durante o preenchimento; um tab não vai direto para o campo seguinte...
Legal a materia, e queria dizer que estou anciozissimo com o novo livro.
Agardo ancioso.
============
/* Abraços de Daniel... */