gpt4 book ai didi

javascript - 检查滚动锁定的 'mousewheel' 事件方向

转载 作者:行者123 更新时间:2023-11-28 01:19:04 25 4
gpt4 key购买 nike

我目前在我的页面顶部有一个灵活的 slider ,它应该在滚动时改变幻灯片,并且在某个点之后它应该回到正常的滚动行为。

我想做的是最初锁定滚动(是的,我知道改变滚动行为对用户体验来说是一件可怕的事情,但这是一个直接来自客户端的强制性请求),检查滚动事件被触发,检查它是向上还是向下,然后相应地切换幻灯片。

我的代码目前看起来像这样:

$('body').on('DOMMouseScroll mousewheel', function(e) {
var viewportHeight = $(window).height(),
firstWaypoint = viewportHeight / 2,
secondWaypoint = viewportHeight,
thirdWaypoint = 3/2 * viewportHeight,
unlockPoint = viewportHeight * 2,
$slider = $('.home-hero__inner__text');

if (/* Y scroll position < thirdWaypoint lock scroll */) {
e.preventDefault();
} else if (/* If Y scroll position < secondWaypoint show first slide */) {
$slider.slick('slickGoTo', 0);
} else if (/* If Y scroll position > secondWaypoint show second slide */) {
$slider.slick('slickGoTo', 1);
} else if (/* If Y scroll position > thirdWaypoint show third slide */) {
$slider.slick('slickGoTo', 2);
} else {
// Unlock scroll
}
});

问题是,由于我目前使用 preventDefault() 锁定滚动功能,我无法再检查我的页面 scrollTop() 位置,因为它始终位于顶部, 返回 0 值

有没有办法检查在正常情况下应该滚动多少像素,以及它是向上滚动还是向下滚动?因为我需要跟踪假定的滚动位置 以触发if 语句 的每个步骤。

最佳答案

您可以只检查 wheelDelta 是正数还是负数

$(document).on('DOMMouseScroll mousewheel', function(e) {
var moved = e.originalEvent.wheelDelta || e.originalEvent.detail * -1 || 0;

if (moved > 0) {
// scrolled up
} else if (moved < 0) {
// scrolled down
}

});

FIDDLE

关于javascript - 检查滚动锁定的 'mousewheel' 事件方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com