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