2010-06-12 4 views
0

J'ai une div dans une position absolue avec une valeur "top" par défaut réglée sur "-200px". Lorsque je clique sur la div, la valeur "top" est mise à jour à "0". De cette façon, je vois toute la Div.Éditer Css avec effet d'animation

C'est le js:

$(document).ready(function(){ 
    $("#search_bar").click(function() { 
    $(this).css("top","0"); 
    }); 
}); 

Est-il un moyen de parvenir à ce résultat, mais avec une animation? Par exemple, un effet de glissement vers le bas?

Aussi, quand je clique une autre fois sur la div je voudrais que la valeur "top" soit restaurée à "-200px".

+0

Avec la fonction .slideDown(). :) http://api.jquery.com/slideDown/ – edl

+0

@edl - La méthode '.slideDown()' ne fait pas ce que l'OP demande. – user113716

Répondre

3

Bien sûr. Utilisez la méthode .animate(). Et au lieu de l'événement click, utilisez toggle qui accepte deux fonctions pour avant/après.

en direct Exemple:http://jsfiddle.net/a86tm/1/

$(document).ready(function(){ 

    $("#search_bar").toggle( // toggle() takes 2 functions 
     function() { 
      $(this).animate({top: 0}, 500); // Use animate() to animate the transition. 
     },         // The 500 argument is the duration. 
     function() { 
      $(this).animate({top: -200}, 500); 
     } 
); 

});​ 

docs jQuery:

+0

Ce code ne fonctionne pas avec Google Chrome! La console me donne cette erreur: Uncaught SyntaxError: Jeton inattendu ILLEGAL à la ligne 6 qui est la dernière ligne du script. – Pennywise83

+0

@ Pennywise - Je suppose que vous avez copié le code de la jsFiddle? Si c'est le cas, il y a des caractères invisibles (illégaux) qui sont copiés avec. Supprimez un espace blanc après la fin du code ou copiez et collez le code ci-dessus. – user113716