Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查';鼠标滚轮';滚动锁定时的事件方向_Javascript_Jquery_Html_Css_Scroll - Fatal编程技术网

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”提供相同的反馈。例外情况是“细节”和“增量”是彼此相反的。(也就是说,一个向上就是另一个向下)。谢谢,尽管它最终对我的情况没有用处,但你的回答很有魅力,而且非常不言自明!