Um dos recursos mais procurados pelos designers (e programadores) em bibliotecas é animação. Existem bibliotecas e mais bibliotecas que fazem animações de diversas formas. Em prototype por exemplo, deve-se anexar a biblioteca scriptaculous para que seja possivel realizar animações. Já em mootools existem várias formas de resolver o mesmo problema, sendo assim um pouco mais complicado de lembrar de tudo isso. Por jQuery ser uma biblioteca simples com somente o funcional, o trabalho se torna mais simples, logo mais rápido de desenvolver as soluções.
Em jQuery – como já vimos aqui e aqui, temos animações que podemos usar nos projetos: slideUp, slideDown, slideToggle, fadeIn, fadeOut e fadeTo, além de show e hide. São efeitos simples que você pode utilizar em qualquer lugar, e suas nomenclaturas também sao simples a ponto de serem intuitivas na hora do serviço de fato.
Slide
Que tal experimentar fazer uma área onde o usuário clica em um botão de mostrar/ocultar menu? Com apenas duas tags, a jQuery consegue executar essa tarefa.
Tomemos a seguinte marcação:
1 2 3 4 5 6 7 | <div> <!-- Aqui vem a área, que você pode manipulá-la como quiser, experimente um formulário de login ou um menu inline ou uma bela imagem. --> </div> |
Apenas com HTML e CSS fazemos a versão que funcionará sem javascript. Pense sempre dessa forma, assim você não corre o risco de fazer javascript obstrusivo. É por isso que não foi colocado o link onde o usuário clicará para aparecer e sumir com a área. Veja como ficará este exemplo estilizado com apenas com algumas linhas de código de CSS.
Feita a primeira e a segunda camada (conteúdo feito no HTML e apresentação feita no CSS) partimos para a interação, que quem comanda é a jQuery. Primeiro, precisamos adicionar o link onde o usuário poderá clicar para fazer a área sumir e reaparecer, faremos isso dinamicamente com a ajuda do nosso Framework preferido. Com o método after (depois em inglês) adicionamos facilmente o nosso link.
1 | $('#area').after('<a id="mostra-esconde-area" href="#area" title="Mostrar/Esconder Área">Mostrar/Esconder Área</a>') |
Após isto, só precisamos adicionar a animação ao nosso botão, fazendo ele animar a área desejada. Com o comando toggle, nem precisamos nos preocupar com o estado no qual a área se encontra, afinal, ele vai aparecer e desaparecer conforme o necessário.
1 2 3 | $('#mostra-esconde-area').click(function(){ $('#area').slideToggle() }) |
Não esqueça que estes comandos devem estar dentro da função de inicialização da jQuery. Então o script final ficará assim.
1 2 3 4 | $(function(){ $('#area').after('<a id="mostra-esconde-area" href="#area" title="Mostrar/Esconder Área">Mostrar/Esconder Área</a>') $('#mostra-esconde-area').click(function(){ $('#area').slideToggle() }) }) |
Ao todo para fazermos a animação e a interação, não gastamos mais que cinco linhas de código javascript. Veja no exemplo final (ou com pouco CSS), como esse tipo de interação pode dar um gás na sua aplicação.
Opacidade
Uma outra propriedade que a jQuery trabalha e que pode resultar em ótimas melhorias na usabilidade do usuário é a propriedade opacity. Ou seja, a transparencia dos elementos, e graças aos métodos fadeIn, fadeOut podemos fazer um tooltip com poucas linhas de código.
Primeiro, escrevemos o HTML necessário. Sempre pensando de forma não obstrusiva, ou seja, se o navegador do usuário não tiver javascript habilitado, ele não deve ter sua navegabilidade atrapalhada.
1 2 3 4 | <ul> <li><a href="google.com" title="Encontre o que você procura">Google</a></li> <li><a href="tableless.com.br" title="Webstandards com Feijão e Farofa">Tableless</a></li> </ul> |
Com algumas linhas de CSS aplicamos uma interface interessante para nosso menu. Para a construção usamos o atributo title, assim o usuário que não estiver com o javascript habilitado poderá navegar no site vendo todos os recursos que ele teria se o javascript estivesse habilitado.
A primeira tarefa da jQuery é criar um span onde vamos colocar o mesmo texto do atributo. Não podemos manipular o atributo title, ele fica com o padrão do sistema operacional do usuário, já um span podemos implementar o que nossa imaginação mandar, até mesmo criar balões colocando backgrounds, se necessário.
Para fazer isso, precisamos usar o método each, que percorre todos os elementos chamados aplicando a cada um uma diretiva específica.
1 2 3 4 | $('#menu li a').each(function(){ $(this).append('<span>'+this.title+'</span>') this.title='' }) |
No método each nós passamos uma função, nessa função, a palavra-chave “this” indica o item que está sendo tratado pelo each (um de cada vez), ou seja, cada link específico. A cada link appendamos, ou seja, adicionamos ao fim de seu conteúdo o valor de seu atributo title dentro de uma tag span. Depois, limpamos o valor de seu title. Assim, removemos o tooltip original, deixando apenas o que será aplicado nos próximos passos.
Agora, a mágica. Adicionamos aos links a ação de hover que irá exibir seus filhos (o span que acabamos de adicionar) e ao mesmo tempo adicionamos a ação de sumir quando ele sair, fazemos isso com o próprio hover. Poderiamos fazer isso com os métodos show, hide ou mesmo o toggle, mas para ficar mais interessante para o usuário, resolvi usar fadeIn e fadeOut. Veja que mesmo assim, o código não fica tão impossível de entender.
1 2 3 4 5 | $('#menu li a').hover(function() { $(this).children().show() },function(){ $(this).children().hide() }) |
Enfim, aplicamos estes dois trechos de script ao nosso “inicializator-jquery” que fará com que esse script seja executado apenas após carregar a página, ou seja, quando todos os elementos já tiverem sido carregados. Também adicionamos ao CSS algumas linhas de código para deixar o tooltip amigável. Veja como é muito interessante esse efeito, agora com o nosso novo tooltip.
A jQuery manipula muito bem efeitos simples (mas que resolvem a esmagadora quantidade de problemas) que muitas bibliotecas insistem em deixar confuso demais ou complexo demais por adicionar mais e mais configurações para cada efeito. Por isso jQuery é uma ferramenta muito poderosa.
23 Comentários
23 Comentários
Marcus VBP 05/01/2009 às 08:04
Muito bom!!
Particularmente, gostei de conhecer o .each(), Pois irei utilizá-la muito!
Até
Neto 05/01/2009 às 08:33
Show de bola! Ops! JQuery!
Rafael Ximenes 05/01/2009 às 09:25
ótimo! Como a muito não via.
Feliz ano novo!
Levi Levita 05/01/2009 às 09:54
Muito bacana!
… eu já vi a alugum tempo atras algo bem parecido no WebDesignerWal – http://www.webdesignerwall.com/tutorials/jquery-tutorials-for-designers/ – jQuery é muito simples, mas facil e Funcional =D
Daniel 05/01/2009 às 09:59
Raros tutoriais na net estao com conteudo facil e pratico, parabens.
Seyfertt 05/01/2009 às 16:48
Muito massa esse JQuery =D
Parabéns e feliz 2009
Ronildo Costa 06/01/2009 às 05:10
Podemos esperar tutoriais usando o Mootools??
Narley Fabricio 08/01/2009 às 18:18
Muito bom…..
Esses exemplos são bons, espero que haja mais deles…!!!
navegabilidade.net » Blog Archive » Animando com jQuery 10/01/2009 às 11:40
[...] ser uma biblioteca simples com somente o funcional, o trabalho se torna mais Veja o post completo clicando aqui. Post indexado de: [...]
navegabilidade.net » Blog Archive » Fazer animação com jquery | Tableless.com.br 10/01/2009 às 22:42
[...] habilitado, ele não deve ter sua navegabilidade atrapalhada. … Veja o post completo clicando aqui. Post indexado de: [...]
welton matos 11/01/2009 às 15:17
Meu, mais uma vez um show de bola… esse tutorial é muito bom.
felipe tonello 13/01/2009 às 01:45
Gostei bastante também.
Estou começando a usar jQuery com AJAX para fazer uns plugins de WordPress, e é muito fácil e legal.
Ricardo Lima 13/01/2009 às 13:03
to tb aos poucos apredendo jquery achei fascinante desde a primeira vez que vi.
parabéns pelo artigo =D
Valéria 14/01/2009 às 14:34
Muito bom o artigo… amei… e me esclareceu algumas duvidas…
Gostaria de saber mais de animação em jquery, aonde eu posso achar mais deste assunto… to com uma animação que deve ser de uma lista, onde a tela não pode se mover apenas os itens… aonde esses itens que rolam sejam por botões para cima e para baixo…
alguém tem uma ideia de como posso fazer isso em jquery????
abs,
Leonardo Mateus 16/01/2009 às 10:36
É.. interessante não deixa de ser. E dá um tchan a mais no trabalho, sem dúvida. Mas analisando o tempo de carregamento da página, ele pesa bastante para carregar na página.. E quanto mais animações, mais demorado fica. Tempos atrás estávamos limpando os arquivos, tirando as tabelas para reduzir tamanho e tempo de carregamento das páginas, usando o bom CSS. Mas o JQuery está indo contra, neste quesito. Devemos usar, mas com moderação.
Abraços! :p
Jackson 16/01/2009 às 17:39
Concordo com o Leonardo. Sempre devemos usar recursos que tornem a experiência de nossos usuários mais interessante, porém, com cautela.
Aproveito para deixar aqui o post onde citei sobre menu drop-down a la jQuery. Deem uma olhadinha: http://www.profissionaisti.com.br/2008/11/menu-facil-facil-com-jquery-e-css/
Levei um puxão de orelha do Maujor por estar obstrutivo…hehehe. Apesar do puxão de orelha, ainda não criei vergonha na cara para mudar
Abraço
Guilherme Alencar 17/01/2009 às 11:46
Lindo!
João Henrique 23/01/2009 às 16:07
Uso o slide no meu site, mas ainda sou frustrado com o tamanho do jquery =/ Algum dia ainda encontrarei outra biblioteca mais leve que faça o que preciso!
Marcio Toledo 02/02/2009 às 11:37
Meio pesadinho esse jQuery. Mas parece bem mais fácil de usar que as demais bibliotecas de animação.
Eugênio 05/02/2009 às 12:11
Nesse tuto, a div q faz o slide já começa visível… como faço para deixa-la oculta ao carregar a pagina?
navegabilidade.net - Fazer animação com jquery | Tableless.com.br 08/02/2009 às 07:07
[...] habilitado, ele não deve ter sua navegabilidade atrapalhada. … Veja o post completo clicando aqui. Post indexado de: [...]
rodrigo 10/02/2009 às 20:38
parabens cara, muito bom…
Renato 02/06/2009 às 09:24
Excelente, com certeza todo o site está de parabens!.. aumentou minha apetite pelo mundo da programação web.. muito obrigado pessoal!!! valew