jQuery拖动div,移动div,弹出层

之前一直想自己来写个拖动div的js代码,一直没动手,昨晚写了一下,然后百度了一下相关的文章,发现貌似不太详细??

代码演示: 

 http://www.imqing.com/demo/movediv.html

大概原理:  

      使div的position为绝对定位absolute,然后控制其top与left值,需要监听鼠标事件,主要用到mousedown,    mousemove,    mouseup。

      在mousedown后,记录mousedown时鼠标与需要移动的div的位置,然后取得两者之差,得到在鼠标移动后,div的位置。即:

    

  1. left = 当前鼠标位置.x - (鼠标点击时的.x值 - div的初始位置x值)  
  2. top = 当前鼠标位置.y - (鼠标点击时的.y值 - div的初始位置y值) 

代码:

 

  1. <!DOCTYPE html> 
  2. <html lang="zh"> 
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
  5.     <title>Qing's Web</title> 
  6.     <script src="./jquery-1.7.2.min.js" type="text/javascript"></script> 
  7.     <style type="text/css"> 
  8.     .footer {  
  9.             position: fixed;  
  10.             bottom: 0;  
  11.             width: 100%;  
  12.         }  
  13.         .moveBar {  
  14.             position: absolute;  
  15.             width: 250px;  
  16.             height: 300px;  
  17.             background: #666;  
  18.             border: solid 1px #000;  
  19.         }  
  20.         #banner {  
  21.             background: #52CCCC;  
  22.             cursor: move;  
  23.         }  
  24.     </style> 
  25. </head> 
  26. <body style="padding-top: 50px;"> 
  27.  
  28. <div class="moveBar"> 
  29.     <div id="banner">按住此处移动当前div</div> 
  30.     <div class="content">这里是其它内容</div> 
  31. </div> 
  32. <div class="footer"> 
  33.     <p align="center" class="label">ALL Rights Reserved Qing 版权所有</p> 
  34. </div> 
  35. <script> 
  36.     jQuery(document).ready(  
  37.             function () {  
  38.                 $('#banner').mousedown(  
  39.                         function (event) {  
  40.                             var isMove = true;  
  41.                             var abs_x = event.pageX - $('div.moveBar').offset().left;  
  42.                             var abs_y = event.pageY - $('div.moveBar').offset().top;  
  43.                             $(document).mousemove(function (event) {  
  44.                                         if (isMove) {  
  45.                                             var obj = $('div.moveBar');  
  46.                                             obj.css({'left':event.pageX - abs_x, 'top':event.pageY - abs_y});  
  47.                                         }  
  48.                                     }  
  49.                             ).mouseup(  
  50.                                     function () {  
  51.                                         isMove = false;  
  52.                                     }  
  53.                             );  
  54.                         }  
  55.                 );  
  56.             }  
  57.     );  
  58. </script> 
  59. </body> 
  60. </html> 

其实代码量也不多的,嘿嘿。要点就是需要移动的div的position是绝对定位,然后检测鼠标事件就行了。嘿嘿。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章