前端必知必会-HTML Drag and Drop API


HTML Drag and Drop API

在 HTML 中,任何元素都可以拖放。

拖放Drag and Drop

拖放是一项非常常见的功能。就是您“抓取”一个对象并将其拖到其他位置。

HTML 拖放示例

以下示例是一个简单的拖放示例:

示例

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
ev.preventDefault();
}

function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>

这似乎很复杂,但让我们来看看拖放事件的各个部分。

使元素可拖动

首先:要使元素可拖动,请将 draggable 属性设置为 true:

<img draggable="true">

拖动内容 - ondragstart 和 setData()

然后,指定拖动元素时应发生的情况。

在上面的示例中,ondragstart 属性调用函数 drag(event),该函数指定要拖动的数据。

dataTransfer.setData() 方法设置拖动数据的数据类型和值:

function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}

在本例中,数据类型为“text”,值是可拖动元素的 id(“drag1”)。

放置位置 - ondragover

ondragover 事件指定可以放置拖动数据的位置。

默认情况下,数据/元素不能放置在其他元素中。要允许放置,我们必须阻止元素的默认处理。

这是通过调用 ondragover 事件的 event.preventDefault() 方法来实现的:

event.preventDefault()

执行 Drop - ondrop

当拖动的数据被放下时,会发生 drop 事件。

在上面的例子中,ondrop 属性调用一个函数 drop(event):

function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}

代码解释:

调用 PreventDefault() 以防止浏览器默认处理数据(默认在放下时打开链接)
使用 dataTransfer.getData() 方法获取拖动的数据。此方法将返回在 setData() 方法中设置为相同类型的任何数据
拖动的数据是拖动元素的 ID(“drag1”)
将拖动元素附加到 drop 元素中


总结

本文介绍了的html Drag and Drop API使用,如有问题欢迎私信和评论

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值