javascript 吸附拖拽demo

来源:luqidong 发布时间:2013-12-04 20:24:14 点击数:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
#div1 {width:100px; height:100px; background:red; position:absolute;}
#div2 {width:700px; height:500px; background:#CCC; position:relative;}
</style>
<script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var oDiv2=document.getElementById('div2');
 
var disX=0;
var disY=0;
 
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
 
disX=oEvent.clientX-oDiv.offsetLeft;
disY=oEvent.clientY-oDiv.offsetTop;
 
document.onmousemove=function (ev)
{
var oEvent=ev||event;
var l=oEvent.clientX-disX;
var t=oEvent.clientY-disY;
 
if(l<50)
{
l=0;
}
else if(l>oDiv2.offsetWidth-oDiv.offsetWidth)
{
l=oDiv2.offsetWidth-oDiv.offsetWidth;
}
 
if(t<50)
{
t=0;
}
else if(t>oDiv2.offsetHeight-oDiv.offsetHeight)
{
t=oDiv2.offsetHeight-oDiv.offsetHeight;
}
 
oDiv.style.left=l+'px';
oDiv.style.top=t+'px';
};
 
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};
 
return false;
};
};
</script>
</head>
 
<body>
<div id="div2">
<div id="div1"></div>
</div>
</body>
</html>
三个事件:down、move、up
限制范围——范围的大小
计算比例——当前值/最大值