看看MDN的 DOM3 wheel事件的polyfil,我找到了这一行:
event.deltaY = - 1/40 * originalEvent.wheelDelta;
Run Code Online (Sandbox Code Playgroud)
在polyfil中event,不支持dom3事件(wheel)的浏览器的对象被赋予了deltaY.
这个比例是如何1/40 * wheelDelta计算的?为什么1/40?
如果我要为我的库创建一个类似的polyfil,并希望将delta信息传递给事件对象,我是否还要添加deltaX和deltaZ?适用相同的比例吗?
为什么1/40?
Microsoft使用了旧版和非标准版MouseWheelEvent.
那个事件有一个wheelDelta属性,是(来源)
一个抽象值,表示车轮转动的距离.
在IE上,该值通常为±120(来源)
该值与
WM_MOUSEWHEEL或 的delta值相同WM_MOUSEHWHEEL.这意味着如果鼠标滚轮不支持高分辨率滚动,则每个凹槽的值为120.即使系统设置的滚动量是页面滚动,也不会更改该值.
该填充工具使用deltaMode的1.那意味着(来源)
增量值以行指定.
一次滚动的默认行数3(至少在Windows上).您可以在控制面板 - >鼠标 - >滚轮选项卡中更改此数字.
然后,3 / 120给出那个1 / 40因素.
相同的比例是否适用于其他轴?
好吧,问题是(来源)
IE和Opera(Presto)仅支持
wheelDelta属性,不支持水平滚动.
因此,填充工具集deltaX和deltaZ对0.
| 归档时间: |
|
| 查看次数: |
3935 次 |
| 最近记录: |