本文实例讲述了js实现可展开折叠层的鼠标拖曳效果。分享给大家供大家参考。具体如下:
这是一款简单js代码实现的鼠标拖曳图层效果,比较精简,大家参考一下。鼠标点击层标题栏可实现层内容的展开与折叠,按住标题栏可实现层的拖动。
运行效果截图如下:
在线演示地址如下:
http://demo.jb51.net/js/2015/js-fade-out-mouse-draw-style-demo/
具体代码如下:
<!doctype html public "-//w3c//dtd html 4.01 transitional//en"
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<title>鼠标拖曳</title>
</head>
<body>
<script type="text/javascript">
function drag(elementtodrag,event){
var startx=event.clientx,starty=event.clienty;
var origx=elementtodrag.offsetleft,origy=elementtodrag.offsettop;
var deltax=startx-origx,deltay=starty-origy;
if(document.addeventlistener){
document.addeventlistener("mousemove",movehandler,true);
document.addeventlistener("mouseup",uphandler,true);
}
else{
elementtodrag.setcapture();
elementtodrag.attachevent("onmousemove",movehandler);
elementtodrag.attachevent("onmouseup",uphandler);
elementtodrag.attachevent("onlosecapture",uphandler);
}
if(event.stoppropagation) event.stoppropagation();
else event.cancelbubble=true;
if(event.preventdefault) event.preventdefault();
else event.returnvalue=false;
function movehandler(e){
if(!e) e=window.event;
elementtodrag.style.left=(e.clientx-deltax)+"px";
elementtodrag.style.top=(e.clienty-deltay)+"px";
elementtodrag.style.zindex="10";
elementtodrag.getelementsbytagname("p")[0].innerhtml="clientx:"+e.clientx+"
</br>"+"clienty:"+e.clienty+"</br>"+"offsetleft:"+origx+"</br>
"+"offsettop:"+origy+"</br>"+"clientx-offsetleft:"+deltax+"</br>"+"clienty-offsettop:"+deltay+"</br>";
if(e.stoppropagation) e.stoppropagation();
else e.cancelbubble = true;
}
function uphandler(e){
if(!e) e=window.event;
elementtodrag.style.zindex="1";
if(document.removeeventlistener){
document.removeeventlistener("mouseup",uphandler,true);
document.removeeventlistener("mousemove",movehandler,true);
}
else{
elementtodrag.detachevent("onlosecapture",uphandler);
elementtodrag.detachevent("onmouseup",uphandler);
elementtodrag.detachevent("onmousemove",movehandler);
elementtodrag.releasecapture();
}
if(e.stoppropagation) e.stoppropagation();
else e.cancelbubble=true;
}
}
</script>
<div style="position:absolute;left:100px;top:100px;width:250px;background-color:#789;border:1px solid #f00">
<div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold"
onmousedown="drag(this.parentnode,event)">drag me1</div>
<p>test</p>
</div>
<div style="position:absolute;left:100px;top:200px;width:250px;background-color:#789;border:1px solid #f00">
<div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold"
onmousedown="drag(this.parentnode,event)">drag me2</div>
<p>test</p>
</div>
<div style="position:absolute;left:100px;top:300px;width:250px;background-color:#789;border:1px solid #f00">
<div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold"
onmousedown="drag(this.parentnode,event)">drag me3</div>
<p>test</p>
</div>
</body>
</html>
以上就是js实现可展开折叠层的鼠标拖曳效果_javascript技巧的内容。