@dragstart 与 @mousedown拖拽事件

2022-12-29 08:19:57

想要实现拖拽效果,可以用@dragstart和 @mousedown两个方法,但是真要使用时,用哪一个呢?具体请看以下两者的区别。

@dragstart使用场景:

  1. 有明确的拖拽区域与界限
  2. 拖拽灵活度要求不高
  3. 拖拽时有明确的数据传递需求

drag推拽事件配置:

发生在拖动元素上的事件

  • @dragstart:拖拽开始事件,可绑定于被拖拽元素上;

  • @dragend:拖拽结束事件,可绑定于被拖拽元素上;

  • @drag:拖拽过程中一直触发;

    事件名 触发时机 触发次数
    dragstart 当拖动开始时触发一次 1
    drag 拖动开始后反复触发 n
    dragend 拖动结束后触发一次 1

发生在目标元素上的事件

  • @dragover:拖拽持续移动事件,建议绑定于可拖放区域(下方灰色块);

  • @dragenter:进入拖放区域,建议绑定于可拖放区域(下方灰色块),该事件仅在进入拖放区域时触发,在其内部移动时不触发,离开某一可拖放区域后再进入时会再次触发;

    事件名 触发时机 触发次数
    dragenter 当拖动元素进入目标时触发一次 1
    dragover 当拖动元素在目标元素范围内时反复触发 n
    drop 拖动元素在目标元素内释放时(在设置了dropover事件的前提下) 1

@mousedown使用场景:

  1. 要有顺畅的拖拽体验
  2. 没有固定的拖拽区域
  3. 不需要传递数据

mousedown推拽事件配置:@mousedown,@mousemove,@mouseup

判断到底使用@dragstart还是使用@mousedown其实很简单,使用@dragstart需要明确是否有被拖拽到的目标范围,比如从一个方块拖到另一个方块范围去。

举个例子:假如我有一个推拽对象需要在整个页面拖动,选择@dragstart还是@mousedown?

答案:@mousedown。全局拖动并不是两个方块之间拖动的关系,用@dragstart无法定位推拽对象是否已经触达被拖动到的目标范围,毕竟全局拖动的话从拖动开始,拖拽对象就已经在里面了。

接下来你是否好区分何时使用@mousedown何时使用@dragstart了呢?

  • 作者:榴莲妹妹是程序媛
  • 原文链接:https://blog.csdn.net/weixin_43964414/article/details/123973027
    更新时间:2022-12-29 08:19:57