可拖动的层DIV的完整源代码

来源:互联网 发布:corel有多少软件 编辑:程序博客网 时间:2024/05/21 00:52

这里提供的是一个默认包含4行3列共计12个可以拖动可以隐藏的层的网页的完整源代码,直接复制保存就可以使用。

 

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  4. <style>
  5. body {margin:0px;padding:0px;font-size:12px;text-align:center;}
  6. body > div {text-align:center; margin-right:auto; margin-left:auto;} 
  7. .content{width:900px;}
  8. .content .left{
  9.     float:left;
  10.     width:20%;
  11.     border:1px solid #FF0000;
  12.     margin:3px;
  13. }
  14. .content .center{float:left;border:1px solid #FF0000;margin:3px;width:57%}
  15. .content .right{float:right;width:20%;border:1px solid #FF0000;margin:3px}
  16. .mo{height:auto;border:1px solid #CCC;margin:3px;background:#FFF}
  17. .mo h1{background:#ECF9FF;height:18px;padding:3px;cursor:move}
  18. .closediv{cursor:default;}
  19. .minusspan{cursor:default;}
  20. .mo .nr{height:80px;border:1px solid #F3F3F3;margin:2px}
  21. h1{margin:0px;padding:0px;text-align:left;font-size:12px}
  22. .dragging {
  23.     FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=60); opacity: 0.6; moz-opacity: 0.6
  24. }
  25. </style>
  26. <script language="javascript">
  27. /*
  28. zuoxinwu@gmail.com 2007-9-12 改动
  29. 1、添加拖动层时的虚线框
  30. 2、添加拖动层时的半透明效果
  31. 3、加入层折叠和关闭功能
  32. */
  33. var dragobj={}
  34. window.onerror=function(){return false}
  35. var domid=12
  36. function on_ini(){
  37.     String.prototype.inc=function(s){return this.indexOf(s)>-1?true:false}
  38.     var agent=navigator.userAgent
  39.     window.isOpr=agent.inc("Opera")
  40.     window.isIE=agent.inc("IE")&&!isOpr
  41.     window.isMoz=agent.inc("Mozilla")&&!isOpr&&!isIE
  42.     if(isMoz){
  43.         Event.prototype.__defineGetter__("x",function(){return this.clientX+2})
  44.         Event.prototype.__defineGetter__("y",function(){return this.clientY+2})
  45.     }
  46.     basic_ini()
  47. }
  48. function basic_ini(){
  49.     window.$=function(obj){return typeof(obj)=="string"?document.getElementById(obj):obj}
  50.     window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}}
  51. }
  52. window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}}
  53. window.onload=function(){
  54.     on_ini()
  55.     var o=document.getElementsByTagName("h1")
  56.     for(var i=0;i<o.length;i++){
  57.         o[i].onmousedown=addevent;
  58.         //添加折叠和关闭按钮
  59.         var tt = document.createElement("div");
  60.         tt.style.cssText = "float:left";
  61.         
  62.         var span = document.createElement("span");
  63.         span.innerHTML = "--"+o[i].innerHTML;
  64.         span.style.cssText = "cursor:default;";
  65.         span.onmousedown = minusDiv;
  66.         tt.appendChild(span);
  67.         
  68.         var close = document.createElement("div");
  69.         close.innerHTML = "X";
  70.         close.style.cssText = "cursor:default;float:right";
  71.         close.onmousedown = closeDiv;
  72.         o[i].innerHTML = "";
  73.         o[i].appendChild(tt);
  74.         o[i].appendChild(close);
  75.     }
  76. }
  77. //折叠或者显示层
  78. function minusDiv(e)
  79. {
  80.     ee=e||event
  81.     var nr = this.parentNode.parentNode.nextSibling;    //取得内容层
  82.     nrnr.style.display = nr.style.display==""?"none":"";
  83. }
  84. //移出层
  85. function closeDiv(e)
  86. {
  87.     ee=e||event
  88.     var mdiv = this.parentNode.parentNode;    //取得目标层
  89.     oDel(mdiv);
  90. }
  91. function addevent(e){
  92.     if(dragobj.o!=null)
  93.         return false
  94.     ee=e||event
  95.     dragobj.o=this.parentNode
  96.     dragobj.xy=getxy(dragobj.o)
  97.     dragobj.xx=new Array((e.x-dragobj.xy[1]),(e.y-dragobj.xy[0]))
  98.     //dragobj.o.className = 'dragging';
  99.     dragobjdragobj.o.style.width=dragobj.xy[2]+"px"
  100.     dragobjdragobj.o.style.height=dragobj.xy[3]+"px"
  101.     dragobj.o.style.left=(e.x-dragobj.xx[0])+"px"
  102.     dragobj.o.style.top=(e.y-dragobj.xx[1])+"px"
  103.     dragobj.o.style.position="absolute"
  104.     dragobj.o.style.filter='alpha(opacity=60)';        //添加拖动透明效果
  105.     var om=document.createElement("div")
  106.     dragobj.otemp=om
  107.     om.style.width=dragobj.xy[2]+"px"
  108.     om.style.height=dragobj.xy[3]+"px"
  109.     om.style.border = "1px dashed red";    //实现红色的虚线框
  110.     dragobj.o.parentNode.insertBefore(om,dragobj.o)
  111.     return false
  112. }
  113. document.onselectstart=function(){return false}
  114. window.onfocus=function(){document.onmouseup()}
  115. window.onblur=function(){document.onmouseup()}
  116. document.onmouseup=function(){
  117.     if(dragobj.o!=null){
  118.         dragobj.o.style.width="auto"
  119.         dragobj.o.style.height="auto"
  120.         dragobj.otemp.parentNode.insertBefore(dragobj.o,dragobj.otemp)
  121.         dragobj.o.style.position=""
  122.         oDel(dragobj.otemp)
  123.         dragobj={}
  124.     }
  125. }
  126. document.onmousemove=function(e){
  127.     ee=e||event
  128.     if(dragobj.o!=null){
  129.         dragobj.o.style.left=(e.x-dragobj.xx[0])+"px"
  130.         dragobj.o.style.top=(e.y-dragobj.xx[1])+"px"
  131.         createtmpl(e, dragobj.o)    //传递当前拖动对象
  132.     }
  133. }
  134. function getxy(e){
  135.     var a=new Array()
  136.     var t=e.offsetTop;
  137.     var l=e.offsetLeft;
  138.     var w=e.offsetWidth;
  139.     var h=e.offsetHeight;
  140.     while(ee=e.offsetParent){
  141.         t+=e.offsetTop;
  142.         l+=e.offsetLeft;
  143.     }
  144.     a[0]=t;a[1]=l;a[2]=w;a[3]=h
  145.   return a;
  146. }
  147. function inner(o,e){
  148.     var a=getxy(o)
  149.     if(e.x>a[1]&&e.x<(a[1]+a[2])&&e.y>a[0]&&e.y<(a[0]+a[3])){
  150.         if(e.y<(a[0]+a[3]/2))
  151.             return 1;
  152.         else
  153.             return 2;
  154.     }else
  155.         return 0;
  156. }
  157. //将当前拖动层在拖动时可变化大小,预览效果
  158. function createtmpl(e, elm){
  159.     for(var i=0;i<domid;i++){
  160.         if(document.getElementById("m"+i) == null)    //已经移出的层不再遍历
  161.             continue;
  162.         if($("m"+i)==dragobj.o)
  163.             continue
  164.         var b=inner($("m"+i),e)
  165.         if(b==0)
  166.             continue
  167.         dragobj.otemp.style.width=$("m"+i).offsetWidth
  168.         elm.style.width = $("m"+i).offsetWidth;
  169.         //1为下移,2为上移
  170.         if(b==1){
  171.             $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i))
  172.         }else{
  173.             if($("m"+i).nextSibling==null){
  174.                 $("m"+i).parentNode.appendChild(dragobj.otemp)
  175.             }else{
  176.                 $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i).nextSibling)
  177.             }
  178.         }
  179.         return
  180.     }
  181.     for(var j=0;j<3;j++){
  182.         if($("dom"+j).innerHTML.inc("div")||$("dom"+j).innerHTML.inc("DIV"))
  183.             continue
  184.         var op=getxy($("dom"+j))
  185.         if(e.x>(op[1]+10)&&e.x<(op[1]+op[2]-10)){
  186.             $("dom"+j).appendChild(dragobj.otemp)
  187.             dragobj.otemp.style.width=(op[2]-10)+"px"
  188.         }
  189.     }
  190. }
  191. function add_div()
  192. {
  193.     var o=document.createElement("div")
  194.     o.className="mo"
  195.     o.id="m"+domid
  196.     $('dom0').appendChild(o)
  197.     o.innerHTML="<h1>dom"+domid+"</h1><div class=nr></div>"
  198.     o.getElementsByTagName("h1")[0].onmousedown=addevent
  199.     domid++
  200. }
  201. </script>
  202. </head>
  203. <body>
  204. <INPUT TYPE="button" value="添加DIV" onclick="add_div();">
  205. <div class=content>
  206.     <div class=left id=dom0>
  207.         <div class=mo id=m0>
  208.             <h1>dom0</h1>
  209.             <div class="nr"></div>
  210.         </div>
  211.         <div class=mo id=m1>
  212.             <h1>dom1</h1><div class="nr"></div>
  213.         </div>
  214.         <div class=mo id=m2><h1>dom2</h1><div class="nr"></div></div>
  215.         <div class=mo id=m3><h1>dom3</h1><div class="nr"></div></div>
  216.     </div>
  217.     <div class=center id=dom1>
  218.         <div class=mo id=m4><h1>dom4</h1><div class="nr"></div></div>
  219.         <div class=mo id=m5><h1>dom5</h1><div class="nr"></div></div>
  220.         <div class=mo id=m6><h1>dom6</h1><div class="nr"></div></div>
  221.         <div class=mo id=m7><h1>dom7</h1><div class="nr"></div></div>
  222.     </div>
  223.     <div class=right id=dom2>
  224.         <div class=mo id=m8><h1>dom8</h1><div class="nr"></div></div>
  225.         <div class=mo id=m9><h1>dom9</h1><div class="nr"></div></div>
  226.         <div class=mo id=m10><h1>dom10</h1><div class="nr"></div></div>
  227.         <div class=mo id=m11><h1>dom11</h1><div class="nr"></div></div>
  228.     </div>
  229. </div>
  230. </body>
  231. </html>
原创粉丝点击