菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML 教程

HTML 首页 HTML 简介 HTML 编辑器 HTML 基础 HTML 元素 HTML 属性 HTML 标题 HTML 段落 HTML 样式 HTML 格式化 HTML 引用 HTML 注释 HTML 颜色 HTML CSS HTML 链接 HTML 图像 HTML 收藏夹图标 HTML 页面标题 HTML 表格 HTML 列表 HTML 块和内联元素 HTML Div HTML 类 HTML Id HTML Iframes HTML JavaScript HTML 文件路径 HTML Head HTML 布局 HTML 响应式 HTML Computercode HTML 语义化 HTML 风格指南 HTML 实体 HTML 符号 HTML 表情符号 HTML 字符集 HTML URL 编码 HTML 与 XHTML

HTML 表单

HTML 表单 HTML 表单属性 HTML 表单元素 HTML 输入类型 HTML 输入属性 输入表单属性

HTML 图形

HTML Canvas HTML SVG

HTML 媒体

HTML 媒体 HTML 视频 HTML 音频 HTML 插件 HTML YouTube

HTML API

HTML 地理定位 HTML 拖放 HTML Web 存储 HTML Web Workers HTML SSE

HTML 示例

HTML 示例 HTML 编辑器 HTML 测验 HTML 练习 HTML 网站 HTML 面试准备 HTML 新兵训练营 HTML 证书 HTML 摘要 HTML 无障碍性

HTML 参考

HTML 标签列表 HTML 属性 HTML 全局属性 HTML 浏览器支持 HTML 事件 HTML 颜色 HTML Canvas HTML 音频/视频 HTML Doctype HTML 字符集 HTML URL 编码 HTML 语言代码 HTTP 消息 HTTP 方法 PX 转 EM 转换器 键盘快捷键

HTML 拖放 API


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


示例

W3Schools

将 W3Schools 图片拖放到矩形框中。


拖放

拖放是一项非常常见的操作。它是指“抓住”一个对象并将其拖动到另一个位置。


浏览器支持

表格中的数字表示完全支持拖放的第一个浏览器版本。

API
拖放 4.0 9.0 3.5 6.0 12.0

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()

执行放置 - 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")
  • 将被拖拽的元素追加到放置元素中

更多示例

示例

如何在两个 <div> 元素之间来回拖动(和放置)图像

自己动手试一试 »

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持