如何获得滚动条位置的Javascript?

我试图用JavaScript来检测浏览器滚动条的位置,以决定当前视图在页面中的位置。 我的猜测是,我必须检测到轨道上的拇指在哪里,然后拇指的高度占轨道总高度的百分比。 我是否过度复杂化,还是JavaScript提供了一个比这更简单的解决scheme? 任何想法代码明智?

您可以使用element.scrollTopelement.scrollLeft分别获取已滚动的垂直和水平偏移量。 element可以是document.body如果你关心整个页面。 如果你需要百分比,你可以将它与element.offsetHeightelement.offsetWidth进行比较(同样, element可以是body)。

我在Chrome上为<div>做了这个。

元素 .scrollTop – 由于滚动而隐藏在顶部的像素。 没有滚动它的值是0。

元素 .scrollHeight – 是整个div的像素。

元素 .clientHeight – 是您在浏览器中看到的像素。

 var a = element.scrollTop; 

将是这个位置。

 var b = element.scrollHeight - element.clientHeight; 

将是scrollTop最大值

 var c = a / b; 

将是滚动的百分比[从0到1]

 document.getScroll= function(){ if(window.pageYOffset!= undefined){ return [pageXOffset, pageYOffset]; } else{ var sx, sy, d= document, r= d.documentElement, b= d.body; sx= r.scrollLeft || b.scrollLeft || 0; sy= r.scrollTop || b.scrollTop || 0; return [sx, sy]; } } 

返回一个有两个整数的数组 – [scrollLeft,scrollTop]

如果您使用的是jQuery,那么您有一个完美的function:.scrollTop()

doc here – > http://api.jquery.com/scrollTop/

注意:你可以使用这个函数来检索OR设置的位置。

另见: http : //api.jquery.com/?s = scroll