Я использую плагин 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 часов безуспешного поиска решения, поэтому я буду признателен за любую помощь, теперь у меня действительно нет вариантов.
Новая скрипка с решением 99% на основе ответа Никласа Нигрена.
if (deltaY == 0){
event.preventDefault();
}