javascript实现鼠标拖动改变层大小的方法
本文实例讲述了javascript实现鼠标拖动改变层大小的方法。分享给大家供大家参考。具体实现方法如下:
<html>
<head>
<title>拖动改变层的大小</title>
<metacontent="text/html;charset=gb2312"http-equiv="Content-Type">
<style>{
box-sizing:border-box;moz-box-sizing:border-box
}
#testDiv{background-color:buttonface;background-repeat:repeat;
background-attachment:scroll;color:#3969A5;height:300px;
left:30px;overflow:hidden;width:500;z-index:2;
border:2pxoutsetwhite;margin:0px;padding:2px;
background-position:0%50%}
body{font-family:Verdana;font-size:9pt}
#innerNice{background-color:white;background-repeat:repeat;
background-attachment:
scroll;color:#3969A5;height:100%;overflow:auto;
width:100%;border:2pxinsetwhite;padding:8px;
background-position:0%50%}
</style>
<SCRIPTlanguage=javascript>
vartheobject=null;
functionresizeObject(){
this.el=null;//pointertotheobject
this.dir="";//typeofcurrentresize(n,s,e,w,ne,nw,se,sw)
this.grabx=null;//Someusefulvalues
this.graby=null;
this.width=null;
this.height=null;
this.left=null;
this.top=null;
}
functiongetDirection(el){
varxPos,yPos,offset,dir;
dir="";
xPos=window.event.offsetX;
yPos=window.event.offsetY;
offset=8;//Thedistancefromtheedgeinpixels
if(yPos<offset)dir+="n";
elseif(yPos>el.offsetHeight-offset)dir+="s";
if(xPos<offset)dir+="w";
elseif(xPos>el.offsetWidth-offset)dir+="e";
returndir;
}
functiondoDown(){
varel=getReal(event.srcElement,"className","resizeMe");
if(el==null){
theobject=null;
return;
}
dir=getDirection(el);
if(dir=="")return;
theobject=newresizeObject();
theobject.el=el;
theobject.dir=dir;
theobject.grabx=window.event.clientX;
theobject.graby=window.event.clientY;
theobject.width=el.offsetWidth;
theobject.height=el.offsetHeight;
theobject.left=el.offsetLeft;
theobject.top=el.offsetTop;
window.event.returnValue=false;
window.event.cancelBubble=true;
}
functiondoUp(){
if(theobject!=null){
theobject=null;
}
}
functiondoMove(){
varel,xPos,yPos,str,xMin,yMin;
xMin=8;//Thesmallestwidthpossible
yMin=8;//height
el=getReal(event.srcElement,"className","resizeMe");
if(el.className=="resizeMe"){
str=getDirection(el);
//Fixthecursor
if(str=="")str="default";
elsestr+="-resize";
el.style.cursor=str;
}
//Draggingstartshere
if(theobject!=null){
if(dir.indexOf("e")!=-1)
theobject.el.style.width=Math.max(xMin,theobject.width+window.event.clientX-theobject.grabx)+"px";
if(dir.indexOf("s")!=-1)
theobject.el.style.height=Math.max(yMin,theobject.height+window.event.clientY-theobject.graby)+"px";
if(dir.indexOf("w")!=-1){
theobject.el.style.left=Math.min(theobject.left+window.event.clientX-theobject.grabx,theobject.left+theobject.width-xMin)+"px";
theobject.el.style.width=Math.max(xMin,theobject.width-window.event.clientX+theobject.grabx)+"px";
}
if(dir.indexOf("n")!=-1){
theobject.el.style.top=Math.min(theobject.top+window.event.clientY-theobject.graby,theobject.top+theobject.height-yMin)+"px";
theobject.el.style.height=Math.max(yMin,theobject.height-window.event.clientY+theobject.graby)+"px";
}
window.event.returnValue=false;
window.event.cancelBubble=true;
}
}
functiongetReal(el,type,value){
temp=el;
while((temp!=null)&&(temp.tagName!="BODY")){
if(eval("temp."+type)==value){
el=temp;
returnel;
}
temp=temp.parentElement;
}
returnel;
}
document.onmousedown=doDown;
document.onmouseup=doUp;
document.onmousemove=doMove;
</SCRIPT>
</head>
<body>
<divclass="resizeMe"id="testDiv">
<divid="innerNice">
<palign="center"></p>
<palign="center">
请在边框处拖动鼠标</p>
<p></p>
<p></p>
<p></p>
</div>
</div>
</body>
</html>
希望本文所述对大家的javascript程序设计有所帮助。