html5——拖拽 / 拖拽排序
html5 2017-01-16 13:44:42

简单demo:

div拖动排序

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE HTML>  
  2. <html>  
  3.   
  4.     <head>  
  5.   
  6.         <script type="text/javascript">  
  7.             function allowDrop(ev) {  
  8.                 ev.preventDefault();  
  9.             }  
  10.   
  11.             var srcdiv = null;  
  12.   
  13.             function drag(ev, divdom) {  
  14.                 srcdiv = divdom;  
  15.                 ev.dataTransfer.setData("text/html", divdom.innerHTML);  
  16.             }  
  17.   
  18.             function drop(ev, divdom) {  
  19.                 ev.preventDefault();  
  20.                 if(srcdiv != divdom) {  
  21.                     srcdiv.innerHTML = divdom.innerHTML;  
  22.                     divdom.innerHTML = ev.dataTransfer.getData("text/html");  
  23.                 }  
  24.             }  
  25.         </script>  
  26.     </head>  
  27.   
  28.     <body>  
  29.   
  30.         <div style="width: 50px;height:50px;" ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)">  
  31.             div1!  
  32.         </div>  
  33.         <div style="width: 50px;height:50px;" ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)">  
  34.             div2!  
  35.         </div>  
  36.         <div style="width: 50px;height:50px;" ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)">  
  37.             div3  
  38.         </div>  
  39.   
  40.     </body>  
  41.   
  42. </html>  

 

上面函数介绍:

ondrop: 当放置被拖数据时,会发生 drop 事件,这里自定义

drop(event,this)函数,互换两个的innerHTML

ondragover:当拖动链接等有默认事件的元素时,要在ondragover事件中用ev.preventDefault()阻止默认事件。否则drop事件不会触发。

draggable:允许拖动。

ondragstart:规定当元素被拖动时,会发生什么。在上面的例子中,ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。dataTransfer.setData() 方法设置被拖数据的数据类型和值。

 

运行demo:


提示:可以修改后运行.

 

 

 


 

 1、源代码:

JavaScript Code复制内容到剪贴板
  1. <script>  
  2.     var eleDustbin = $(".dustbin")[0], eleDrags = $(".draglist"), lDrags = eleDrags.length, eleRemind = $(".dragremind")[0], eleDrag = null;  
  3.     for (var i=0; i<lDrags; i+=1) {  
  4.         //得到聚焦事件| selectstart事件  
  5.         eleDrags[i].onselectstart = function() {  
  6.             console.log("1");  
  7.             return false;  
  8.         };  
  9.         //  ondragstart| 用户启动拖动操作时发生  
  10.         eleDrags[i].ondragstart = function(ev) {  
  11.             ev.dataTransfer.effectAllowed = "move";  
  12.             ev.dataTransfer.setData("text", ev.target.innerHTML);  
  13.             ev.dataTransfer.setDragImage(ev.target, 0, 0);  
  14.             eleDrag = ev.target;  
  15.             return true;  
  16.         };  
  17.         // ondragend| 当用户已经完成了拖动操作(释放鼠标按钮或按下ESC)事件  
  18.         eleDrags[i].ondragend = function(ev) {  
  19.             ev.dataTransfer.clearData("text");  
  20.             eleDrag = null;  
  21.             return false  
  22.         };  
  23.     }  
  24.     eleDustbin.ondragover = function(ev) {  
  25.         ev.preventDefault();  
  26.         return true;  
  27.     };  
  28.   
  29.     eleDustbin.ondragenter = function(ev) {  
  30.         this.style.color = "#ffffff";  
  31.         return true;  
  32.     };  
  33.     eleDustbin.ondrop = function(ev) {  
  34.         if (eleDrag) {  
  35.             eleRemind.innerHTML = '<strong>"' + eleDrag.innerHTML + '"</strong>被扔进了垃圾箱';  
  36.             eleDrag.parentNode.removeChild(eleDrag);  
  37.         }  
  38.         this.style.color = "#000000";  
  39.         return false;  
  40.     };  
  41. </script>  

 

2、分解——ondragstart:

ondragstart  用户启动拖动操作事件

 

dataTransfer.effectAllowed  代表所允许的拖动操作 none/copy/copyLink/copyMove/link/linkMove/move/all/uninitialized

 

none ——该项目可能无法删除

copy 复制 —— 可以在新位置创建源项目的副本

copyLink 复制链接 —— 允许复制或链接操作

copyMove —— 允许复制或移动操作

link 链接 —— 可以在新位置处建立到源的链接

linkMove —— 允许链接或移动操作

move 移动 —— 项目可以移动到新位置

all —— 允许所有操作

uninitialized 未初始化—— 当效果尚未设置时的默认值,等效于全部

 

dataTransfer.setData 对拖动的元素指定类型和数据(格式,数据) /  同时还有getData()与clearData()

 

dataTransfer.setDragImage 执行拖动和指定坐标dataTransfer.setDragImage(IMG,xOffset,yOffset)

img —— 图像Element元素用于拖动反馈的图像

xOffset —— 一个long指示水平图像中的偏移量

yOffset —— 一个long指示垂直图像中的偏移量

 

本文来自于:http://www.yoyo88.cn/study/html5/68.html

上一篇 返回列表
Powered by yoyo苏ICP备15045725号