scrollTop返回0,除了body

时间:2014-10-14 09:21:59

标签: javascript jquery html

我期待这是scrollTop的正确行为,但我在帖子中的阅读方式不同,所以我真的在寻找解释为什么会发生这种情况的原因。 来自Jquery的文档: *

  

"垂直滚动位置与像素数相同   隐藏在可滚动区域上方的视图中。如果滚动条是   在最顶部,或者如果元素不可滚动,则此数字将为   是0。"

* 所以我希望scrollTop随着元素离开视口而改变,但是这不会发生。见JSFiddle。 http://jsfiddle.net/c4tqy3x4/

相关代码:

$(window).scroll(function(){
    bodyPos= $('body').scrollTop();
    topPos = $('.top').scrollTop();
    $('.body').text('the body element\'s position is: '+bodyPos);
    $('.top').text('the top element\'s position is: '+topPos);
})

对于记录,从另一篇文章中,这将返回与视口顶部相关的元素位置:

$("span").offset().top - $(document).scrollTop()

(见Even simplest .scrollTop() example returns 0

1 个答案:

答案 0 :(得分:3)

另请注意scrollTop doc page

  

垂直滚动位置与可滚动区域上方的视图中隐藏的像素数相同。如果滚动条位于最顶部,或者元素不可滚动,则此数字将为0。

在您的示例中,.top元素不可滚动,无论滚动条如何,它都是一个保留其位置的块。

但是,body是一个可滚动的元素,这就是scrollTop返回一个表示滚动距离的值的原因。