元素的拖拽属性和事件

  因为公司的一个项目需求,实现拖拽来交换位置,虽然知道有一些插件,但还是想有没有其它的快速实现方法,因为之前好像有了解过标签的拖拽属性,还稍微有点印象。就想试试。就在这里简单的做个总结。

需要给标签添加 draggable="true"
#### drag事件
  • 当目标元素被拖动时触发该事件
  • 开始拖动时,鼠标不松开,会一直触发该事件
document.addEventListener("drag", function( event ) {
  console.log('拖动目标元素时触发drag事件')
}, false);

dragstart事件

  • 当目标元素开始拖动时触发该事件
document.addEventListener("dragstart", function( event ) {
  console.log('开始拖拽事件')
}, false);

dragover事件

  • 放置目标元素时触发事件,放置到有效的放置目标时
  • 鼠标不松开会一直触发该事件
document.addEventListener("dragover", function( event ) {
  console.log('放置目标元素时触发事件 ')
}, false);

dragenter事件

  • 可拖动的元素进入可放置的目标时触发,即拖动到一个有效的目标上
document.addEventListener("dragenter", function( event ) {
  console.log('当可拖动的元素进入可放置的目标时高亮目标节点')
}, false);

dragleave事件

  • 拖动元素离开可放置目标节点时触发,即离开有效目标时
  • 一个标签相当于一个节点,包含html,body,但是不包含 head、没有高度的标签或者 display 属性为 none 的标签,其中的高度包含了 margin
document.addEventListener("dragleave", function( event ) {
  console.log('当拖动元素离开可放置目标节点,重置其背景')
}, false);

drop事件

  • 将拖动的元素到所选择的放置目标节点中时触发,即将拖动的元素放置到一个有效的目标中时触发
document.addEventListener("drop", function( event ) {
  console.log('将拖动的元素到所选择的放置目标节点中')
}, false);

dragend事件

  • 结束拖拽事件,鼠标松开结束拖动时触发
document.addEventListener("dragend", function( event ) {
    console.log('结束拖拽事件')
}, false);

在vue中相关事件

  • @drag

  • @dragstart

  • @dragover

  • @dragenter

  • @dragleave

  • @drop

  • @dragend

<li
  draggable="true"
  @dragstart="dragstarts($event,index)"
  @dragend="dragengs"
  @dragenter="dragenters($event,index)"
>

MDN链接: https://developer.mozilla.org/zh-CN/docs/Web/API/Document/drag_event

posted @ 2021-07-18 10:18  攻城Alone  阅读(342)  评论(0编辑  收藏  举报