Andei pesquisando pela web alguma funcionalidade interessante do Jquery para postar aqui no blog. E dentre as várias opções decidi explicar dessa vez, como fazer aqueles tooltips animados que já são bastante utilizados na web.
Veja o demo .
Vejamos inicialmente o XHTML do nosso exemplo. Observe que deve ser declarado o atributo “title” do link, que será utilizado posterior mente pelo script para ser exibido no tooltip.
<ul id="nav"> <li><a href="#" title="Ir para a página inicial">HOME</a></li> <li><a href="#" title="Conheça o autor">SOBRE</a></li> <li><a href="#" title="Dúvidas e sugestões">CONTATO</a></li> </ul>
No CSS utilizei um estilo básico para que vocês customizem de acordo com o layout desejado.
* { margin: 0; padding:0; list-style: none} body {font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 12px } a { text-decoration: none; color: #4081CF} /* estilo para o menu */ #nav { float: left; width: 390px; background: url(img/bg_menu.gif) no-repeat } #nav li { float: left; position: relative } #nav li p { background-color: #e6e6e6; border: 1px solid #bfbfbf; color: #4c4c4c; width: 150px; padding: 10px; text-align: center; position: absolute; top: 70px; z-index: 5 } #nav li a { width: 130px; height: 54px; line-height: 54px; font-size:18px; display:block; text-align: center; color: #bcbcbc } #nav li a:hover { color: #818181 }
Vamos entender nosso script. Na função each acessamos todos os links para resgata o valor do seu atributo “title” e colocá-lo em um respectivo <p>, que será exibido na animação.
Para o efeito de animação criamos uma função hover , que exibirá o parágrafo com o conteúdo do title do link. Observe:
$(document).ready(function() { $("#nav li a").each(function(i) { $(this).parent().append("<p></p>"); // adicionando um <p> dentro da <li> var textoTitle = $(this).attr("title"); // resgatando o valor do atributo "title" $(this).removeAttr("title"); // removendo o attributo title $(this).next("p").text(textoTitle).hide(); //colocando o texto do title dentro do <p> }); $("#nav li a").hover(function() { $(this).next("p").animate({opacity: "show", top: "50px"}, "slow"); }, function() { $(this).next("p").animate({opacity: "hide", top: "70px"}, "fast"); }); });
Vantagens:
- É acessível, pois caso o browser não tenha suporte a script será exibido o tooltip padrão para links.
- Acessa os elementos via DOM, o que otimiza o script diminuindo repetições de códigos.
- É completamente cross browser. Funciona perfeitamente nos principais browsers: Internet Explorer 6+, FireFox, Chrome, Safari e Opera.
Faça o e ajuste às suas necessidades.
19 de julho de 2009 at 12:53
Acordei no domingão inspirado para postar algo de #jquery no blog. Num é q saiu? "Tooltip com efeito de animação"
19 de julho de 2009 at 15:53
Acordei no domingão inspirado para postar algo de #jquery no blog. Num é q saiu? "Tooltip com efeito de animação"
17 de setembro de 2009 at 15:27
Show de bola..
3 de julho de 2010 at 20:23
Faltou somente o metodo stop() para que quando o evento for interrompido durante a execução fosse da mesma forma, interrompido a animação. Só uma opinião.