【发布时间】:2011-08-16 05:41:53
【问题描述】:
这是我的问题,它很长,但实际上很简单,如果你愿意,请至少略读一下。
我将一个名为“app”的 div 拖到页面上。工作正常。除了偶尔当我抓住 div 并拖动而不是拖动 div 时,只拖动 div 的图像(在 firefox 和 webkit 浏览器中,而不是 ie),并且鼠标光标变成一个带有一条线的圆圈。这极大地损害了网页的交互性,我不认为这是一个编码问题,而是浏览器问题。
我将在下面显示用于拖动的代码,但首先您可能应该知道,为了拖动,我使用了三组变量,X1 和 Y1 是 pageX 和 pageY(clientX 或 clientY 取决于浏览器)和或每次鼠标移动都会记录下来。
X2 & Y2 是鼠标在 div 上按下时设置的,它们是鼠标位置与当前 div 的左上角位置的差值,用于当 div 被拖动时鼠标位置是'不等于左上角。
最后 dX 和 dY(delta X 和 delta Y 的缩写)等于 X1 - X2 和 Y1 - Y2,它们也是在鼠标移动时设置的,等于 X 的变化和 Y 的变化。
抱歉解释,但我认为它可能有助于消除与以下代码的任何混淆,这里是拖动代码。
app.onmousedown = function() {
X2 = app.offsetWidth - ((app.offsetWidth + app.offsetLeft) - X1);
Y2 = app.offsetHeight - ((app.offsetHeight + app.offsetTop) - Y1);
main.onmousemove = function() {
dX = X1 - X2;
dY = Y1 - Y2;
app.style.top = dY + 'px';
app.style.left = dX + 'px';
}
}
请注意,主 div 只是一个包含页面所有元素的容器,为了方便起见,因为它等于网页的大小。
这确实是我的问题,正如我之前所说,它有时只会发生,有时它工作得很好,没有任何错误。然而,它经常发生足以成为一个问题。我知道有可能使这项工作正常进行,因为我已经看到了不受此问题影响的拖放演示。因此,如果有人知道或有任何想法,如果不感谢您费心阅读本文,将不胜感激,我知道很抱歉。
ps:请不要推荐 javascript 框架,我不喜欢它们。这只是我的一个偏好,我不讨厌它们,我只是更喜欢 javascript。
【问题讨论】:
标签: javascript animation drag-and-drop