HTML5 拖放功能实现代码


Posted in HTML / CSS onJuly 14, 2016

在HTML5中,拖放是标准的一部分,任何元素都能够拖放,具体内容如下

1、拖放 

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4. <style type="text/css">  
  5. #div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}   
  6. </style>  
  7. <script>  
  8. function allowDrop(ev)   
  9. {   
  10. ev.preventDefault();   
  11. }   
  12. function drag(ev)   
  13. {   
  14. ev.dataTransfer.setData("Text",ev.target.id);   
  15. }   
  16. function drop(ev)   
  17. {   
  18. ev.preventDefault();   
  19. var data=ev.dataTransfer.getData("Text");   
  20. ev.target.appendChild(document.getElementById(data));   
  21. }   
  22. </script>  
  23. </head>  
  24. <body>  
  25. <p>拖动 W3CSchool.cc 图片到矩形框中:</p>  
  26. <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>  
  27. <br>  
  28. <img id="drag1" src="/images/logo.png" draggable="true" ondragstart="drag(event)" width="336" height="69">  
  29. </body>  
  30. </html>   

2、设置元素为可拖放
 
首先,为了使元素可拖动,把 draggable 属性设置为 true :<img draggable="true">
 
3、拖动什么 - ondragstart 和 setData()
 
然后,规定当元素被拖动时,会发生什么。在上面的例子中,ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。dataTransfer.setData() 方法设置被拖数据的数据类型和值:

JavaScript Code复制内容到剪贴板
  1. function drag(ev)   
  2. {   
  3.    ev.dataTransfer.setData("Text",ev.target.id);   
  4. }    

在这个例子中,数据类型是 "Text",值是可拖动元素的 id ("drag1")。
 
4、放到何处 - ondragover
 
ondragover 事件规定在何处放置被拖动的数据。默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。这要通过调用 ondragover 事件的 event.preventDefault() 方法:event.preventDefault()
 
5、进行放置 - ondrop
 
 当放置被拖数据时,会发生 drop 事件。在上面的例子中,ondrop 属性调用了一个函数,drop(event):

JavaScript Code复制内容到剪贴板
  1. function drop(ev)   
  2. {   
  3. ev.preventDefault();   
  4. var data=ev.dataTransfer.getData("Text");   
  5. ev.target.appendChild(document.getElementById(data));   
  6. }    

代码解释:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
HTML+CSS3 模仿Windows7 桌面效果
Jun 17 HTML / CSS
css3高级选择器使用方法
Dec 02 HTML / CSS
浅析几个CSS3常用功能的写法
Jun 05 HTML / CSS
CSS3制作酷炫的三维相册效果
Jul 01 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 HTML / CSS
Canvas绘制浮动球效果的示例
Dec 29 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
HTML文本属性&amp;颜色控制属性的实现
Dec 17 HTML / CSS
CSS预处理框架——Stylus
Apr 21 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
Nov 11 HTML / CSS
HTML常用标签超详细整理
Mar 19 HTML / CSS
HTML块级标签汇总(小篇)
Jul 13 #HTML / CSS
HTML5进阶段内联标签汇总(小篇)
Jul 13 #HTML / CSS
关于HTML5语义标签的实践(blog页面)
Jul 12 #HTML / CSS
HTML5学习心得总结(推荐)
Jul 08 #HTML / CSS
HTML5之语义标签介绍
Jul 07 #HTML / CSS
HTML5之tabindex属性全面解析
Jul 07 #HTML / CSS
用html5的canvas和JavaScript创建一个绘图程序的简单实例
Jul 06 #HTML / CSS
You might like
?算你??的 PHP 程式大小
2006/12/06 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
Vue实现验证码功能
2019/12/03 Javascript
Python实现邮件的批量发送的示例代码
2018/01/23 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
基于python历史天气采集的分析
2019/02/14 Python
python匿名函数的使用方法解析
2019/10/10 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
python import 上级目录的导入
2020/11/03 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
恶意软件的定义
2014/11/12 面试题
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
责任胜于能力演讲稿
2014/05/20 职场文书
世博会口号
2014/06/20 职场文书
班主任经验交流心得体会
2015/11/02 职场文书