私はfullPage.js
JQuery プラグインを使用しています (こちらのデモをご覧ください)。このプラグインは、フル ウィンドウ サイズのセクションを定義し、ユーザーが上下にスクロールするとセクション「スライド」から「スライド」にスクロールします。
スクロール開始時にスクロールイベントがすぐに発生しないように変更しようとしていますが、短時間または特定のスクロール量の後に、ユーザーが誤って数ピクセルスライドするのを防ぎ、スクロールイベントを発生させてスクロールします次のスライド。
たとえば、ユーザーがオフセット < 100px でスクロールした場合は現在のスライドに戻り、オフセット > 100px の場合は次のスライドにスクロールします。
これがfullpage.js
コードです。私が望むものを得るには、この関数を変更する必要があると思います:
//when scrolling...
$(window).scroll(function(e){
if(!options.autoScrolling){
var currentScroll = $(window).scrollTop();
var scrolledSections = $('.section').map(function(){
if ($(this).offset().top < (currentScroll + 100)){
return $(this);
}
});
//geting the last one, the current one on the screen
var currentSection = scrolledSections[scrolledSections.length-1];
//executing only once the first time we reach the section
if(!currentSection.hasClass('active')){
var yMovement = getYmovement(currentSection);
$('.section.active').removeClass('active');
currentSection.addClass('active');
var anchorLink = currentSection.data('anchor');
$.isFunction( options.onLeave ) && options.onLeave.call( this, currentSection.index('.section'), yMovement);
$.isFunction( options.afterLoad ) && options.afterLoad.call( this, anchorLink, (currentSection.index('.section') + 1));
activateMenuElement(anchorLink);
}
}
});
しかし、それを行う方法が本当にわかりません...スクロールの開始とスクロールの終了時にスクロールオフセット/時間を取得し、違いを取得してから、違いに応じて現在または次のスライドにスクロールする必要があると思いますが、私はしませんこの関数でこれを実装する方法と、スクロール終了イベントを取得する方法がわかりません。
また、「スクロール終了イベント」の使用についてはわかりません。ユーザーが上下にスクロールしたい場合、スクリプトは、ユーザーがスクロールを停止して必要な場所にスクロールするのを待つ必要がないためです..
たぶん、スクロール中にスクロールオフセットを取得し、オフセット> xのときに次へスクロールし、スクロールが停止してオフセット< xの場合は現在のスクロールに戻る必要がありますか? または、スクロール オフセットの代わりにスクロール時間を使用できますか?