动画jQuery scrollTop无法正常工作

时间:2013-05-29 06:20:20

标签: jquery

动画化scrollTop属性是否会导致呈现错误。 请检查我在jsbin http://jsbin.com/ewulum/2/edit

中创建的代码

我想要做的是当点击一个链接时它会自动向下滚动到它的相应部分。但我无法弄清楚代码有什么问题,为什么它不能正确向下滚动到相应的部分。点击前两个链接似乎工作正常。

提前感谢。

2 个答案:

答案 0 :(得分:1)

实际上它的工作和动画jQuery scrollTop正常工作。只需将height:2000px添加到body css即可。当您点击第3,第4或第5个链接时,它向下滚动,因为第5节下没有空格,所以滚动停止。在它下面添加一些空间或在容器上添加一个高度来解决你的问题。

答案 1 :(得分:0)

对我来说,一切似乎都很好。滚动到特定元素的最相关代码是:

$('html, body').animate({ scrollTop: $('#box').offset().top }, 2000);

您可以根据需要添加额外的像素以完美定位。

$('html, body').animate({ scrollTop: $('#box').offset().top + 10 }, 2000);

我进入你的http://jsbin.com/ewulum/2/edit并进行了一些更改:

.wrapper {
  width: 90%;
  margin: 0 auto;
  background:#ececec;
  overflow: auto;
  height: 250px;
}

JS档案

//event delegation
$("#nav-wrapper").on("click", "a", function(e){

  var cur_el_href = $(this).attr("href"),
      cur_el_top =$(cur_el_href).offset().top;

  e.preventDefault();

  console.log("The current elem's href value is " + cur_el_href);
  console.log("The target section's offset top is " + cur_el_top);

 $(".wrapper").animate({
     scrollTop:cur_el_top
   },
   800, function(){
     //this callback is for demonstration only so as not to back to top when testing other links
         $(this).animate({scrollTop:0}, 1000);
   });

});