我一直在开发一个图像平移工具,在一个善意的成员指导我使用jQuery的可拖动插件之后,我已经完成了大部分工作。现在,如果用户拖动图像(包含在大约300像素×300像素的div中),图像将首先闪烁,然后平移。鼠标移动事件发生鼠标按下事件后,似乎会出现此问题。鼠标移动时,图像将移入四个角中的一个角,移动到某些区域将导致另一个移位。我还没能通过谷歌找到任何东西,而且我对jQuery还是比较新的。
我已经在这里上传了代码,以防我的描述太模糊: http://www.studentgroups.ucla.edu/csa/test/zoom.htm
非常感谢任何想法或建议!
答案 0 :(得分:1)
首先,你已经通过jQuery插件和你自己的代码使图像可以拖动了。您的代码正在更改background-position
的{{1}},而jQuery插件正在更改div
的实际位置。这肯定会引起一些问题。
此外,Draggable的div
参数似乎是针对小于其父容器的可拖动项目而设计的,而不是像你想要的那样更大的可拖动项目。
无论如何,这是工作代码:
containment
如果您不需要边缘捕捉,则可以摆脱$(document).ready(function() {
$(".draggable").draggable().bind('dragstop', function(e, ui) {
if (ui.position.top > 0) {
$(this).css('top', 0);
}
if (ui.position.left > 0) {
$(this).css('left', 0);
}
var bottom = -($(this).height() - $(this).parent().height()),
right = -($(this).width() - $(this).parent().width());
if (ui.position.top < bottom) {
$(this).css('top', bottom);
}
if (ui.position.left < right) {
$(this).css('left', right);
}
});
});
功能,只需拨打.bind()
。
.draggable()