2010-12-30 3 views
1

Je veux animer un div de haut en bas. Je pense que l'idée est d'animer la hauteur de 0 à sa largeur rendue. Mais avant qu'il ne soit affiché je ne connais pas la largeur restituée, comment écrire le code pour l'animer?jquery: animer sur la hauteur d'un div

Il est comme: $.animate({"width":"auto"})

+0

s'il vous plaît clairfy, vous essayez d'ouvrir un div d'être caché en haut de la page? ou du côté? difficulté à comprendre ce que vous voulez ici. "Hauteur de 0" signifie en haut, à gauche, à droite ou en bas? – jondavidjohn

Répondre

4

Vous devez saisir la largeur à l'aide .width() comme ceci:

var $el = $("#elementID"); 
$el.animate({height: $el.width()}); 
3

en utilisant .width() ne retournera pas la largeur calculée, y compris la frontière/etc .. rembourrage Pour ce faire, j'utiliserait .outerWidth() et passerais l'option facultative true pour inclure les marges.

$('element').animate({height: $('element').outerWidth(true)}); 
+0

Ah mais voyez, la définition de la hauteur ne définira pas le padding/les marges non plus, donc en supposant que le padding, les marges et les bordures sont égales pour width et height, utiliser '.width()' serait plus correct;) –

+0

hah, there est beaucoup de "assumé" à cette question vague;) ... bon spectacle si! – jondavidjohn

0
$("#elementID").animate({height:$(this).width()}); 
+0

@jondavidjohn: Je ne comprends pas pourquoi vous avez utilisé '$ (" # elementID ")' first et '$ (this)' seconde ... ils sont tous les deux dans la même portée, et donc '$ (this)' doesn ne se réfèrent pas nécessairement à $ ("# elementID") ' –

+0

vous avez raison! – jondavidjohn