2009-07-02 6 views
9

Comme le titre l'indique, j'utilise les fonctions show et hide de jQuery pour cacher et montrer des éléments. Cependant, je ne veux pas mettre à l'échelle dans la hauteur de l'élément, juste la largeur.Modifier la fonction Afficher/Masquer uniquement pour redimensionner la largeur et non la hauteur?

Je pensais à utiliser la fonction animée mais je ne savais pas si c'était la meilleure façon de procéder.

Aussi, je préférerais ne pas avoir à définir la hauteur dans le javascript car cela pourrait changer dans le balisage. Idéalement, ce que je voudrais arriver, c'est que lorsque la fonction est appelée pour masquer un élément, la largeur de l'objet passe de 0 à sa largeur d'origine et alpha passe à 0, alors l'inverse se produirait quand je le lui montrerais.

Répondre

17

Vous voulez être en utilisant la fonction Animer:

$("div.myElement").animate({width: "toggle"}); 

Le spectacle d'animation et les méthodes cacher sont pour la plupart des méthodes de vanité qui affichent une jolie animation. En général, vous allez vouloir personnaliser l'effet. Vous pouvez également essayer:

$("div.myElement").animate({width: "toggle", opacity: "toggle"}); 

pour un joli effet d'élargissement et de fondu. Et si vous vous trouvez en utilisant ces animations sur et plus, vous pouvez les envelopper dans une nouvelle méthode jQuery:

$.fn.myShow = function(duration) { 
    return this.animate({width: "toggle", opacity: "toggle"}, duration || 1000); 
}); 

$("div.myElement").myShow("slow"); 
+0

j'ai changé « largeur » à « hauteur » afin de résoudre un problème où le HTML semblait trembler comme Il a basculé. Cela a fonctionné parfaitement! – Chris

+2

Si vous êtes intéressé uniquement par la hauteur (par exemple, pas la largeur souhaitée par OP), vous pouvez utiliser [slideUp] (http://api.jquery.com/slideUp/) et [slideDown] (http: //api.jquery .com/slideDown /). –

Questions connexes