H5鼠标拖动事件(drag)

一、元素拖动

HTML5已经完全支持鼠标拖动元素,其中图片和链接默认就支持拖拽,而其他的元素需要设置属性draggable=“true” 就可支持拖拽。其中在拖拽的过程中会默认触发一系列事件。

二、相关事件

1.拖拽元素

被拖拽的元素自身

<div
  id="box"
  draggable="true"
  style="width: 100px;height: 100px;background: greenyellow" 
  ondragstart="dragStart(event)" 
  ondrag="drag(event)" 
  ondragend="dragEnd(event)"
  ></div>
  // 拖拽开始
  function dragStart(e) {
    console.log('dragStart:', e.target);
  }
  // 拖拽中
  function drag(e) {
    console.log('drag:', e.target);
  }
  // 拖拽结束
  function dragEnd(e) {
    console.log('dragEnd:', e.target);
  }

在这里插入图片描述

(1)dargstart

在draggable元素上按下鼠标, 开始移动时, 触发一次. (在firefox上需拖动几个像素后才触发此事件)。
event.traget 是draggable元素本身。

(2)drag

拖动draggable元素过程中时, 移动一像素就触发一次。
event.traget 是draggable元素本身。

(3)dragend

释放draggable元素时触发一次.
event.traget 是draggable元素本身;

2.目标元素

拖拽到或者拖拽过程中经过的元素

(1)drop

释放draggable元素时触发一次, event.traget 是鼠标释放时指向的任何元素, 除了body。
注:想要触发drop必须阻止dropover的默认默认行为

<div
  id="box"
  draggable="true"
  style="width: 100px;height: 100px;background: greenyellow"
  ondrop="boxDrop(event)"
></div>
<div
  style="width: 500px;height: 500px;background: #e68900;"
  ondragover="dragOver(event)"
  ondrop="boxDrop(event)"
></div>
function boxDrop(e) {
  console.log('drop', e.target);
}
function dragOver(e) {
  console.log('dragOver', e.target);
  e.preventDefault()
}

在这里插入图片描述

(2)dragover

dragover 拖动时在某元素上移动。event.traget 是目标元素。移动1px触发一次
代码同上

(3)dragenter

拖动时进入某元素范围,触发一次, event.traget 是目标元素。

<div
  id="box"
  draggable="true"
  style="width: 100px;height: 100px;background: greenyellow"
  ondrop="boxDrop(event)"
></div>
<div
  style="width: 500px;height: 500px;background: #e68900;"
  ondragenter="dragEnter(event)"
  ondragleave="dragLeave(event)"
></div>
  function dragEnter(e) {
    console.log('dragEnter', e.target);
  }
  function dragLeave(e) {
    console.log('dragLeave', e.target);
  }

在这里插入图片描述

(3)dragleave

拖动时离开某元素范围,触发一次, event.traget 是目标元素。
代码同上

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值