Javascript 检查';鼠标滚轮';滚动锁定时的事件方向
我目前在我的页面顶部有一个光滑的滑块,它应该会改变滚动上的幻灯片,并且在某一点之后,它应该会回到正常的滚动行为 我想做的是首先锁定滚动(是的,我知道改变滚动行为对用户体验来说是一件可怕的事情,但这是直接来自客户端的强制请求),检查滚动事件被触发的次数,检查滚动事件是向上还是向下,然后相应地切换幻灯片 我的代码当前如下所示:Javascript 检查';鼠标滚轮';滚动锁定时的事件方向,javascript,jquery,html,css,scroll,Javascript,Jquery,Html,Css,Scroll,我目前在我的页面顶部有一个光滑的滑块,它应该会改变滚动上的幻灯片,并且在某一点之后,它应该会回到正常的滚动行为 我想做的是首先锁定滚动(是的,我知道改变滚动行为对用户体验来说是一件可怕的事情,但这是直接来自客户端的强制请求),检查滚动事件被触发的次数,检查滚动事件是向上还是向下,然后相应地切换幻灯片 我的代码当前如下所示: $('body').on('DOMMouseScroll mousewheel', function(e) { var viewportHeight = $(window
$('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
}
});
$('body')。在('DOMMouseScroll mouseweel',函数(e)上{
var viewportHeight=$(窗口).height(),
firstWaypoint=视口高度/2,
secondWaypoint=视口高度,
第三个航路点=3/2*视口高度,
解锁点=视口高度*2,
$slider=$('.home-hero\uuuuu-inner\uuuu-text');
如果(/*Y滚动位置<第三个航路点锁定滚动*/){
e、 预防默认值();
}else if(/*如果Y滚动位置<第二航路点显示第一张幻灯片*/){
$slider.slick('slickGoTo',0);
}else if(/*如果Y滚动位置>第二航路点显示第二张幻灯片*/){
$slider.slick('slickGoTo',1);
}else if(/*如果Y滚动位置>第三个付款点显示第三张幻灯片*/){
$slider.slick('slickGoTo',2);
}否则{
//解锁卷轴
}
});
问题是,由于我目前使用preventDefault()锁定了滚动功能,我无法再检查我的page scrollTop()位置,因为它始终位于顶部,返回0值
有没有办法检查正常情况下应该滚动多少像素,以及是向上还是向下滚动原因我需要跟踪假定的滚动位置以触发if语句的每个步骤 您只需检查
车轮三角洲
是正还是负
$(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
}
});
$(document).on('DOMMouseScroll mouseweel',函数(e){
var moved=e.originalEvent.WHEELLDELTA | | e.originalEvent.detail*-1 | | 0;
如果(移动>0){
//向上滚动
}else if(移动<0){
//向下滚动
}
});
DOMMouseScroll是一款Mozilla产品,它使用“详细信息”提供鼠标滚轮移动方向的反馈。mousewheel使用“delta”提供相同的反馈。例外情况是“细节”和“增量”是彼此相反的。(也就是说,一个向上就是另一个向下)。谢谢,尽管它最终对我的情况没有用处,但你的回答很有魅力,而且非常不言自明!