`
varsoft
  • 浏览: 2438495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

[转]JavaScript简单实现div拖拽

阅读更多

Javascript元素拖曳操作Byshawl.qiu(兼容IE,Opera,Firefox)


说明:
拖曳流程
鼠标按下->(鼠标移动->元素移动)
鼠标按键弹起->元素停止移动

针对IE,主要使用obj.attachEvent()&&obj.detachEvent()
针对Firefox主要使用DOM2的obj.addEventListener()&&obj.removeEventListener
Opera以上两种方法都支持

在本文中,需要拖曳的元素必须指定style属性为position:absolute;
且应指定left&&top的坐标值,如:
    linenum
  1. <divstyle="border:1pxdashedblue;width:180px;text-align:center;position:absolute;left:100px;top:150px;"onmousedown="fDragging(this,event,true);">
  2. element1<br/>
  3. draggingcompatibilityforIE,Opera,Firefox.
  4. </div>

函数fDragging(obj,e,limit)的各参数解释:
obj:HTML元素对象,要拖曳的元素
e:指定为event对象,主要为兼容Firefox
limit:布尔值,指定是否只能在父元素中拖曳,false可移动至任何位置.

函数fDragging(obj,e,limit)应该在HTMLonmousedown属性下使用,如:
    linenum
  1. <divstyle="border:1pxdashedblue;width:180px;text-align:center;position:absolute;left:50px;top:50px;"onmousedown="fDragging(this,event,true);">
  2. element<br/>
  3. draggingcompatibilityforIE,Opera,Firefox.
  4. </div>

shawl.qiu
2006-11-10
http://blog.csdn.net/btbtd

函数:fDragging(obj,e,limit)及使用演示
    linenum
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <!--DW6-->
  4. <head>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
  6. <title>shawl.qiutemplate</title>
  7. <scripttype="text/javascript">
  8. //<![CDATA[
  9. functionfDragging(obj,e,limit){
  10. if(!e)e=window.event;
  11. varx=parseInt(obj.style.left);
  12. vary=parseInt(obj.style.top);
  13. varx_=e.clientX-x;
  14. vary_=e.clientY-y;
  15. if(document.addEventListener){
  16. document.addEventListener('mousemove',inFmove,true);
  17. document.addEventListener('mouseup',inFup,true);
  18. }elseif(document.attachEvent){
  19. document.attachEvent('onmousemove',inFmove);
  20. document.attachEvent('onmouseup',inFup);
  21. }
  22. inFstop(e);
  23. inFabort(e)
  24. functioninFmove(e){
  25. varevt;
  26. if(!e)e=window.event;
  27. if(limit){
  28. varop=obj.parentNode;
  29. varopX=parseInt(op.style.left);
  30. varopY=parseInt(op.style.top);
  31. if((e.clientX-x_)<0)returnfalse;
  32. elseif((e.clientX-x_+obj.offsetWidth+opX)>(opX+op.offsetWidth))returnfalse;
  33. if(e.clientY-y_<0)returnfalse;
  34. elseif((e.clientY-y_+obj.offsetHeight+opY)>(opY+op.offsetHeight))returnfalse;
  35. //status=e.clientY-y_;
  36. }
  37. obj.style.left=e.clientX-x_+'px';
  38. obj.style.top=e.clientY-y_+'px';
  39. inFstop(e);
  40. }//shawl.qiuscript
  41. functioninFup(e){
  42. varevt;
  43. if(!e)e=window.event;
  44. if(document.removeEventListener){
  45. document.removeEventListener('mousemove',inFmove,true);
  46. document.removeEventListener('mouseup',inFup,true);
  47. }elseif(document.detachEvent){
  48. document.detachEvent('onmousemove',inFmove);
  49. document.detachEvent('onmouseup',inFup);
  50. }
  51. inFstop(e);
  52. }//shawl.qiuscript
  53. functioninFstop(e){
  54. if(e.stopPropagation)returne.stopPropagation();
  55. elsereturne.cancelBubble=true;
  56. }//shawl.qiuscript
  57. functioninFabort(e){
  58. if(e.preventDefault)returne.preventDefault();
  59. elsereturne.returnValue=false;
  60. }//shawl.qiuscript
  61. }
  62. //]]>
  63. </script>
  64. </head>
  65. <body>
  66. <divstyle="border:1pxdashedblue;width:760px;height:600px;text-align:center;position:absolute;left:100px;top:10px;">thisparent
  67. <divstyle="border:1pxdashedblue;width:180px;text-align:center;position:absolute;left:50px;top:50px;"onmousedown="fDragging(this,event,true);">
  68. element<br/>
  69. draggingcompatibilityforIE,Opera,Firefox.
  70. </div>
  71. <divstyle="border:1pxdashedblue;width:180px;text-align:center;position:absolute;left:100px;top:150px;"onmousedown="fDragging(this,event,true);">
  72. element1<br/>
  73. draggingcompatibilityforIE,Opera,Firefox.
  74. </div>
  75. <divstyle="border:1pxdashedblue;width:180px;text-align:center;position:absolute;left:200px;top:250px;"onmousedown="fDragging(this,event,false);">
  76. element2<br/>
  77. draggingcompatibilityforIE,Opera,Firefox.<br/>
  78. <fontcolor="red">draggingeverywhere</font>
  79. </div>
  80. </div>
  81. </body>
  82. </html>

来源: http://blog.csdn.net/btbtd/archive/2006/11/10/1377810.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics