精确比较$(window).height()值与滚动的特定值

时间:2017-01-05 12:03:16

标签: javascript jquery

首先我得到$(窗口).height()和这个高度我想要与scroll的特定值进行比较。

$(window).scroll(function (event) {
        var scroll = $(window).scrollTop();
        var windowHeight = $(window).height();
        console.log("window height---> " +windowHeight);
        console.log("scroll value----> "+scroll);

        if (scroll == windowHeight) {
            console.log("---after compare--- ");
        }        
    });

但是当我比较滚动值时,有时滚动值会跳过一些值。

我的滚动值(在控制台中):

1.scroll value----> 423
1.window height---> 431
2.scroll value----> 427
2.window height---> 431
3.scroll value----> 432    
3.window height---> 431
4.scroll value----> 434
4.window height---> 431
5.scroll value----> 436
5.window height---> 431

如果您注意到第二次比较:

  

2.scroll value ----> 427个
    2.窗口高度---> 431

滚动值和窗口高度不同。滚动值直接从 2.scroll值---->跳转427 滚动值----> 432 即可。并跳过滚动的431值。如何比较精确的滚动值和窗口高度。

3 个答案:

答案 0 :(得分:1)

这个想法是跟踪用户是否滚动到某个点并对#34;事件"做出反应。

var wasOnfirstPage = true; // scroll < height

$(window).scroll(function (event) {
    var scroll = $(window).scrollTop();
    var windowHeight = $(window).height();
    var isOnFirstPage = scroll < windowHeight; // current state

    if (wasOnFirstPage && !isOnFirstPage) {
        console.log("user scrolled fully past first page");
    }
    else if (!wasOnFirstPage && isOnFirstPage) {
        console.log("user scrolled back up");
    }

    wasOnFirstPage = isOnFirstPage;
});

这样,不仅值不会超过一个像素,还会检测滚动的方向。

答案 1 :(得分:0)

  

1. 滚动值----&gt; 423

     

1.窗口高度---&gt; 431

     

2. 滚动值----&gt; 427

     

2.窗口高度---&gt; 431

你不能,因为它取决于用户滚动的速度(即页面应该滚动多少行文字)。

但是,您可以跟踪滚动的最后一个值,并检查窗口的高度是否在滚动的最后一个值和新值之间。希望它有所帮助

答案 2 :(得分:0)

下面:

if (scroll == windowHeight) {
    console.log("---after compare--- ");
}

您依赖的浏览器会在每个滚动的像素上触发scroll事件 实际上,由于性能原因,这是不可能的(如果我将1000像素滚动到页面底部,请考虑代码的速度有多慢)

这很像比较浮点数。您需要一些常量来确定所考虑的内容&#34;等于&#34;:

var deltaScroll = 15 ;
if (scroll > windowHeight - deltaScroll && scroll < windowHeight + deltaScroll) {
    console.log("---after compare--- ");
}

为了获得更好的效果,您可以将deltaScroll基于windowHeight,例如5%:

var deltaScroll = windowHeight / 20

(尝试不同的值来找到最好的值)