麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

jQuery使用drag效果實現自由拖拽div

2024-05-06 16:22:14
字體:
來源:轉載
供稿:網友

本文給大家分享一款jquery實現的完美拖拽(拖動div層效果),如果你正在找這類效果不妨進入參考一下。

偶然間看到了以前做的一個簡潔的div拖拽效果,修改了一下加點注釋,經測試完美通過firefox/chrome/ie6-11,現拿來分享一下。

先說一下實現原理及要點,最主要的有三步。第一步是mousedown事件,鼠標mousedown的時候記錄此時的鼠標X軸和Y軸以及拖拽框的left和top,并且給拖拽標記賦值true,代表拖拽動作就緒。第二步是mousemove事件,此時動態獲取鼠標的X軸和Y軸,然后計算出來拖拽框新的left和top并賦值使其實現拖拽效果。第三步是mouseup事件,鼠標彈起時給拖拽標記賦值false,拖拽動作完成。

html代碼如下:

 

  1. <div class="divWrap" id="move1" style="width: 200px; height: 200px; background: Green; border: 1px solid red; position: absolute; top: 100px; left: 100px; cursor: move; -moz-user-select: none; -webkit-user-select: none;"></div> 
  2. <div class="divWrap" style="width: 200px; height: 200px; background: brown; border: 1px solid red; position: absolute; top: 300px; left: 100px;"
  3. <h3 id="move2" style="height: 45px; line-height: 45px; font-size: 18px; background: red; margin: 0; cursor: move; -moz-user-select: none; -webkit-user-select: none;">Title--Move</h3> 
  4. </div> 

js代碼如下:

 

 
  1. (function($) { 
  2. $.fn.dragDiv = function(divWrap) { 
  3. return this.each(function() { 
  4. var $divMove = $(this);//鼠標可拖拽區域 
  5. var $divWrap = divWrap ? $divMove.parents(divWrap) : $divMove;//整個移動區域 
  6. var mX = 0, mY = 0;//定義鼠標X軸Y軸 
  7. var dX = 0, dY = 0;//定義div左、上位置 
  8. var isDown = false;//mousedown標記 
  9. if(document.attachEvent) {//ie的事件監聽,拖拽div時禁止選中內容,firefox與chrome已在css中設置過-moz-user-select: none; -webkit-user-select: none; 
  10. $divMove[0].attachEvent('onselectstart'function() { 
  11. return false
  12. }); 
  13. $divMove.mousedown(function(event) { 
  14. var event = event || window.event; 
  15. mX = event.clientX; 
  16. mY = event.clientY; 
  17. dX = $divWrap.offset().left; 
  18. dY = $divWrap.offset().top; 
  19. isDown = true;//鼠標拖拽啟動 
  20. }); 
  21. $(document).mousemove(function(event) { 
  22. var event = event || window.event; 
  23. var x = event.clientX;//鼠標滑動時的X軸 
  24. var y = event.clientY;//鼠標滑動時的Y軸 
  25. if(isDown) { 
  26. $divWrap.css({"left": x - mX + dX, "top": y - mY + dY});//div動態位置賦值 
  27. }); 
  28. $divMove.mouseup(function() { 
  29. isDown = false;//鼠標拖拽結束 
  30. }); 
  31. }); 
  32. }; 
  33. })(jQuery); 
  34. // 
  35. $(document).ready(function() { 
  36. $("#move1").dragDiv();//拖拽整個div 
  37. $("#move2").dragDiv(".divWrap");//拖拽div頭部 
  38. }); 

最后要說明一下,在開始拖拽動作之前,要禁止選中內容,否則影響拖拽效果。firefox和chrome可以通過css來設置:{-moz-user-select: none; -webkit-user-select: none;},ie本來也可以直接在html里寫一個onselectstart="return false",但似乎chrome受了點影響,所以決定取消這個寫法,然后在js里為ie瀏覽器寫一個onselectstart事件。

這個小插件只是簡單實現拖拽效果,但兼容性很好,里面也用到了一些知識點和技巧。當然也可以借助這個插件或里面的思想繼續擴展,寫一個比較完善的拖拽插件(如:Draggable和Droppable)。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美中文在线 | 国产精品视频免费网站 | 色屁屁xxxxⅹ在线视频 | 日本在线精品视频 | 91精品国产九九九久久久亚洲 | 91欧美视频 | 一级黄色影院 | 在线成人www免费观看视频 | 日韩欧美电影在线观看 | 蜜桃视频在线观看视频 | 一级毛片免费大片 | 李宗瑞国产福利视频一区 | 亚洲第一黄色网 | 亚洲五码在线观看视频 | 俄罗斯16一20sex牲色另类 | 狠狠干夜夜草 | av电影在线网 | 欧日韩在线 | 国产精品久久久久av | 日韩黄色影视 | 亚洲九色| 久久国产夫妻视频 | 国产精品9191 | 一级黄色影片在线观看 | 久久手机在线视频 | 91久久夜色精品国产网站 | 中文字幕一区二区三区久久 | av在线1| 国产在线观看av | 亚洲乱搞| 国产精品自拍99 | 国产毛片毛片毛片 | 国产亚洲精品久久久久久网站 | 黄色毛片免费看 | 九九热精彩视频 | 国产午夜免费 | 久久久青| 国产精品美女一区二区 | 国产欧美精品一区二区三区四区 | 国产91一区 | 国产精品一区二区三区在线 |