JavaScript鼠标拖动div且可调整div大小

http://www.softwhy.com/article-5502-1.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</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")[0];
  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>蚂蚁部落欢迎您,只有努力奋斗才会有美好的未来</p>
 <div id="right"></div>
 <div id="div1">拖</div>
 <div id="bottom"></div>
 </div>
</div>
<div id="zhezhao"></div>
</body>
</html>

  

posted @ 2019-03-27 09:38  GordonDicaprio  阅读(697)  评论(0编辑  收藏  举报