如何使用Javascript检测垂直滚动的位置

时间:2011-03-23 07:04:48

标签: javascript jquery scroll position

if  ($(window).scrollTop() == $(document).height() - $(window).height()){

当滚动条的滚动时,该句子返回true,即滚动条的“结束”。

确定,

我怎么知道它何时达到80%(剩下20%)???

我正在尝试表达:

if  ($(window).scrollTop()*2 == $(document).height() - $(window).height()){  // at the middle?
if  ($(window).scrollTop() == ($(document).height() - $(window).height())+100){    /// 100px left?

但他们都没有回复真实......

任何想法为什么?

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

EDITED

请看这里:http://jsfiddle.net/CoolEsh/aQcBZ/7/

HTML

<div style="height:400px;">1 div</div>
<div style="height:300px;">2 div</div>
<div style="height:400px;">3 div</div>
<div style="height:200px;">4 div</div>
<div style="height:600px;">5 div</div>

JS

var handlerObj = {

    _pageAboveCenter: null,

    init: function()
    {
        handlerObj._pageAboveCenter = handlerObj._isPageAboveCenter();

        $( window ).scroll( handlerObj._handleScroll );
    },

    _handleScroll: function()
    {
        var curentPositionAboveCenter = handlerObj._isPageAboveCenter();
        if ( curentPositionAboveCenter != handlerObj._pageAboveCenter )
        {
            handlerObj._centerIntersection();
            handlerObj._pageAboveCenter = curentPositionAboveCenter;
        }

    },

    _centerIntersection: function()
    {
        console.log( "Center intersected!" ); // this is for firebug console
    },

    _isPageAboveCenter: function()
    {
        if ( ( Math.floor( $( window ).height() / 2 ) + $(window).scrollTop() ) > ( Math.floor( $(document).height() / 2 ) ) )
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

$( document ).ready( handlerObj.init );

此示例工作事件,如果有人滚动到快速。我在页面加载时初始化变量_pageAboveCenter。然后在滚动事件中我检查当前位置(是在中心上方还是下方),如果curentPositionAboveCenterhandlerObj._pageAboveCenter的值不同,那么我称之为中心相交的方法。