Javascript jQuery使用鼠标移动元素
所以我可以用鼠标移动一个元素,但是问题是偏移量是从元素的左上角开始计算的,没有考虑鼠标在元素中的位置,导致对象向鼠标跳跃,并阻止您向上或向左拖动它 所以我提出了这个函数:Javascript jQuery使用鼠标移动元素,javascript,jquery,Javascript,Jquery,所以我可以用鼠标移动一个元素,但是问题是偏移量是从元素的左上角开始计算的,没有考虑鼠标在元素中的位置,导致对象向鼠标跳跃,并阻止您向上或向左拖动它 所以我提出了这个函数: handle.on("mousemove", function(e) { if (state.dragging) { var paneOffset = pane.offset(); var mouseOffset = { 'top': e.pageY - paneOffset
handle.on("mousemove", function(e) {
if (state.dragging) {
var paneOffset = pane.offset();
var mouseOffset = {
'top': e.pageY - paneOffset.top,
'left': e.pageX - paneOffset.left
}
pane.offset({
top: e.pageY - mouseOffset.top,
left: e.pageX - mouseOffset.left
});
}
});
例如:
问题是它会阻止图元移动,因为它总是计算图元的相同精确偏移。如何使元素跟随鼠标,但相对于鼠标与对象的位置
我知道jQueryUI内置了此功能,但不想使用它。您可以计算dragstart上的初始鼠标偏移量,并因此将其用作mousemove处理程序中的全局变量。因为dragstart在鼠标移动之前启动,所以我看不出有问题
更新:您需要存储对象的初始偏移量和鼠标的初始偏移量,并计算鼠标相对于mouseMove上的原始偏移量的相对偏移量,然后对元素应用相同的变换。您可以计算dragstart上的初始鼠标偏移量,从而将其用作鼠标移动处理器。因为dragstart在鼠标移动之前启动,所以我看不出有问题
更新:您需要同时存储对象初始偏移量和鼠标初始偏移量,并计算鼠标相对于鼠标移动时的原始偏移量的相对偏移量,然后对元素应用相同的变换。存储开始拖动时鼠标位置与元素左上角之间的距离。然后,只需从鼠标位置减去这些值,即可计算鼠标移动时的元素位置。开始拖动时,存储鼠标位置与元素左上角之间的距离。然后,只需从鼠标位置减去这些值,即可计算鼠标移动时的元素位置。为什么不使用它?我不知道答案是什么?你为什么不使用jquerydraggable?不用重新发明轮子总是好的。或者,您可以参考该代码来帮助解决您的问题。除此之外,代码的工作演示也会很有用@Dutchie432@Chankjh我不想使用它,因为它是一个大规模的应用程序,并且添加了很多不必要的膨胀,另外我想为这个函数添加一些额外的逻辑,例如拖动边界。等等。添加了fiddle来回答。为什么不想使用它?我不知道答案是什么?你为什么不使用jquerydraggable?不用重新发明轮子总是好的。或者,您可以参考该代码来帮助解决您的问题。除此之外,代码的工作演示也会很有用@Dutchie432@Chankjh我不想使用它,因为它是一个大规模的应用程序,并添加了许多不必要的膨胀,加上我想添加一些额外的逻辑这个功能,如拖动边界。等添加小提琴来回答。谢谢。。。要添加到这一点,您需要存储对象的初始偏移量和鼠标的初始偏移量,并计算鼠标相对于
mouseMove
上的原始偏移量的相对偏移量,然后对元素应用相同的变换。是的,一直都是这样。很酷,将其添加到答案中。谢谢。。。要添加到这一点,您需要同时存储对象初始偏移量和鼠标初始偏移量,并计算鼠标相对于mouseMove
上原始对象的相对偏移量,然后对元素应用相同的变换。是的,这是一直以来的方式。酷,在答案中添加了这一点。