×
HTML 教程HTML 简介HTML 编辑器HTML 基础HTML 元素HTML 属性HTML 标题HTML 段落HTML 文本格式化HTML 链接HTML 头部HTML CSSHTML 图像HTML 表格HTML 列表HTML 区块HTML 布局HTML 表单HTML 框架HTML 颜色HTML 颜色名HTML 颜色值HTML 脚本HTML 字符实体HTML URLHTML 速查列表HTML 总结XHTML 简介

HTML5 简介

HTML5 简介HTML5 浏览器支持HTML5 新元素HTML5 CanvasHTML5 内联 SVGHTML5 拖放HTML5 地理定位HTML5 Video(视频)HTML5 Audio(音频)HTML5 Input 类型HTML5 表单元素HTML5 表单属性HTML5 语义元素HTML5 Web 存储HTML5 应用程序缓存HTML5 Web WorkersHTML5 SSEHTML5 WebSocketHTML(5) 代码规范

HTML 媒体

HTML 媒体(Media)HTML 对象HTML 音频(Audio)HTML视频(Videos)播放HTML 实例

HTML 参考手册

HTML 标签列表(字母排序) HTML 标签列表(功能排序) HTML 属性 HTML 事件 HTML 画布 HTML 音频/视频 HTML 有效DOCTYPES HTML 颜色名 HTML 拾色器 HTML 字符集 HTML ASCII HTML ISO-8859-1 HTML 符号 HTML URL 编码 HTML 语言代码 HTTP 消息 HTTP 方法 键盘快捷键 

HTML5 拖放



拖放(Drag 和 drop)是 HTML5 标准的组成部分。


将w3cschool图标拖动到矩形框中。


拖放

拖放是一种常见的特性,即抓取对象以后拖到另一个位置。

在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。


浏览器支持

Internet ExplorerFirefoxOperaGoogle ChromeSafari

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

注意:Safari 5.1.2不支持拖动.


HTML5 拖放实例

下面的例子是一个简单的拖放实例:

实例

<!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() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
  • 通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
  • 被拖数据是被拖元素的 id ("drag1")
  • 把被拖元素追加到放置元素(目标元素)中


Examples

更多实例

来回拖放图片
如何在两个 <div> 元素之间拖放图像。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)