我正在尝试阻止默认滚动行为,同时仍然确定用户尝试滚动的像素数.
我的目标是(在我的页面上的某个垂直位置)将导航元素固定到屏幕顶部并劫持滚动/滑动事件以在用户向上滚动时拉下移动菜单(因此上下移动所述元素)通过ñ像素取决于有多少像素的用户试图滚动).
我知道在阻止原生行为方面存在的用户体验/可访问性问题,但这些诉讼需要西装想要的东西.
到目前为止,我有:
$('body').on({
'mousewheel' : function(e) {
e.preventDefault();
e.stopPropagation();
}
});
Run Code Online (Sandbox Code Playgroud)
但我很难知道如何访问滚动的像素数(因为元素/滚动偏移不再是指南).
编辑:请注意,此问题专门询问滚动被阻止时有关鼠标/滚动操作的信息.不要认为这已被适当标记为重复.
由于mousewheel您正在使用的事件,这是浏览器所依赖的.这是因为它是非标准的.不要用它!
在Chrome(43.0)中,您可以获得具有不同值的不同属性:
e.originalEvent.wheelDelta: -120
e.originalEvent.wheelDeltaY: -120
e.originalEvent.deltaY: 100
Run Code Online (Sandbox Code Playgroud)
在IE(11.0)中,您只能获得一个属性:
e.originalEvent.wheelDelta: -120
Run Code Online (Sandbox Code Playgroud)
在Firefox(38.0.5)中,捕鼠轮事件根本不起作用.
解决方案:
使用wheel事件(MDN参考).此事件e.originalEvent.deltaY在所有浏览器中都具有该属性.