每次用JavaScript/jQuery滚动时,你能获得用户的滚动位置吗?

Ric*_*ges 10 javascript jquery

滚动时是否可以抓取用户滚动条的当前位置?

比方说,如果它们滚动到最顶部,那么它将为0,如果它们向下滚动它会改变.

每当我访问它时,我可以分配一个变量来包含当前滚动位置,还是已经有JavaScript中的函数?

Dun*_*ger 22

从你的评论中,我得到你正在寻找一个滚动事件监听器,如 http://api.jquery.com/scroll/,然后你可以使用http://api.jquery.com/scrollTop/找出卷轴的位置.

例如:

<script>
$(window).scroll(function () { 
    //You've scrolled this much:
       $('p').text("You've scrolled " + $(window).scrollTop() + " pixels");
});
</script>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/pFaTF/

  • 要提高性能,您可能希望缓存窗口对象,而不是在事件处理程序中调用$()方法.[更简单的jQuery性能提示](http://code.tutsplus.com/tutorials/10-ways-to-instantly-increase-your-jquery-performance--net-5551) (6认同)

Pau*_*ite 7

window对象上有属性:window.scrollXwindow.scrollY.

参见例如http://javascript.gakaa.com/window-scrollx-2-0-scrolly.aspx


Pau*_*aul 5

你可以获取body元素的scrollTop属性:

document.getElementsByTagName('body')[0].scrollTop;
Run Code Online (Sandbox Code Playgroud)

这将返回可见区域上方的像素数。因此,当用户未滚动且bodyheight-viewporthieght滚动条位于底部时,返回 0。


jda*_*ies 5

尝试使用.scrollTop()

下面是一个例子:

http://jsfiddle.net/LZM7H/


编辑

如果您尝试输出正在滚动的元素的位置,则可以使用.scroll()事件来实现:

$('#container').scroll(function(){
    var position = $('#container').scrollTop();
});
Run Code Online (Sandbox Code Playgroud)

这是一个活生生的例子:

http://jsfiddle.net/LZM7H/2/