我正在制作一个滑块,当它向左滑动时向左移动,向右滑动时向右移动。她是我迄今取得的成就https://jsfiddle.net/6ze720f7/。虽然我现在可以设置左侧位置:左侧显示时为0,左侧位置为左侧:显示右侧时为446像素。
负责方向的代码是:
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
将向右滑动。我认为解决方案是使用10ms较早的oldx
值。
Dmove.pageX
现有的10毫秒旧值? oldx = Dmove.pageX;
后提供同步延迟10毫秒?setInterval()
函数,以便在每10秒后设置值oldx
?这可能有点问题,因为当oldx
事件发生时,Dmove.pageX
与mouseup
的当前值之间的差异可能在0到10毫秒之间。答案 0 :(得分:0)
我建议(如果适用于您的情况)采用另一种方法:比较滑动开始时的x位置(即:拖动开始或mosedown事件),以及结束时或期间的x位置滑动(即:mouseup或mousemove事件)。这给出了:
document.body.onmousedown = function(Dmove) {
oldx = Dmove.pageX;
...
...
}
请勿在其他地方修改oldx
,并与onmousedown
或onmouseup
事件监听器中的“初始”值进行比较。