【发布时间】:2023-03-15 04:33:01
【问题描述】:
我正在编写一个页面,当用户第一次滚动时,它实际上并没有向下滚动页面,而是添加了一个带有过渡的类。 我想检测用户何时向下滚动,因为如果他向上滚动,我希望它做其他事情。 我找到的所有方法都是基于定义当前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,相当于mousewheel事件处理程序中的e.wheelDelta大约是-40*e.detail事件处理程序中的-40*e.detail。看起来jQuery删除了该属性,您必须访问originalEvent。 -
您可以使用 wheel event。在这里您可以查看一个具有跨浏览器支持的示例,处理滚动:stackoverflow.com/questions/4989632...
标签: javascript jquery scroll