如何同时设置div的高度和动画宽度

时间:2013-08-14 21:08:13

标签: javascript jquery animation jquery-animate

我正在尝试复制此网站上的左侧导航栏:http://www.kahuna-webstudio.fr/。 正如您所看到的,当您向下滚动约200像素时,会出现左侧导航。我几乎遇到了一个问题:我目前正在动画我的div的高度和宽度。我想要做的是将左导航div的高度设置为文档高度,然后当您向下滚动296像素时,宽度将增加到150像素。希望有道理。

所以我的问题是:如何将此div的高度设置为文档高度,然后第二步是设置宽度的动画。

  This is the line I am currently using:
  $("#slidebottom").stop().animate({height:docheight +"px", width:newwidthgrow + "px"},'fast');

  What I want to work, but is not working is:
  slidebottomHeight = docheight;
  $("#slidebottom").stop().animate({width:newwidthgrow + "px"},'slow');

这是我目前的代码:

  $(window).scroll(function(){
  var wintop = $(window).scrollTop();
  var docheight = $(document).height();
  var winheight = $(window).height();

  var newwidthgrow = 150;
  var smallheight = 0;
  var smallwidth = 0;
  var slidebottomHeight = $("slidebottom").height();


  if((wintop > 296)) {

    $("#slidebottom").stop().animate({height:docheight +"px", width:newwidthgrow + "px"},'fast');

  }

  if((wintop < 296))
  { 
   $("#slidebottom").stop().animate({height:smallheight +"px", width:smallwidth + "px"}, 'fast');
  }

});

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你想按顺序执行两个动作。如果是这种情况,您可以使用.animate的回调。动画完成时执行此回调。因此你可以:

  • 设置高度
  • 等待设置高度
  • 解雇回调

代码中的内容如下:

$("#slidebottom").stop().animate({width:newwidthgrow + "px"},'slow', function(){
    $("#slidebottom").animate({
       width:newwidthgrow + "px"
    });
});

您可以详细了解回调和.animate here

答案 1 :(得分:1)

$("#slidebottom").stop().animate({
    height:docheight +"px"
},'fast',function(){
    // This is a callback function. It will be called when the animation
    // has finished executing.

    $("#slidebottom").stop().animate({
        width:newwidthgrow + "px"
    });
});