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 相关文章推荐
浅析两列自适应布局的3种思路
May 03 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
CSS3中box-shadow的用法介绍
Jul 15 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
Jan 13 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
Jun 29 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 HTML / CSS
HTML5在a标签内放置块级元素示例代码
Aug 23 HTML / CSS
HTML5中drawImage用法分析
Dec 01 HTML / CSS
Html5之自定义属性(data-,dataset)
Nov 19 HTML / CSS
HTML5在手机端实现视频全屏展示方法
Nov 23 HTML / CSS
CSS控制继承中的height能变为可继承吗
Jun 10 HTML / CSS
Li list-style-image 图片垂直居中实现方法
May 21 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
基于jquery库的tab新形式使用
2012/11/16 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
详解vue 组件注册
2020/11/20 Vue.js
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
python使用super()出现错误解决办法
2017/08/14 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python如何把字符串类型list转换成list
2020/02/18 Python
通过代码实例了解Python异常本质
2020/09/16 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
《木笛》教学反思
2014/03/01 职场文书
应届生求职信范文
2014/05/26 职场文书
简历自我评价优缺点
2015/03/11 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