Vue Drag and Drop

1.设置 div 元素允许拖拽

draggable="true"

2.设置元素拖拽开始事件

@dragstart="drag(item.data)"

<div style="border:1px solid green;" draggable="true" @dragstart="dragstart($event, item.data)" @dragend="dragend">
  {{item.data}}
</div>
dragstart (event, data) {
  console.log('drag')
  event.dataTransfer.setData('item', data)
},
dragend (event) {
  event.dataTransfer.clearData()
},

3.在拖放区 drop 事件中获取数据

<div style="border:1px solid red;height: 100px;width:300px;" @drop="drop" @dragover.prevent>
  <p style="color:#ccc;">{{this.dropData}}</p>
</div>
drop (event) {
  console.log('drop')
  let data = event.dataTransfer.getData('item')
  this.dropData = data
  console.log('data: ', data)
}

注意

必须给拖放区元素添加 dragover.prevent,才能使 drop 事件正确执行

一个基于 quill 的拖拽 Demo:

https://github.com/gywgithub/vue-quill-drag-drop

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 拖拽,拖放事件可以通过拖拽实现数据传递,达到良好的交互效果,如:从操作系统拖拽文件实现文件选择,拖拽实现元素布局的...
    ConRon阅读 5,645评论 0 2
  •   HTML5 规范了很多新 HTML 标记。为了配合这些标记的变化,HTML5 规范也用显著篇幅定义了很多 Ja...
    霜天晓阅读 3,984评论 0 1
  • 之前写过一篇浏览器事件的相关操作和事件运行的原理——JavaScript浏览器事件解析。这一篇主要写一些常用的事件...
    faremax阅读 5,568评论 0 0
  • 在h4标准中,我们定义个拖拽事件是很麻烦的,用原生的js来实现拖拽的效果。我们需要计算拖拽的元素的坐标位置和距离之...
    风清扬101阅读 5,211评论 0 0
  • 创建拖放对象 draggable 通过draggable告诉浏览器哪些元素需要实现拖拽功能。有三个可选值: tr...
    闫子扬阅读 3,712评论 0 0