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是絕對定位,然後檢測鼠標事件就行了。嘿嘿。

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