我正在制作一个 slider ,向左滑动时向左移动,向右滑动时向右移动。她是我到现在为止的成就https://jsfiddle.net/6ze720f7/ .虽然我现在可以设置 position left: 0 显示 left 和 position left: 446 px 显示 Right 。
负责方向的代码是:
center.onmousemove = function(Dmove) {
if (Dmove.pageX < oldx) {
direction = "left"
} else if (Dmove.pageX > oldx) {
direction = "right"
}
oldx = Dmove.pageX;
}
我担心的是 oldx
和 Dmove.pageX
之间的差异非常非常小,更准确地说是执行一些操作所花费的时间javascript 代码行。因此,如果 div
向左滑动 1 秒,但最后它被错误地向右移动了几毫秒,那么 div
将向右滑动.我认为的解决方案是使用 oldx
的 10ms 旧值。
- 是否有可能找到比
Dmove.pageX
的当前值早 10 毫秒的值? - 是否可以在语句
oldx = Dmove.pageX;
之后提供 10 毫秒的同步延迟? - 是否可以使用
setInterval()
函数,使其每 10 秒设置一次值oldx
?这可能有点问题,因为当mouseup
事件发生。
最佳答案
我建议(如果适用于您的情况)采用另一种方法:比较滑动开始时的 x 位置(即:拖动或鼠标按下事件的开始),以及结束时或滑动期间的 x 位置滑动(即:mouseup 或 mousemove 事件)。给出:
document.body.onmousedown = function(Dmove) {
oldx = Dmove.pageX;
...
...
}
不要在别处修改 oldx
并与 onmousedown
或 onmouseup
事件监听器中的“初始”值进行比较。
关于javascript - 如何使用纯 javascript 获得 10 毫秒的旧鼠标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37251276/