当我使用鼠标滚轮滚动内容时,div
我希望它滚动,例如,30px
每一步或每个鼠标滚轮刻度都是最好的解决方案。
我更喜欢,performance > ease
即我更喜欢javascript > jquery
问问题
17246 次
2 回答
7
所以我摆弄了一些我自己的解决方案,你可以在这里
看到例子
谢谢汤姆引导我回答这个问题。
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 鼠标滚轮
于 2013-09-02T02:20:42.760 回答
6
自己实现鼠标滚轮细节存在很大问题,因为(AFAIK)浏览器当前正在执行三种不同的行为。目前除了 Firefox 之外的所有东西都支持mousewheel
事件,它wheelDelta
每次“点击”传递一个 120 的参数。Firefox 有DOMMouseScroll
事件,它将通过detail
每次“点击”的参数为 3(我认为),方向相反。Apple 设备具有更精细的分辨率,并且会减速;所以 Webkit 浏览器在两个轴上也给出了增量,并且在触控板两指滚动上没有“点击”。最后,DOM Level 3 Events 草案标准将定义“点击”为(我认为)1,并提供三个轴的可能性;所以你需要让你的代码适应未来。所以实现你自己的滚轮处理程序有点痛苦(我知道,因为我现在正在使用鼠标滚轮为我的 SVG 应用程序实现缩放)。
您可以查阅 Javascript:权威指南,第 17.6 章鼠标滚轮事件,了解更多详细信息。
于 2013-09-02T01:36:52.030 回答