xhc66 发表于 2013-2-7 19:38:54

JavaScript拖动层和缩放层(完美版)

  JavaScript拖动层和缩放层(完美版)
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>Js层拖动 - www.codefans.net</title><style>*{margin:0;padding:0;}#zhezhao{ width:100%; height:100%; background:#f00; filter:alpha(opacity:0); opacity:0; z-index:9999; position:absolute; top:0; left:0; display:none;}#div2{ width:200px; height:200px; position:relative; background:#EEEEEE; border:1px solid #f00;}#div1{ width:15px; height:15px; background:#99CC00; position:absolute; right:0px; bottom:0px; cursor:nw-resize; overflow:hidden; font-size:12px; text-align:center; line-height:15px; color:#FFFFFF; float:right; z-index:3;}#right{ width:15px; height:100%; background:#f00; float:right; position:absolute; right:0; top:0; cursor:e-resize; overflow:hidden; filter:alpha(opacity:0); opacity:0; z-index:1;}#bottom{ width:100%; height:15px; background:#f00; position:absolute; left:0; bottom:0; cursor:n-resize; overflow:hidden; filter:alpha(opacity:0); opacity:0; z-index:1;}#div2 p{ padding:10px; line-height:24px; font-size:13px; text-indent:24px; color:#996600;}#div2 h2{ width:100%; height:25px; line-height:25px; font-size:14px; background:#CC9900; color:#FFFFFF; text-indent:15px; cursor:move; overflow:hidden;}</style><script type="text/javascript">window.onload=function(){ var oDiv=document.getElementById("div1"); var oDiv2=document.getElementById("div2"); var zhezhao=document.getElementById("zhezhao"); var h2=oDiv2.getElementsByTagName("h2"); var right=document.getElementById("right"); var bottom=document.getElementById("bottom"); var mouseStart={}; var divStart={}; var rightStart={}; var bottomStart={}; //往右拽 right.onmousedown=function(ev) {var oEvent=ev||event;mouseStart.x=oEvent.clientX;mouseStart.y=oEvent.clientY;rightStart.x=right.offsetLeft;if(right.setCapture){   right.onmousemove=doDrag1;   right.onmouseup=stopDrag1;   right.setCapture();}else{   document.addEventListener("mousemove",doDrag1,true);   document.addEventListener("mouseup",stopDrag1,true);} }; function doDrag1(ev) {var oEvent=ev||event;var l=oEvent.clientX-mouseStart.x+rightStart.x;var w=l+oDiv.offsetWidth;    if(w<oDiv.offsetWidth){   w=oDiv.offsetWidth;}else if(w>document.documentElement.clientWidth-oDiv2.offsetLeft){   w=document.documentElement.clientWidth-oDiv2.offsetLeft-2;}oDiv2.style.width=w+"px"; }; function stopDrag1() {if(right.releaseCapture){   right.onmousemove=null;   right.onmouseup=null;   right.releaseCapture();}else{   document.removeEventListener("mousemove",doDrag1,true);   document.removeEventListener("mouseup",stopDrag1,true);} }; //往下拽 bottom.onmousedown=function(ev) {var oEvent=ev||event;mouseStart.x=oEvent.clientX;mouseStart.y=oEvent.clientY;bottomStart.y=bottom.offsetTop;if(bottom.setCapture){   bottom.onmousemove=doDrag2;   bottom.onmouseup=stopDrag2;   bottom.setCapture();}else{   document.addEventListener("mousemove",doDrag2,true);   document.addEventListener("mouseup",stopDrag2,true);} }; function doDrag2(ev) {var oEvent=ev||event;var t=oEvent.clientY-mouseStart.y+bottomStart.y;var h=t+oDiv.offsetHeight;    if(h<oDiv.offsetHeight){   h=oDiv.offsetHeight;}else if(h>document.documentElement.clientHeight-oDiv2.offsetTop){   h=document.documentElement.clientHeight-oDiv2.offsetTop-2;}    oDiv2.style.height=h+"px"; }; function stopDrag2() {if(bottom.releaseCapture){   bottom.onmousemove=null;   bottom.onmouseup=null;   bottom.releaseCapture();}else{   document.removeEventListener("mousemove",doDrag2,true);   document.removeEventListener("mouseup",stopDrag2,true);} }; //往左右同时拽 oDiv.onmousedown=function(ev) {var oEvent=ev||event;mouseStart.x=oEvent.clientX;mouseStart.y=oEvent.clientY;divStart.x=oDiv.offsetLeft;divStart.y=oDiv.offsetTop;if(oDiv.setCapture){   oDiv.onmousemove=doDrag;   oDiv.onmouseup=stopDrag;   oDiv.setCapture();}else{   document.addEventListener("mousemove",doDrag,true);   document.addEventListener("mouseup",stopDrag,true);}zhezhao.style.display='block'; }; function doDrag(ev) {var oEvent=ev||event;var l=oEvent.clientX-mouseStart.x+divStart.x;var t=oEvent.clientY-mouseStart.y+divStart.y;      var w=l+oDiv.offsetWidth;var h=t+oDiv.offsetHeight;    if(w<oDiv.offsetWidth){   w=oDiv.offsetWidth;}else if(w>document.documentElement.clientWidth-oDiv2.offsetLeft){   w=document.documentElement.clientWidth-oDiv2.offsetLeft-2;}if(h<oDiv.offsetHeight){   h=oDiv.offsetHeight;}else if(h>document.documentElement.clientHeight-oDiv2.offsetTop){   h=document.documentElement.clientHeight-oDiv2.offsetTop-2;}    oDiv2.style.width=w+"px";oDiv2.style.height=h+"px"; }; function stopDrag() {if(oDiv.releaseCapture){   oDiv.onmousemove=null;   oDiv.onmouseup=null;   oDiv.releaseCapture();}else{   document.removeEventListener("mousemove",doDrag,true);   document.removeEventListener("mouseup",stopDrag,true);}zhezhao.style.display='none'; };//h2完美拖拽 h2.onmousedown=function(ev) {var oEvent=ev||event;mouseStart.x=oEvent.clientX;mouseStart.y=oEvent.clientY;divStart.x=oDiv2.offsetLeft;divStart.y=oDiv2.offsetTop;    if(h2.setCapture){   h2.onmousemove=doDrag3;   h2.onmouseup=stopDrag3;   h2.setCapture();}else{   document.addEventListener("mousemove",doDrag3,true);   document.addEventListener("mouseup",stopDrag3,true);}    zhezhao.style.display='block'; }; function doDrag3(ev) {var oEvent=ev||event;var l=oEvent.clientX-mouseStart.x+divStart.x;var t=oEvent.clientY-mouseStart.y+divStart.y;if(l<0){   l=0;}else if(l>document.documentElement.clientWidth-oDiv2.offsetWidth){   l=document.documentElement.clientWidth-oDiv2.offsetWidth;}if(t<0){   t=0;}else if(t>document.documentElement.clientHeight-oDiv2.offsetHeight){   t=document.documentElement.clientHeight-oDiv2.offsetHeight;}oDiv2.style.left=l+"px";oDiv2.style.top=t+"px"; }; function stopDrag3() {if(h2.releaseCapture){   h2.onmousemove=null;   h2.onmouseup=null;   h2.releaseCapture();}else{   document.removeEventListener("mousemove",doDrag3,true);   document.removeEventListener("mouseup",stopDrag3,true);}    zhezhao.style.display='none'; }};</script></head><body><div id="div2"> <div style="width:100%; height:100%; overflow:hidden;"> <h2>完美的拖拽</h2> <p>体验不错的JavaScript网页拖动,除了拖动,还可拖动放大,像Windows窗口一样被放大或缩小,只要按住层的右下角,就可以收放自如的放大或缩小。想使用的朋友,可将代码里的Js封装成类,从外部引入想必更合理些。'</p> <div id="right"></div> <div id="div1">拖</div> <div id="bottom"></div> </div></div><div id="zhezhao"></div></body></html>  
页: [1]
查看完整版本: JavaScript拖动层和缩放层(完美版)