拖放(Drag 和 drop)是 HTML5 标准的组成部分。
拖放
拖放是一种常见的特性,即抓取对象以后拖到另一个位置。
在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。
浏览器支持
Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。
注释:在 Safari 5.1.2 中不支持拖放。
HTML5 拖放实例
下面的例子是一个简单的拖放实例:
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> 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")
- 把被拖元素追加到放置元素(目标元素)中
来回拖动图片:
<!DOCTYPE HTML> <html> <head> <style type="text/css"> #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} </style> <script type="text/javascript"> 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)"> <img src="/i/w3school_logo_black.gif" draggable="true" ondragstart="drag(event)" id="drag1" /> </div> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div> </body> </html>
相关推荐
第15章 HTML 5中的文件与拖放 280 视频讲解:40分钟 15.1 选择文件 281 15.1.1 通过file对象选择文件 281 15.1.2 使用blob接口获取文件的类型与大小 282 15.1.3 通过类型过滤选择的文件 283 15.2 ...
这个"HTML5教程——不错的教材"压缩包提供了一份详细的PDF教程,对于想要学习或深入了解HTML5的初学者来说,是一份非常有价值的资源。 HTML5的主要改进包括以下几个方面: 1. **语义化标签**:HTML5引入了一系列新...
这个“HTML5期末大作业:网站——个人博客”项目显然旨在让学生掌握并实践HTML5的相关知识,通过创建一个完整的个人博客网站来提升技能。在这个项目中,我们可以探讨以下几个关键知识点: 1. **HTML5结构元素**:...
10【深入学习】HTML5 的拖放功能视频教程(英语) 11【HTML5 教程】HTML5 Tutorial 共53集(英语) 12【深入学习】HTML5.Geolocation地理定位视频教程(英语) ===2:书籍教程资料 + 源代码=== 01《HTML5高级程序...
HTML5是互联网技术的重要里程碑,它是对HTML4.01和XHTML1.0的显著升级,旨在提供更丰富的用户体验,同时减少对第三方浏览器插件的依赖,特别是像Flash、Silverlight和JavaFX这样的插件。HTML5的核心目标是增强网页的...
网页模板——HTML5实现手机身份证表单上传提交特效源码是一个专为移动设备设计的交互式前端开发资源,它利用了HTML5的先进特性和功能,以提供一个流畅且直观的用户界面,使得用户能够方便地上传身份证图片,并进行...
5. **HTML5拖放**(第5章):HTML5提供了拖放API,使得用户可以直接在浏览器中拖动元素,实现文件或数据的移动和复制,增强了网页的交互性。 6. **HTML5音频和视频**(第6章):和元素是HTML5的亮点,它们结束了...
这个压缩包包含三份关于HTML5学习的重要文档,分别是“HTML5权威指南”、“[HTML+5+从入门到精通]”以及“WebQQ_3.0:让html5改变你对Web的看法”。 首先,“HTML5权威指南”很可能详尽介绍了HTML5的新特性、语义化...
"html5.rar_H.3155.com HTML5_HTML5 小游戏_HTML5小游戏_html5_html5 game m"这个压缩包文件包含了一个使用HTML5开发的小游戏——超级玛丽的实现。超级玛丽是经典的平台跳跃游戏,通过HTML5的重构,可以在现代浏览器...
### HTML5及CSS3 Web前端开发技术习题答案解析 #### 1. HTML5与HTML4的主要区别及其解决的问题 HTML5与HTML4相比,在Web前端开发领域解决了多个关键问题,主要包括: - **浏览器间的兼容性问题**:早期不同浏览器...
本合集包含了三款著名的HTML5上传组件——html5uploader、Huploadify和webuploader,它们各自拥有独特的特性和功能,适用于不同的项目需求。 1. html5uploader: 这是一个基于HTML5 File API的轻量级上传组件,它...
本文将深入探讨HTML5后端模板以及它与CSS的结合使用,特别是针对简洁大气的后台模板——HPlus。 HTML5是超文本标记语言的最新版本,它在HTML4的基础上引入了许多新特性,旨在提升网页的互动性和可用性。这些新特性...
总的来说,这个"ASP实例开发源码——创意几何色块html5网站源码 asp版 v2.0"是一个很好的学习资源,有助于提升开发者在ASP和HTML5方面的综合能力。通过实际操作,开发者可以深入理解这两种技术的融合,从而更好地...
在IT领域,HTML5的拖放(Drag and Drop)功能是一项强大的交互技术,它允许用户通过鼠标或触摸操作移动元素。然而,原生的HTML5拖放API在处理多个元素和键盘交互方面存在局限,这可能导致对无障碍性(accessibility...
HTML5作为最新的超文本标记语言版本,它引入了许多新特性,如语义化标签(如、、等)、离线存储(Application Cache)、拖放功能、媒体元素(、)以及新的表单控件等。这些特性使得HTML5在创建富媒体和高性能应用时...
也可能包含对其他HTML5特性的支持,比如离线存储(Application Cache)、拖放功能(Drag and Drop API)、媒体元素(和)以及画布(Canvas)等。通过这种方式,HTML5.js可以帮助开发者构建更加现代、功能丰富的Web...
动态网页设计与制作是互联网开发领域中的核心技能之一,它涉及到HTML5、CSS3和JavaScript等关键技术。这些技术的结合使得网页不仅具有丰富的视觉效果,还能实现交互性和动态功能。以下将详细介绍这些知识点: HTML5...