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

标签 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');
  }

});

最佳答案

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

  • 设置高度
  • 等待设置高度
  • 触发回调

代码变成这样:

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

您可以阅读有关回调和.animate 的更多信息here .

关于javascript - 如何同时设置div的高度和动画宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18242344/

相关文章:

javascript - 清理了 SQL/PHP,它没有写入。不会选择你的 CSS

javascript 单击展开菜单不起作用

javascript - 按钮上的点击事件正在发送一个图标作为目标?

html - animate.css:如何让 css 动画只在第一次运行?

ios - -[AVMvidFrameDecoder advanceToFrame :] 'framebuffer num bytes' 中的 AVAnimator 断言失败

java - AnimatedVectorDrawable 抛出 UnsupportedOperationException

javascript - PHP 无法接收来自 JavaScript 的帖子

javascript - 如何通过 useReducer 和 useContext 在 Custom Hooks 中调度操作?

javascript - 先前尝试失败时,Firefox 未完成一系列调用

javascript - Shiny 的 jquery UI