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 相关文章推荐
css3中用animation的steps属性制作帧动画
Apr 25 HTML / CSS
纯CSS3实现地球自转实现代码(图文教程附送源码)
Dec 26 HTML / CSS
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
Feb 04 HTML / CSS
基于CSS3实现立方体自转效果
Mar 01 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
Jul 05 HTML / CSS
CSS3绘制六边形的简单实现
Aug 25 HTML / CSS
css3 盒模型以及box-sizing属性全面了解
Sep 20 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
Mar 11 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
Apr 04 HTML / CSS
iframe跨域的几种常用方法
Nov 11 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
Apr 23 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 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中调用JAVA
2006/10/09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php三元运算符知识汇总
2015/07/02 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
Node做中转服务器转发接口
2017/10/18 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Python中with及contextlib的用法详解
2017/06/08 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python自定义时钟类、定时任务类
2021/02/22 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
python 爬取小说并下载的示例
2020/12/07 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
员工安全承诺书
2014/05/22 职场文书
车间质检员岗位职责
2015/04/08 职场文书
小学语文教学随笔
2015/08/14 职场文书