检查'鼠标滚轮'滚动锁定的事件方向
Check 'mousewheel' event direction with scroll locked
我目前在页面顶部有一个光滑的滑块,它应该可以在滚动时更改幻灯片,在某个点之后,它应该会恢复到正常的滚动行为。
我想做的是首先锁定滚动(是的,我知道改变滚动行为对用户体验来说是一件可怕的事情,但这是直接来自客户端的强制性请求),检查滚动事件的触发次数,检查它是向上还是向下,然后相应地切换幻灯片。
我的代码目前看起来是这样的:
$('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
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何使用javascript检测不可滚动元素中的滚动事件和方向
- 在黑莓网页中检索方向更改事件
- 触发方向更改事件时获得错误的屏幕高度
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 哪个事件将最快和最一致地触发 - matchMedia,window.resize,方向更改或两者兼而有之
- JavaScript “设备方向”事件 - 它测量什么传感器
- 网站上的方向更改事件(无移动应用程序)
- 在Android调整大小或方向更改事件后获得正确的窗口宽度
- 如何检查完全支持设备方向事件的设备/浏览器
- 检查'鼠标滚轮'滚动锁定的事件方向
- 如何确定鼠标移动事件的方向
- 如何在单击事件时更改引导插入符号指向的方向
- 事件的方向改变不能在主干中工作
- 如何获得方向和距离与jQuery移动滑动事件
- window.onPopState()事件处理程序知道导航方向吗?(前、后)
- & # 39; touchmove& # 39;事件查看在垂直方向上拖动了多少像素
- 网格& # 39;keydown # 39;事件不能捕捉特殊的键,如方向键、Enter键或Tab键
- 取消对最后一张幻灯片的touchmove事件的绑定,当方向向上时重新绑定touchmove事件
- jQuery 滑块“slide”事件:如何确定用户的幻灯片方向