<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=GBK"> <title>zhou's html</title> </head> <body> 一共三个层,下面还有一个,把他拖上来 <div id="test" style='cursor:move;border:6px solid #000000;left:1px;top:2px;width:100px;height:100px;background-color:#F9F7ED;position:absolute;text-align:center'><span>Magnolia Mag.nolia</span><input type="text" style="width:50px" maxlength="5"/></div> <div id="test1" style='cursor:move;border:6px solid #000000;left:1px;top:200px;width:150px;height:150px;background-color:#FF1A00;position:absolute;text-align:center'><span>Mozilla Red</span><br/><input type="text" style="width:80px" maxlength="9"/></div> <div id="test3" style="border:3px solid #C3D9FF;text-align:center;left:700px;top:100px;width:150px;height:250px;background-color:#ffffff;position:absolute"><div id="test31" style="cursor:move;left:300px;top:200px;width:150px;height:30px;background-color:#C3D9FF;text-align:center;vertical-align:center;line-height:30px;font-weight:bold;color:#ffffff">小 纸 条</div>一共三个层,下面还有一个,把他拖上来<br/><textarea style="width:130px;height:150px;">有了拖动层,做局部拖动很简单</textarea><br/><input type="button" value="submit it"/></div> <div id="test4" style="border:3px solid #CDEB8B;text-align:center;left:480px;top:150px;width:150px;height:250px;background-color:#ffffff;position:absolute"><div id="test41" style="cursor:move;left:300px;top:200px;width:150px;height:30px;background-color:#CDEB8B;text-align:center;vertical-align:center;line-height:30px;font-weight:bold;color:#ffffff">小 纸 条</div>一共三个层,下面还有一个,把他拖上来<br/><textarea style="width:130px;height:150px;">顺便练习下颜色搭配</textarea><br/><input type="button" value="submit it"/></div> <div id="test2" style='cursor:move;border:6px solid #000000;left:200px;top:800px;width:100px;height:100px;background-color:#EEEEEE;position:absolute;text-align:center'><span>Shiny silver</span><br/><input type="button" value="hit me"/></div> <br/><br/><br/><br/><br/><br/><br/><br/><br/> <script type="text/javascript" charset="utf-8"> var $=function(id){return document.getElementById(id)}; Array.prototype.extend=function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;} function divDrag(){ var A,B,$cn; var zIndex=1; this.dragStart=function(e){ ee=e||window.event; if((e.which&&(e.which!=1))||(e.button&&(e.button!=1)))return; var pos=this.$pos; $cn=this.parent||this; if(document.defaultView){ _top=document.defaultView.getComputedStyle($cn,null).getPropertyValue("top"); _left=document.defaultView.getComputedStyle($cn,null).getPropertyValue("left");} else{ if($cn.currentStyle){_top=$cn.currentStyle["top"];_left=$cn.currentStyle["left"];}} pos.ox=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(_left); pos.oy=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(_top); if(!!A){ if(document.removeEventListener){ document.removeEventListener("mousemove",A,false); document.removeEventListener("mouseup",B,false);} else{ document.detachEvent("onmousemove",A); document.detachEvent("onmouseup",B);}} A=this.dragMove.create(this); B=this.dragEnd.create(this); if(document.addEventListener){ document.addEventListener("mousemove",A,false); document.addEventListener("mouseup",B,false);} else{ document.attachEvent("onmousemove",A); document.attachEvent("onmouseup",B);} $cn.style.zIndex=(++zIndex); this.stop(e); } this.dragMove=function(e){ ee=e||window.event; var pos=this.$pos; $cn=this.parent||this; $cn.style.top=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(pos.oy)+'px'; $cn.style.left=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(pos.ox)+'px'; this.stop(e);} this.dragEnd=function(e){ var pos=this.$pos; ee=e||window.event; if((e.which&&(e.which!=1))||(e.button&&(e.button!=1)))return; $cn=this.parent||this; if(!!(this.parent)){this.style.backgroundColor=pos.color} if(document.removeEventListener){ document.removeEventListener("mousemove",A,false); document.removeEventListener("mouseup",B,false);} else{ document.detachEvent("onmousemove",A); document.detachEvent("onmouseup",B);} A=null; B=null; $cn.style.zIndex=(++zIndex); this.stop(e); } this.shiftColor=function(){ this.style.backgroundColor="#EEEEEE"; } this.position=function (e){ var t=e.offsetTop; var l=e.offsetLeft; while(ee=e.offsetParent){ t+=e.offsetTop; l+=e.offsetLeft;} return {x:l,y:t,ox:0,oy:0,color:null} } this.stop=function(e){ if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;} if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;} } this.stop1=function(e){ ee=e||window.event; if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;} } this.create=function(bind){ var B=this; var A=bind; return function(e){return B.apply(A,[e]);} } thisthis.dragStart.create=this.create; thisthis.dragMove.create=this.create; thisthis.dragEnd.create=this.create; thisthis.shiftColor.create=this.create; this.initialize=function(){ for(var A=0,B=arguments.length;A<B;A++){ C=arguments[A]; if(!(C.push)){C=[C];} $C=(typeof(C[0])=='object')?C[0]:(typeof(C[0])=='string'?$(C[0]):null); if(!$C)continue; $C.$pos=this.position($C); $C.dragMove=this.dragMove; $C.dragEnd=this.dragEnd; $C.stop=this.stop; if(!!C[1]){$CC.parent=C[1];$C.$pos.color=$C.style.backgroundColor;} if($C.addEventListener){ $C.addEventListener("mousedown",this.dragStart.create($C),false); if(!!C[1]){$C.addEventListener("mousedown",this.shiftColor.create($C),false);}} else{$C.attachEvent("onmousedown",this.dragStart.create($C)); if(!!C[1]){$C.attachEvent("onmousedown",this.shiftColor.create($C));}} } } this.initialize.apply(this,arguments); } //生成拖动层很简单,只需要(参数之一如果是数组表示局部拖动,arr[0]表示拖动层,arr[1]表示整体) new divDrag( ['test'], [$('test31'),$('test3')], $('test1') ,$('test2') ,[$('test41'),$('test4')]); </script> </body> </html>
****************************************************************************
下面这个是可以选取拖动层上的文字和输入框的实现,其实就是在上面基础上添加了几个事件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>zhou's html</title> </head> <body> 一共三个层,下面还有一个,把他拖上来,按下文字和button是不可以拖动的//一共三个层,下面还有一个,把他拖上来,按下文字和button是不可以拖动的//一共三个层,下面还有一个,把他拖上来,按下文字和button是不可以拖动的 <div id="test" style='border:6px solid #000000;left:1px;top:2px;width:100px;height:100px;background-color:#F9F7ED;position:absolute;text-align:center'><span>Magnolia Mag.nolia</span><input type="text" style="width:50px" maxlength="5"/></div> <div id="test1" style='border:6px solid #000000;left:1px;top:200px;width:150px;height:150px;background-color:#FF1A00;position:absolute;text-align:center'><span>Mozilla Red</span><br/><input type="text" style="width:80px" maxlength="9"/></div> <div id="test2" style='border:6px solid #000000;left:200px;top:800px;width:100px;height:100px;background-color:#EEEEEE;position:absolute;text-align:center'><span>Shiny silver</span><br/><input type="button" value="hit me"/></div> <br/><br/><br/><br/><br/><br/><br/><br/><br/> <script type="text/javascript" charset="utf-8"> var $=function(id){return document.getElementById(id)}; Array.prototype.extend=function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;} function divDrag(){ var A,B; var zIndex=1; this.dragStart=function(e){ ee=e||window.event; if((e.which&&(e.which!=1))||(e.button&&(e.button!=1)))return; var pos=this.$pos; if(document.defaultView){ _top=document.defaultView.getComputedStyle(this,null).getPropertyValue("top"); _left=document.defaultView.getComputedStyle(this,null).getPropertyValue("left");} else{ if(this.currentStyle){_top=this.currentStyle["top"];_left=this.currentStyle["left"];} } pos.ox=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(_left); pos.oy=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(_top); if(!!A){ if(document.removeEventListener){ document.removeEventListener("mousemove",A,false); document.removeEventListener("mouseup",B,false); }else{ document.detachEvent("onmousemove",A); document.detachEvent("onmouseup",B); document.detachEvent("ondragstart",G); } } A=this.dragMove.create(this); B=this.dragEnd.create(this); if(document.addEventListener){ document.addEventListener("mousemove",A,false); document.addEventListener("mouseup",B,false); }else{ document.attachEvent("onmousemove",A); document.attachEvent("onmouseup",B); G=function(){return false}; document.attachEvent("ondragstart",G); } this.style.zIndex=(++zIndex); this.stop(e); } this.dragMove=function(e){ ee=e||window.event; var pos=this.$pos; this.style.top=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(pos.oy)+'px'; this.style.left=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(pos.ox)+'px'; this.stop(e);} this.dragEnd=function(e){ var pos=this.$pos; ee=e||window.event; if((e.which&&(e.which!=1))||(e.button&&(e.button!=1)))return; if(document.removeEventListener){ document.removeEventListener("mousemove",A,false); document.removeEventListener("mouseup",B,false); }else{ document.detachEvent("onmousemove",A); document.detachEvent("onmouseup",B); document.detachEvent("ondragstart",G); } A=null; B=null; this.style.zIndex=(++zIndex); this.stop(e); } this.position=function (e){ var t=e.offsetTop; var l=e.offsetLeft; while(ee=e.offsetParent){ t+=e.offsetTop; l+=e.offsetLeft; } return {x:l,y:t,ox:0,oy:0} } this.stop=function(e){ if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble=true;} if(e.preventDefault){ e.preventDefault();} else{e.returnValue=false;} } this.stop1=function(e){ ee=e||window.event; if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble=true;} } this.create=function(bind){ var B=this; var A=bind; return function(e){ return B.apply(A,[e]); } } thisthis.dragStart.create=this.create; thisthis.dragMove.create=this.create; thisthis.dragEnd.create=this.create; this.initialize=function(){ for(var A=0,B=arguments.length;A<B;A++){ C=arguments[A]; C=(typeof(C)=='object')?C:(typeof(C)=='string'?$(C):null); if(!C)continue; C.$pos=this.position(C); C.dragMove=this.dragMove; C.dragEnd=this.dragEnd; C.position=this.position; C.stop=this.stop; var $A=[]; $A=$A.extend(C.getElementsByTagName('span')||[]).extend(C.getElementsByTagName('input')||[]); for(var D=0,E=$A.length;D<E;D++){ if(C.addEventListener){ $A[D].addEventListener("mousedown",this.stop1,false); $A[D].addEventListener("mousemove",this.stop1,false); }else{ $A[D].attachEvent("onmousedown",this.stop1); $A[D].attachEvent("onmousemove",this.stop1); } } if(C.addEventListener){ C.addEventListener("mousedown",this.dragStart.create(C),false); }else{ C.attachEvent("onmousedown",this.dragStart.create(C)); } } } this.initialize.apply(this,arguments); } //生成拖动层很简单 new divDrag('test',$('test1'),$('test2')); </script> </body> </html>