A animação dá vida a qualquer página web e uma das características mais marcantes do jQuery é a capacidade de criar animações personalizadas. Nesse artigo, veremos como dar vida às nossas páginas web usando o jQuery. Este permite que se criem efeitos simples, como esconder e mostrar qualquer div ou um processo mais complexo, como mover um div de um local para outro.

Para começar tem que baixar o jQuery source file (você pode fazer o download deste arquivo do site do jQuery: http://www.jquery.com), e a seguir, será preciso criar um arquivo html e outro css. A estrutura irá se parecer com isto:

  • index.html
  • css/style.css
  • js/jquery-1.9.0.js

Primeiro veremos como esconder e mostrar qualquer componente:

hide(), show() e toggle(): Estas funções são usadas para mostrar, esconder ou alternar qualquer componente html e, para fazer isto, deve-se criar alguns divs no código da página index.html, como é mostrado abaixo:

Listagem 1: index.html

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
<script type="text/javascript" src="js/jquery-1.9.0.js"></script>
<link type="text/css" href="css/style.css" rel="stylesheet"/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Jquery Test File</title>
</head>
<body>
<div id="display">
This Div will Show and Hide
</div>
<input type="button" name="btnHide" id="btnHide" value="Hide" style="width:100px; height:30px;"/>
<input type="button" name="btnShow" id="btnShow" value="Show" style="width:100px; height:30px;"/>
</body>
</html>

E o código para o arquivo css é dado abaixo:

Listagem 2: style.css

@CHARSET "ISO-8859-1";
 
{
    margin: 0px;
    padding: 0px;
}
 
body{
    background-color: lightblue;
}
 
#display{
    width:400px;
    height:400px;
    background-color:blue;
    border:thin solid black
}

Continuando, para começar a animação, adicionaremos o seguinte código ao head da página index.html:

Listagem 3: Animando index.html

<script language="javascript">
$(document).ready(function(){
    $("#btnShow").click(function(){
        $("#display").show();
    });
 
    $("#btnHide").click(function(){
        $("#display").hide();
    });
});
</script>

O que foi feito aqui é que foi criado um event handler para toda vez que o usuário clicar em qualquer um desses botões. Quando os cliques no botão usarem o id btnHide, chamaremos a função show() da classe do jQuery que esconde o componente com o id display. Similarmente, quando o usuário clica no botão de mostrar o div se torna visível novamente. Há dois problemas com essa abordagem, primeiro não há efeito no componente se clicarmos no btnShow e este já estará visível e vice-versa e segundo que precisamos criar dois diferentes componentes e para um div ora visível ora invisível em um sistema como um toggle menu, precisaremos fazer isso usando um único div ou botão. E é aí onde entra o toggle. Então, aqui está o código para se fazer o mesmo efeito usando um único botão e uma única função.

Listagem 4: Function toggle

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").toggle();
    });
});
</script>

Controlando a velocidade: Apesar do sistema estar rodando bem, este não está dando os resultados esperados de uma animação em JQuery. Isto é devido ao não controle da velocidade da animação. Para fazer isso, pode-se passar um número inteiro como parâmetro da função. Este valor é a duração da animação em milissegundos. Por exemplo $("#display").toggle(800); agora a animação irá terminar em 0,8 segundo. Também dá um efeito de suavidade à animação. Alternativamente, podem-se passar três nomes ao parâmetro: fast (aproximadamente 200 milissegundos), medium (400 milissegundos), e slow (600 milissegundos).

Aqui está um exemplo de código.

Listagem 5: Function toggle com parâmetro

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").toggle("slow");
    });
});
</script>

fadeIn(), fadeOut e fadeTo(): A função de esconder remove os componentes para o layout controlando sua largura e sua altura para 0 e sua propriedade de display para nenhuma (none). Em contraste, a função fadeOut torna os elementos transparentes controlando seu valor de opacidade para 0. Aqui está o código para mostrar ou esconder um elemento usando as funções fadeIn e fadeOut.

Listagem 6: fadeIn e fadeOut

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").fadeOut();
    });
     
    $("#btnShow").click(function(){
        $("#display").fadeIn();
    });
});
</script>

Também se pode controlar a velocidade do fadeIn e do fadeOut através da passagem de parâmetro assim como nas funções show, hide e toggle. Mas, se não se quiser fazer o elemento desaparecer completamente do div, pode-se usar a função fadeTo. Esta função assimila três parâmetros, que são a duração, a opacidade pretendida e a função de retorno. Aqui está um exemplo da função fadeTo que reduz a opacidade para 50%.

Listagem 7: fadeTo

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").fadeTo(1000, 0.5);
    });
     
    $("#btnShow").click(function(){
        $("#display").fadeTo(1000, 1.0);
    });
});
</script>

slideUp(), slideDown e slideToggle: A função slideDown permite que o div aumente a altura de um elemento até uma altura desejada, ao passo que slide reduz sua altura para 0 e faz este desaparecer da página. Aqui está um exemplo.

Listagem 8: slideUp() e slideDown

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").slideUp();
    });
     
    $("#btnShow").click(function(){
        $("#display").slideDown();
    });
});
</script>

No entanto, podemos notar que está acontecendo tudo um pouco rápido demais, então, pode-se controlar a velocidade através da passagem de um parâmetro inteiro para a chamada o qual é a duração em milissegundos. Segue abaixo um exemplo:

Listagem 9: Controle de velocidade com slideUp()

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").slideUp(800);
    });
     
    $("#btnShow").click(function(){
        $("#display").slideDown(800);
    });
});
</script>

Aqui novamente, para controlar a visibilidade de um elemento estamos usando dois botões de controle, o que não é desejável para se trabalhar se a aplicação principal for do tipo de "drop down". Então, para controlar o uso de um único controlador pode-se usar a função slideToggle(). Aqui está o código:

Listagem 10: slideToggle

<script language="javascript">
$(document).ready(function(){
    $("#btnHide").click(function(){
        $("#display").slideToggle(800);
    });
});
</script>

Isto é tudo por hoje, vejo-os na próxima!