文章目录
- HTML Drag and Drop API
- 拖放Drag and Drop
- HTML 拖放示例
- 使元素可拖动
- 拖动内容 - ondragstart 和 setData()
- 放置位置 - ondragover
- 执行 Drop - ondrop
- 总结
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使用,如有问题欢迎私信和评论