Js可拖拽放大的层拖动特效实现方法
本文实例讲述了Js可拖拽放大的层拖动特效实现方法。分享给大家供大家参考。具体实现方法如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/> <title>Js实现层拖动效果,还可以拖拽放大</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:1pxsolid#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; } #div2p{ padding:10px; line-height:24px; font-size:13px; text-indent:24px; color:#996600; } #div2h2{ width:100%; height:25px; line-height:25px; font-size:14px; background:#CC9900; color:#FFFFFF; text-indent:15px; cursor:move; overflow:hidden; } </style> <scripttype="text/javascript"> window.onload=function() { varoDiv=document.getElementById("div1"); varoDiv2=document.getElementById("div2"); varzhezhao=document.getElementById("zhezhao"); varh2=oDiv2.getElementsByTagName("h2")[0]; varright=document.getElementById("right"); varbottom=document.getElementById("bottom"); varmouseStart={}; vardivStart={}; varrightStart={}; varbottomStart={}; //往右拽 right.onmousedown=function(ev) { varoEvent=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); } }; functiondoDrag1(ev) { varoEvent=ev||event; varl=oEvent.clientX-mouseStart.x+rightStart.x; varw=l+oDiv.offsetWidth; if(w<oDiv.offsetWidth) { w=oDiv.offsetWidth; } elseif(w>document.documentElement.clientWidth-oDiv2.offsetLeft) { w=document.documentElement.clientWidth-oDiv2.offsetLeft-2; } oDiv2.style.width=w+"px"; }; functionstopDrag1() { 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) { varoEvent=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); } }; functiondoDrag2(ev) { varoEvent=ev||event; vart=oEvent.clientY-mouseStart.y+bottomStart.y; varh=t+oDiv.offsetHeight; if(h<oDiv.offsetHeight) { h=oDiv.offsetHeight; } elseif(h>document.documentElement.clientHeight-oDiv2.offsetTop) { h=document.documentElement.clientHeight-oDiv2.offsetTop-2; } oDiv2.style.height=h+"px"; }; functionstopDrag2() { 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) { varoEvent=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'; }; functiondoDrag(ev) { varoEvent=ev||event; varl=oEvent.clientX-mouseStart.x+divStart.x; vart=oEvent.clientY-mouseStart.y+divStart.y; varw=l+oDiv.offsetWidth; varh=t+oDiv.offsetHeight; if(w<oDiv.offsetWidth) { w=oDiv.offsetWidth; } elseif(w>document.documentElement.clientWidth-oDiv2.offsetLeft) { w=document.documentElement.clientWidth-oDiv2.offsetLeft-2; } if(h<oDiv.offsetHeight) { h=oDiv.offsetHeight; } elseif(h>document.documentElement.clientHeight-oDiv2.offsetTop) { h=document.documentElement.clientHeight-oDiv2.offsetTop-2; } oDiv2.style.width=w+"px"; oDiv2.style.height=h+"px"; }; functionstopDrag() { 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) { varoEvent=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'; }; functiondoDrag3(ev) { varoEvent=ev||event; varl=oEvent.clientX-mouseStart.x+divStart.x; vart=oEvent.clientY-mouseStart.y+divStart.y; if(l<0) { l=0; } elseif(l>document.documentElement.clientWidth-oDiv2.offsetWidth) { l=document.documentElement.clientWidth-oDiv2.offsetWidth; } if(t<0) { t=0; } elseif(t>document.documentElement.clientHeight-oDiv2.offsetHeight) { t=document.documentElement.clientHeight-oDiv2.offsetHeight; } oDiv2.style.left=l+"px"; oDiv2.style.top=t+"px"; }; functionstopDrag3() { 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> <divid="div2"> <divstyle="width:100%;height:100%;overflow:hidden;"> <h2>完美的拖拽</h2> <p>体验不错的JavaScript网页拖动,除了拖动,还可拖动放大,像Windows窗口一样被放大或缩小,只要按住层的右下角,就可以收放自如的放大或缩小。想使用的朋友,可将代码里的Js封装成类,从外部引入想必更合理些。'</p> <divid="right"></div> <divid="div1">拖</div> <divid="bottom"></div> </div> </div> <divid="zhezhao"></div> </body> </html>
希望本文所述对大家的javascript程序设计有所帮助。