Javascript 检查滚动点每个像素都被滚动

Javascript 检查滚动点每个像素都被滚动,javascript,onscroll,Javascript,Onscroll,我再次需要你的帮助。A尝试编写如下代码: 我在屏幕上得到了一个以像素为单位的假想点(比如说身体的一半),在身体上得到了一个元素。我想提醒一下,如果上面的元素碰到了假想线,那么就提醒一下,如果下面的元素离开了假想线 我有一些东西要做(为了“击中底线”),但它只工作了几次,但如果我快速滚动它就不工作了。如果我滚动得非常慢,并且准确地显示警报: $(window).scroll(function () { // A POINT I SET On SCREEN --> IN THIS CA

我再次需要你的帮助。A尝试编写如下代码:

我在屏幕上得到了一个以像素为单位的假想点(比如说身体的一半),在身体上得到了一个元素。我想提醒一下,如果上面的元素碰到了假想线,那么就提醒一下,如果下面的元素离开了假想线

我有一些东西要做(为了“击中底线”),但它只工作了几次,但如果我快速滚动它就不工作了。如果我滚动得非常慢,并且准确地显示警报:

$(window).scroll(function () {
    // A POINT I SET On SCREEN --> IN THIS CASE HALF SIZE OF BODY
    var halfBody = $("body").height() / 2;

    if ($(window).scrollTop() == halfBody) alert('HIER');
});
我认为问题在于我试图匹配的像素。我认为滚动并不总是精确的像素

如何做到这一点,使顶部的元素越过行
警报(“元素顶部击中行”)
,底部的元素离开行
警报(“没有元素离开行”)


我希望你能理解:)

滚动事件很容易触发,处理每一个事件都会让你的处理者不知所措。 尝试使用/下划线debnounce/threshold每隔X毫秒处理一次。
在浏览器中滚动处理是一种常见的做法。

滚动事件很容易触发,处理每一个事件甚至会让处理程序不知所措。 尝试使用/下划线debnounce/threshold每隔X毫秒处理一次。
在浏览器中滚动处理是一种常见的做法。

好的,我找到了一个很好的解决方案,其中包括缓存变量和设置超时:

var timer;  
var windowHeight = $(window).height();  
var triggerHeight = 0.5 * windowHeight;


$(window).scroll(function() {
    if(timer) {
        window.clearTimeout(timer);
    }

    timer = window.setTimeout(function() {

        // this variable changes between callbacks, so we can't cache it
        var y = $(window).scrollTop() ;

        if(y > triggerHeight) {

        }           


        if( $(window).scrollTop() == 0 ) { // IF HITS TOP OF PAGE

        }

    }, 10);
});

也许这对某人有帮助

好的,我找到了一个很好的解决方案,其中包括缓存变量和设置超时:

var timer;  
var windowHeight = $(window).height();  
var triggerHeight = 0.5 * windowHeight;


$(window).scroll(function() {
    if(timer) {
        window.clearTimeout(timer);
    }

    timer = window.setTimeout(function() {

        // this variable changes between callbacks, so we can't cache it
        var y = $(window).scrollTop() ;

        if(y > triggerHeight) {

        }           


        if( $(window).scrollTop() == 0 ) { // IF HITS TOP OF PAGE

        }

    }, 10);
});
也许这对某人有帮助