不介绍具体情况,先看API,注意看后面括号的说明

  • dragstart:拖拽开始(应用于被拖拽对象)
  • drag:拖拽中(应用于被拖拽对象)
  • dragenter:拖拽到指定位置(应用于拖拽目标)
  • dragleave:拖拽离开指定位置(应用于拖拽目标)
  • dragover:拖拽在指定位置(应用于拖拽目标)
  • drop:在指定位置释放(应用于拖拽目标)
  • dragend:拖拽结束(应用于被拖拽对象)

事件

描述

目标

dragstart

开始拖对象时触发

被拖动对象

dragenter

当对象第一次被拖动到目标对象上时触发,同时表示该目标对象允许‘放’这动作

目标对象

dragover

当对象拖动到目标对象时触发

当前目标对象

dragleave

在拖动过程中,当被拖动对象离开目标对象时触发

先前目标对象

drag

每次当对象被拖动时就会触发

被拖动对象

drop

当发生“放”这动作时触发

当前目标对象

dragend

在拖放过程,松开鼠标时触发

被拖动对象

使用方法

在需要被拖拽的对象上设置属性draggable="true",但设置此属性后,对象将不能被选中。

使用范围

不是所有的object都支持的,通常支持块,比如div p span,但不支持select option等,但可以把他们放到div里面。

例子见代码

  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head runat="server">
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. window.onload = function () {
  10. var obj = document.getElementById("obj");
  11. var left = document.getElementById("left");
  12. var right = document.getElementById("right");
  13. //设置拖拽的对象的光标
  14. obj.style.cursor = "move";
  15. obj.ondragstart = function (e) {//事件顺序:1
  16. //设置内容,非必要,前为格式,后为值,取值为text|URL对应是text/plain|text/url-list,实际可为MIME,不同类型可同时保存
  17. e.dataTransfer.setData("text", obj.id);
  18. /*被拖动的元素能执行的行为,包括
  19. none:不能把拖动的元素放在这里。这是除了文本框之外所有元素默认的值。
  20. move:应该把拖动的元素移动到放置目标。
  21. copy:应该把拖动的元素复制到放置目标。
  22. link:放置目标会打开拖动的元素(但拖动的元素必须是个链接,有URL地址)。
  23. 把元素拖动到放置目标上的时候,以上每一个值都会导致光标显示为不同的符号。
  24. */
  25. e.dataTransfer.dropEffect = "move";
  26. /*仅设置dropEffect是无效的,需要结合effectAllowed,此属性表示允许拖动元素的那种行为,即移动此物体到能带有ondrop事件的物体上空时鼠标下方显示的样式,
  27. 取值如下
  28. uninitialized:没有给被拖动元素设置任何放置行为。
  29.    none:被拖动的元素不能有任何行为
  30.    copy:只允许值为”copy”的dropEffect。
  31.    link:只允许值为”link”的dropEffect。
  32.    move:只允许值为”move”的dropEffect。
  33.    copyLink:允许值为”copy”和”link”的dropEffect。
  34.    copyMove:允许值为”copy”和”move”的dropEffect。
  35.    linkMove:允许值为”link”和”move”的dropEffect。
  36.    all:允许任意dropEffect。
  37.    要设置effectAllowed属性必须在ondragstart事件处理程序中设置。
  38. */
  39. e.dataTransfer.effectAllowed = "move";
  40. //e.dataTransfer.setDataImage(Element image,long x,long y);//设置拖拽显示的替代图像。存在兼容问题
  41. //e.dataTransfer.addElement(Element element);//设置在拖放的同时更随拖放的对象。存在兼容问题
  42. return true;
  43. };
  44. obj.ondrag = function (e) {//事件顺序:2
  45. //只要拖着没放,就一直执行,无论在那个对象上方
  46. };
  47. obj.ondragend = function (e) {//事件顺序:6
  48. //拖放完成了,清理工作
  49. e.dataTransfer.clearData("text");//不清理应该也没问题,会自动清理
  50. };
  51. left.ondragenter=right.ondragenter = function (e) {//事件顺序:3
  52. this.style.backgroundColor = "rgb(230,230,230)";
  53. };
  54. left.ondragover = right.ondragover = function (e) {//事件顺序:4
  55. e.preventDefault();//必须设置,否则无法执行ondrop
  56. //这里设置当拖动的物体在目标物体上方移动时的代码
  57. };
  58. left.ondragleave = right.ondragleave = function (e) {//事件顺序:5(并列)
  59. this.style.backgroundColor = "";
  60. }
  61. left.ondrop = right.ondrop = function (e) {//事件顺序:5(并列)
  62. //e.dataTransfer.files如果是文件拖拽,可以读取
  63. this.style.backgroundColor = "";
  64. var id = e.dataTransfer.getData("text");
  65. var element = document.getElementById(id);
  66. if (element.parentElement&&element.parentElement!=this)
  67. element.parentElement.removeChild(element);
  68. this.appendChild(element);//同一对象重复添加不会错
  69. };
  70. };
  71. </script>
  72. <div id="left" style="width:150px;height:200px;border:1px solid black;float:left;">
  73. <span id="obj" draggable="true" style="border:2px dotted gray;">测试文字</span>
  74. </div>
  75. <div id="right"style="width:150px;height:200px;border:1px solid black;float:left;">
  76.  
  77. </div>
  78. </body>
  79. </html>

