Menu
×
   ❮     
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 计算机代码 HTML 语义 HTML 样式指南 HTML 实体 HTML 符号 HTML 表情符号 HTML 字符集 HTML URL 编码 HTML vs. XHTML

HTML 表单

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

HTML 图形

HTML 画布 HTML SVG

HTML 媒体

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

HTML API

HTML 地理位置 HTML 拖放 HTML 网页存储 HTML 网页工作线程 HTML SSE

HTML 示例

HTML 示例 HTML 编辑器 HTML 测验 HTML 练习 HTML 网站 HTML 面试准备 HTML 集训营 HTML 证书 HTML 总结 HTML 可访问性

HTML 参考

HTML 标签列表 HTML 属性 HTML 全局属性 HTML 浏览器支持 HTML 事件 HTML 颜色 HTML 画布 HTML 音频/视频 HTML 文档类型 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),该函数指定了要拖动的数据。

The dataTransfer.setData() 方法设置了被拖动数据的类型和值。

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

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


放置位置 - ondragover

The 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> 元素之间来回拖动(和放置)。

试一试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.