参考资料:

   张鑫旭             : http://www.zhangxinxu.com/wordpress/2011/02/html5-drag-drop-%E6%8B%96%E6%8B%BD%E4%B8%8E%E6%8B%96%E6%94%BE%E7%AE%80%E4%BB%8B/

     ^_^肥仔John  :  http://www.cnblogs.com/fsjohnhuang/p/3961066.html

     File API          : http://www.ibm.com/developerworks/cn/web/1101_hanbf_fileupload/

 

浏览器内拖拽

Demo : Demo 

浏览器内拖拽Demo截图:

html5 - drag 拖拽

代码:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Document</title>
  6     <style>
  7     *{ margin:0;padding:0; }
  8     li{ list-style: none; }
  9     .cr:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0;}
 10     .cr{*zoom:1;}
 11 
 12     .conter{ width:900px; margin:0 auto; }
 13     .left{ float: left;width:420px;}
 14     .right{ float:right;width:420px; }
 15     .left h2{margin-top:50px}
 16     .ul{ margin:50px 0;  }
 17     .ul li{ height:30px;line-height:30px; font-size: 14px; text-align: center; border:1px solid #333; margin-top:-1px; }
 18     .remove{  }
 19     .remove .ul{ margin:0;min-height: 60px; border:1px solid #333; }
 20     .ul.auto{ min-height:30px; border:none; }
 21     .img{ position: absolute;left:0;top:0px;}
 22     </style>
 23     <script>
 24     window.onload = function(){
 25 
 26         var oUl = document.getElementById('ul');
 27         var aLis = null;
 28         var oRemove = document.getElementById('remove');
 29         var oImg = document.getElementById('img');
 30         var oUl2 = document.getElementById('ul2');
 31         var arrTop;
 32         var lastT = 0;
 33         var btn = false;
 34 
 35         setLiTop();
 36 
 37         function setLiTop (){
 38 
 39             arrTop = [];
 40             btn = false;
 41             aLis = oUl.getElementsByTagName('li');
 42 
 43             for( var i=0;i<aLis.length;i++ ){
 44 
 45                 aLis[i].index = i;
 46 
 47                 var top = aLis[i].offsetTop;
 48 
 49                 arrTop.push( top );
 50 
 51             }
 52 
 53             for( var i=0;i<aLis.length;i++ ){
 54 
 55                 aLis[i].ondragstart = function( ev ){
 56 
 57                     var ev = window.event || ev;
 58 
 59                     this.style.background = '#ccc';
 60 
 61                     var t = -this.offsetHeight/2;
 62 
 63                     var l = -this.offsetWidth/2;
 64 
 65                     ev.dataTransfer.setData('index',this.index); // 设置数据,可以看成一个json;
 66 
 67                     ev.dataTransfer.effectAllowed  = 'move'; //设置鼠标样式
 68 
 69                     ev.dataTransfer.setDragImage(oImg,oImg.offsetWidth/2,0); //设置托转出的假图片企业也没多大用 详细文章:http://blog.csdn.net/isaisai/article/details/39892427 
 70 
 71                 }
 72                 
 73                 aLis[i].ondragover = function( ev ){
 74 
 75                     var ev = window.event || ev;
 76 
 77                     lastT = this.offsetTop;
 78 
 79                     ev.preventDefault();
 80 
 81                 }
 82                 
 83                 aLis[i].ondragend = function( ev ){
 84 
 85                     this.style.background = '';
 86 
 87                     var ev = window.event || ev;
 88 
 89                 
 90                     for( var i=0,len=aLis.length;i<len;i++ ){
 91 
 92                         if( lastT == arrTop[i] ){
 93 
 94                             if( !btn ){
 95                                 
 96                                 if( i == 0){
 97                                  
 98                                     oUl.insertBefore( this, aLis[i] );
 99                                 
100                                 }else{
101 
102                                     oUl.insertBefore( this, aLis[i+1] );
103 
104                                 }
105                                 
106                                 setLiTop();
107 
108                             }
109                         }
110                     }
111 
112                     setLiTop();
113 
114                 }
115 
116             }    
117 
118         }
119         
120         
121         oUl2.ondragenter = function(){
122 
123             this.style.backgroundColor = 'red';
124             btn = true;
125 
126         }
127 
128         
129 
130         oUl2.ondragover = function(ev){
131 
132             var ev = window.event || ev;
133             ev.preventDefault();
134 
135         }
136         
137         oUl2.ondragleave = function(){
138         
139             this.style.background = '';
140 
141             btn = false;
142             
143         };
144 
145         oUl2.ondrop = function(ev){
146 
147             this.className = 'ul auto';
148 
149             var index =  parseInt( ev.dataTransfer.getData('index') ); // 取数据
150 
151             var oLi = document.createElement('li');
152 
153             oLi.innerHTML = aLis[index].innerHTML;
154 
155             oUl.removeChild(aLis[index]);
156 
157             oUl2.appendChild( oLi );
158 
159             this.style.background = '';
160             
161         }
162 
163 
164     }
165 
166 
167     </script>
168 </head>
169 <body>
170     <div class="conter cr">
171         <div class="left">
172             <h2>
173                 删除列表
174             </h2>
175             <div class="remove" id="remove">
176                 <ul class="ul" id="ul2">
177 
178                 </ul>
179             </div>
180         </div>
181 
182         <div class="right">
183 
184             <ul class="ul" id="ul">
185                 <li draggable="true">
186                     音乐播放列表1
187                 </li>
188                 <li draggable="true">
189                     音乐播放列表2
190                 </li>
191                 <li draggable="true">
192                     音乐播放列表3
193                 </li>
194                 <li draggable="true">
195                     音乐播放列表4
196                 </li>
197                 <li draggable="true">
198                     音乐播放列表5
199                 </li>
200                 <li draggable="true">
201                     音乐播放列表6
202                 </li>
203                 <li draggable="true">
204                     音乐播放列表7
205                 </li>
206             </ul>
207             <img id="img" src="http://static.cnblogs.com/images/logo_small.gif" alt="" >
208         </div>
209         
210     </div>
211 
212     
213 </body>
214 </html>
View Code

相关文章:

  • 2021-12-22
  • 2021-07-27
  • 2022-12-23
  • 2021-12-22
  • 2021-12-02
  • 2021-12-02
  • 2021-12-02
猜你喜欢
  • 2021-12-12
  • 2021-12-29
  • 2021-12-12
相关资源
相似解决方案