如何指定每一步滚动移动的像素数?

当我使用鼠标滚轮滚动div内容时,我想让它滚动,例如,每步30px或每个鼠标滚轮刻度w / e是最佳解决方案。
我更喜欢performance > ease即我更喜欢javascript > jquery

所以我摆弄了自己的一些解决方案,你可以在这里看到例子
谢谢Tom带领我回答这个问题。

JS:

 function wheel($div,deltaY){ var step = 30; var pos = $div.scrollTop(); var nextPos = pos + (step*(-deltaY)) console.log("DelatY: " + deltaY + ", Step: " + step + ", nextPos: " + nextPos); $div.scrollTop(nextPos); } $('#test').bind('mousewheel', function(event, delta, deltaX, deltaY) { wheel($(this),deltaY); event.preventDefault(); }); 

二手图书馆:

  • jQuery 1.8.3
  • jQuery鼠标滚轮

自己实现鼠标轮细节存在很大问题,因为(AFAIK)浏览器目前正在做三种不同的行为。 除Firefox之外的所有内容目前都支持mousewheel事件,它会通过每次“点击”传递120的wheelDelta参数。 Firefox有DOMMouseScroll事件,它会在每次“点击”时传递3(我认为)的detail参数,反之亦然。 Apple设备具有更精细的分辨率,并且具有减速度; 所以Webkit浏览器在两个轴上也给出了delta,并且在触控板双指滚动上没有“点击”。 最后,DOM Level 3 Events草案标准将定义一个“click”(我认为)1,并提供三个轴的可能性; 所以你需要面向未来的代码。 所以实现你自己的轮子处理程序是一种痛苦(我知道,因为我现在正在使用鼠标滚轮实现我的SVG应用程序的缩放)。

有关更多详细信息,请参阅Javascript:The Definitive Guide,第17.6章Mousewheel Events。