我正在使用 jQuery mousewheel 插件为每个左右轮转触发不同的操作。
Apple Magic Mouse 水平滚轮滚动具有与大多数笔记本电脑触控板相同的效果,您可以使用两根手指左右滚动页面。
左右滚动的动作会在历史上前后触发页面。这发生在所有主要浏览器(Safari、Chrome、Opera 和 Firefox)中。
这就是为什么我preventDefault
只需要在水平(deltaX)滚动时滚动。
如果不禁用垂直,我也无法禁用默认水平旋转。
这是重现该问题的小提琴,请访问它并触发水平鼠标滚轮或触控板水平滚动。
$(document).mousewheel(function(event, delta, deltaX, deltaY) {
if (deltaX > 10){
$(".square").addClass("animation");
}else if(deltaX < -10){
$(".square").removeClass("animation");
}
if (deltaY != 0){
//Anything that makes vertical wheelscroll keeps normal
}
// I have to preventDefault only the horizontal scroll, otherwise page will go back or go forward in history
event.preventDefault();
});
您可以看到我在代码中添加了一些注释,以帮助您更好地理解我的问题。
基本上我需要的只是preventDefault
水平轮动作并保持默认的垂直轮。
超过 30 小时寻找解决方案没有成功,所以我会很感激任何帮助,我现在真的没有选择。
基于 Nicklas Nygren 答案的 99% 解决方案的新小提琴。
if (deltaY == 0){
event.preventDefault();
}