关于HTML5的拖拽的更多相关文章

  1. HTML5之拖拽(兼容IE和非IE)

    前世:项目中需要拖动div,然后和某个div进行位置交换,这不是关键,关键是还要保存位置,然后在下次打开的时候按照保存的位置显示.还好本人功力深厚,一下子就想到了用localStorage来保存,事实 ...

  2. html5 文件拖拽上传

    本文首先发表在  码蜂笔记 : http://coderbee.net/index.php/web/20130703/266 html5 文件拖拽上传是个老话题了,网上有很多例子,我一开始的代码也是网 ...

  3. 基于html5可拖拽图片循环滚动切换

    分享一款基于html5可拖拽图片循环滚动切换.这是一款支持手机端拖拽切换的网站图片循环滚动特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="s ...

  4. [开源应用]利用HTTPHandler+resumableJs+HTML5实现拖拽上传[大]文件

    前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性提交所有的内容进内存是不现实的.大文件带来问题还有是否支持断点传输和多文件同时传输. 本文以resumableJs为例,介绍了如何在ASP. ...

  5. HTML5图片拖拽预览原理及实现

    一.前言 这两天恰好有一位同事问我怎样做一个图片预览功能.作为现代人的我们首先想到的当然是HTML5啦,其实HTML5做图片预览已经是一个老生常谈的问题了.我在这里就简单说说其中相关的一些东西,当然会 ...

  6. HTML5文件拖拽

    HTML5新增的File API, 可以获取名称.文件大小.类型等信息,需先对DOM中的Element进行拖拽事件绑定 相关API 首先获取节点,绑定拖动到该节点的事件,可以改变鼠标形状 var dr ...

  7. HTML5 实现拖拽

    如图 可以从第一个方框拖拽花色到第二个方框中. 也可以再拖动回来. 具体代码实现 index.html <!DOCTYPE HTML> <html> <head> ...

  8. html5实现拖拽文件上传

    以下是自学it网--中级班上课笔记 网址:www.zixue.it html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...

  9. HTML5原生拖拽/拖放⎡Drag & Drop⎦详解

    前言 拖放(drap && drop)在我们平时的工作中,经常遇到.它表示:抓取对象以后拖放到另一个位置.目前,它是HTML5标准的一部分.我从几个方面学习并实践这个功能. 拖放的流程 ...

  10. HTML5原生拖拽/拖放(drag & drop)详解

    前言 拖放(drap && drop)在我们平时的工作中,经常遇到.它表示:抓取对象以后拖放到另一个位置.目前,它是HTML5标准的一部分.我从几个方面学习并实践这个功能. 拖放的流程 ...

随机推荐

  1. html页面输入框input的美化

    input输入框是网页必不可少的组件,可是每个浏览器对于输入框的显示样式各有不同 例如:    上图分别就是谷歌浏览器和IE浏览器自带显示的输入框,样式也不足人意,所以大多都会自己写样式 以下是一个简 ...

  2. <<< tomcat启动报错StandardServer.await: create[8005]

    启动tomcat的时候出现异常 严重: StandardServer.await: create[8005]: java.net.BindException: Address already in u ...

  3. php多文件压缩下载

    /*php多文件压缩并且下载*/ function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. whil ...

  4. RDBMS DML DDL

    RDBMS RDBMS 指的是关系型数据库管理系统. RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL ...

  5. HTML5的属性

    一.全局属性 1.class属性 class属性对元素指定CSS类选择器 <!doctype html> <html> <meta charset="utf-8 ...

  6. C语言基础(4)-原码,反码,补码及sizeof关键字

    1. 原码 +7的原码是0000 0111 -7的原码是1000 0111 +0的原码是0000 0000 -0的原码是1000 0000 2. 反码 一个数如果值为正,那么反码和原码相同. 一个数如 ...

  7. Codeforces Round #277.5 (Div. 2) ABCDF

    http://codeforces.com/contest/489 Problems     # Name     A SwapSort standard input/output 1 s, 256 ...

  8. MySQL检查重复索引工具-pt-duplicate-key-checker

    在MySQL中是允许在同一个列上创建多个索引的,示例如下: mysql --socket=/tmp/mysql5173.sock -uroot -p mysql> SELECT VERSION( ...

  9. 【Python基础学习四】字符串(string)

    Python 字符串 字符串是 Python 中最常用的数据类型.可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'hello' va ...

  10. 【Maven】运行项目

    1.run as maven clean 清除原有的编译结果重新编译一次. 2.run as maven bulid.. goals:package tomcat7:deploy 打包到Tomcat7 ...