複数のページのような錯覚を与えるために内部アンカーを使用する単一ページのWebサイトがあります。ユーザーからマウスホイールを上下に読み取り、それに基づいてユーザーを現在のページの上/下のアンカーに送信するjavascript関数を作成しました。この機能は説明どおりに正常に機能していますが、マウスホイールは非常に敏感であるため、わずかな動きで複数のマウスホイールイベントが発生し、ユーザーは1ページではなく複数ページを上下に送信します。
マウスホイールの高速/低速に関係なく、ユーザーがマウスホイールのいずれかの方向に1ページだけ移動するように、マウスホイール関数を実行できる回数を制限する方法が必要です。私のJavaScriptは以下の通りです。
<script>
$(document).ready(function(){
$("#main").bind('mousewheel', function(event) {
if (event.originalEvent.wheelDelta >= 0) {
var currentPage = $(".active").attr('href');
switch(currentPage){
case "#publications":
window.location = $("#menu-item-290 a").attr('href');
break;
case "#branding":
window.location = $("#menu-item-106 a").attr('href');
break;
case "#website-development":
window.location = $("#menu-item-110 a").attr('href');
break;
case "#about-us":
window.location = $("#menu-item-109 a").attr('href');
break;
case "#contact":
window.location = $("#menu-item-108 a").attr('href');
break;
}
}
else {
var currentPage = $(".active").attr('href');
switch(currentPage){
case "#home":
window.location = $("#menu-item-106 a").attr('href');
break;
case "#publications":
window.location = $("#menu-item-110 a").attr('href');
break;
case "#branding":
window.location = $("#menu-item-109 a").attr('href');
break;
case "#website-development":
window.location = $("#menu-item-108 a").attr('href');
break;
case "#about-us":
window.location = $("#menu-item-107 a").attr('href');
break;
}
}
});
});
</script>