【发布时间】:2020-03-02 08:24:45
【问题描述】:
我想制作一个单页网站,不使用任何第三方库,例如 FullPage.js。
- 当滚动开始时 --> 而不是等待自然滚动结束,我希望它不起作用(因此没有由鼠标引起的可见滚动)并运行我的代码。 (所以它总是可以转到下一部分或上一部分,而不依赖于用户滚动的数量)
你知道我怎样才能做到这一点吗?我的代码 sn-p 等待滚动结束,然后跳转到它应该的位置,所以它没有按预期工作。
(第一部分有一个“当前”类,然后代码 sn-p 通过添加/删除此类来操作 100vh 部分)
您可以在下面或此处查看我正在使用的代码 sn-p: https://codepen.io/makiwara/pen/PoqjdNZ
非常感谢您的帮助,祝您有美好的一天!
var script = document.createElement('script');script.src = "https://code.jquery.com/jquery-3.4.1.min.js";document.getElementsByTagName('head')[0].appendChild(script);
var timerId;
var scrollableElement = document.body; //document.getElementById('scrollableElement');
scrollableElement.addEventListener('wheel', checkScrollDirection);
function checkScrollDirection(event) {
var $current = $('.current');
if (checkScrollDirectionIsUp(event)) {
console.log('UP');
$prev = $current.prev();
if ($prev.length) {
clearTimeout(timerId);
timerId = setTimeout(function(){
$current.removeClass('current');
$prev.addClass('current');
$('body,html').animate({
scrollTop: $('.current').offset().top
}, 100);
}, 100)
}
} else {
console.log('Down');
$next = $current.next();
if ($next.length) {
clearTimeout(timerId);
timerId = setTimeout(function(){
$current.removeClass('current');
$next.addClass('current');
$('body,html').animate({
scrollTop: $('.current').offset().top
}, 100);
} , 100)
}
}
}
function checkScrollDirectionIsUp(event) {
if (event.wheelDelta) {
return event.wheelDelta > 0;
}
return event.deltaY < 0;
}
【问题讨论】:
标签: javascript jquery html scroll