HTML5原生的Drag和Drop,5分钟弄清楚html5的drag and drop(小结)

5分钟弄清楚html5的drag and drop,及其他监听事件和执行的次序。

定义和用法

在拖放的过程中会触发以下事件:

在拖动目标上触发事件 (源元素):

ondragstart - 用户开始拖动元素时触发

ondrag - 元素正在拖动时触发

ondragend - 用户完成元素拖动后触发

释放目标时触发的事件:

ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件

ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件

ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件

ondrop - 在一个拖动过程中,释放鼠标键时触发此事件

浏览器支持

Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持拖动。

注意:Safari 5.1.2不支持拖动;在拖动元素时,每隔 350 毫秒会触发 ondragover 事件。

示例如下:

51c67978e8d9829656840a5db4275080.png

5分钟drag and drop简明示例

#draggable {

width: 200px;

height: 20px;

text-align: center;

background: white;

}

.dropzone {

width: 200px;

height: 20px;

background: blueviolet;

margin-bottom: 10px;

padding: 10px;

}

var dragged;

document.addEventListener("dragstart", function (event) {

console.log('==========dragstart 开始被拖拽==========一次拖动只执行一次');

// 保存拖动元素的引用(ref.)

dragged = event.target;

// 使其半透明

event.target.style.opacity = .5;

}, false);

/* 拖动目标元素时触发drag事件 */

document.addEventListener("drag", function (event) {

// console.log('==========drag==========拖拽时会一直监听,直到放下元素');

}, false);

/* 放置目标元素时触发事件 */

document.addEventListener("dragover", function (event) {

// console.log('==========dragover==========拖拽时会一直监听,直到放下元素');

// 阻止默认动作以启用drop

event.preventDefault();

}, false);

document.addEventListener("dragenter", function (event) {

console.log('==========dragenter 拖曳元素 进入目标元素==========对应着dragleave');

// 当可拖动的元素进入可放置的目标时高亮目标节点

if (event.target.className == "dropzone") {

event.target.style.background = "purple";

}

}, false);

document.addEventListener("dragleave", function (event) {

console.log('==========dragleave 拖曳元素 离开目标元素==========对应着dragenter');

// 当拖动元素离开可放置目标节点,重置其背景

if (event.target.className == "dropzone") {

event.target.style.background = "";

}

}, false);

document.addEventListener("drop", function (event) {

console.log('==========drop 放下元素==========一次拖动只执行一次,在dragenter前触发');

// 阻止默认动作(如打开一些元素的链接)

event.preventDefault();

// 将拖动的元素到所选择的放置目标节点中

if (event.target.className == "dropzone") {

event.target.style.background = "";

dragged.parentNode.removeChild(dragged);

event.target.appendChild(dragged);

}

}, false);

document.addEventListener("dragend", function (event) {

console.log('==========dragend 结束拖拽==========一次拖动只执行一次');

// 重置透明度

event.target.style.opacity = "";

}, false);

这是可以拖拽的DIV

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值