我期待这是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()
答案 0 :(得分:3)
另请注意scrollTop
doc page:
垂直滚动位置与可滚动区域上方的视图中隐藏的像素数相同。如果滚动条位于最顶部,或者元素不可滚动,则此数字将为0。
在您的示例中,.top
元素不可滚动,无论滚动条如何,它都是一个保留其位置的块。
但是,body
是一个可滚动的元素,这就是scrollTop
返回一个表示滚动距离的值的原因。