我正在编写一个页面,在用户第一次滚动时,并不会实际滚动页面,而是添加一个带有过渡效果的类。
我想检测用户向下滚动的情况,因为如果他向上滚动,我希望它做其他事情。
我找到的所有方法都是基于定义当前body的scrollTop,然后在页面滚动后与body的scrollTop进行比较,以定义方向,但由于页面实际上并没有滚动,所以body的scrollTop()不会改变。
animationIsDone = false;
function preventScroll(e) {
e.preventDefault();
e.stopPropagation();
}
$('body').on('mousewheel', function(e) {
if (animationIsDone === false) {
$("#main-header").removeClass("yellow-overlay").addClass("yellow-overlay-darker");
$(".site-info").first().addClass("is-description-visible");
preventScroll(e);
setTimeout(function() {
animationIsDone = true;
}, 1000);
}
});
这就是我所想到的,但这种方式无论我向哪个方向滚动都会触发事件。
mousewheel
已被弃用且不是标准的。虽然只有FireFox不支持它。为了支持FireFox,您可以尝试处理DOMMouseScroll
,在DOMMouseScroll
事件处理程序中,相当于mousewheel
事件处理程序中的e.wheelDelta
约为-40*e.detail
。此外,看起来jQuery删除了该属性,您必须访问originalEvent
。 - King King