H5的drag使用说明和vue2.0拖拽排序示例

本文详细介绍了HTML5的drag API,包括拖放过程中触发的事件、dataTransfer对象及其方法,以及如何在Vue2中实现拖拽排序的示例。通过设置dragstart、drag、dragend等事件,利用dataTransfer对象实现数据交换,配合Vue2的数据绑定和指令,可轻松实现元素的拖拽排序功能。
摘要由CSDN通过智能技术生成

html5 drag api详解 

(引用原文https://www.cnblogs.com/wuya16/p/DragApi.html

     回想下,以前我们是怎么实现拖拽的,主要有以下几步:

     1.目标元素绑定mousedown事件,记录下此时鼠标位置和拖拽元素的位置差,分别是 diffX ,diffY

     2.在mousedown中绑定 document的mousemove 以及mouseup

     3.在mousemove中计算拖拽元素的位置: x = event.clientX - diffX ,y = event.clientY - diffY

     4.mouseup时中销毁绑定的 document mousemove 和mouseup事件,销毁拖拽元素

    当一个元素拖拽的时候,鼠标顺序依次:mousedown,mousemove,mouseup,click , 如果一个元素既可以点击,又需要拖拽,悲剧就发生了。可能导致,我们拖着拖着发生了点击事件,页面跳转了。这时候,我们通常会采用延时操作,避免误操作。总之,处理起来是挺麻烦的。

     现在好了,有了html5 drag,浏览器自动帮我们处理好了。

     要让一个元素支持拖拽,首先我们需要在标签上标示出来:

<div draggable="true"></div>

对于Safari,还必须要在CSS中对能拖拽的元素如下设置:

*[draggable = true] {
    -khtml-user-drag: element;}     

元素在拖放过程中触发的事件

先列下拖拽过程中可能触发的事件,如下:

  1. dragstart:事件主体是被拖放元素,在开始拖放被拖放元素时触发。
  2. darg:事件主体是被拖放元素,在正在拖放被拖放元素时触发。
  3. dragenter:事件主体是目标元素,在被拖放元素进入某元素时触发。
  4. dragover:事件主体是目标元素,在被拖放在某元素内移动时触发。
  5. dragleave:事件主体是目标元素,在被拖放元素移出目标元素是触发。
  6. drop:事件主体是目标元素,在目标元素完全接受被拖放元素时触发。
  7. dragend:事件主体是被拖放元素,在整个拖放操作结束时触发。

其中事件主体是拖放元素的是,dragstart(开始拖动) 、darg(正在拖放) 、dragend(拖放结束),其他4个事件主体都是目标元素,进入、移动、离开、完全进入四个状态。

注意:为了减少事件,你可以在事件 ondragenter 的时候 绑定方法 ,而 ondragleave 的时候,删除 方法。最好不要绑定在 dragover 上,它就像 mouseover ,在拖动的过程中不断触发,对于浏览器的负担就很大了,浏览器还有可能崩溃。

$('.test').on('
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值