拖拽事件与鼠标事件在拖放中的区别

20

最近我开始学习拖放API,并在Youtube上观看了一些教程,从这个视频开始,讲得非常好,我理解了整个拖放循环(Drag Cycle)

但是我看到一些其他教程并没有使用drag,而是使用mouseupmousedownmousemove事件来创建拖放功能。

我目前正在研究Vanilla JS(原生JS编程)

我仍在努力寻找答案:

  1. 为什么要使用mouse事件而不是drag事件?是否有一些只能用mouse事件完成而不能用drag事件的事情?

  2. 如果是这样的话,在什么情况下使用drag不起作用?或者使用mouse事件不起作用?

  3. 如何选择实现拖放功能的方式?使用这两种方法各有什么利弊?

  4. 还有其他方法吗?(我指的是除了mouse事件和drag事件之外)

1个回答

17
我不确定为什么你的问题收到了两个关闭票?我认为这是一个合理的问题,有一个HTML拖放API,但大多数实现使用鼠标事件和绝对定位。你总是可以告诉这一点,因为它们将拖动限制在您开始拖动的浏览器页面上。
HTML5拖放允许您拖动到浏览器之外并与其他应用程序交互。例如,您可以在浏览器选项卡之间拖放,或者您可以从文字处理器中拖放数据,并使用拖放API将其放入Web应用程序中。您还可以从Web应用程序中拖动东西并将其放在本机应用程序上。
您无法使用jquery可拖动API之类的内容执行上述任何操作。例如,如果您想在页面中移动元素,则jquery可拖动方法要容易得多,拖放API将“幽灵”拖动的元素,而如果它是绝对定位,则可以在鼠标移动等时更新其坐标。
这里是一个使用HTML5拖放实现的可排序列表,我几年前就用过这些东西。
我的建议是-如果您想在同一页中移动元素,即重新定位元素,或者您不需要在浏览器选项卡之间拖放或接受来自其他应用程序的数据,则HTML 5 DnD可能会让您感到沮丧。
希望这有所帮助。

哇,谢谢Woody,这帮了我很多。我想在React中使用拖放功能来完成一个个人项目,并从Vanilla JS的基础开始尝试学习它的所有细节。 - Anurag P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接