Linhai Web

踏雪寻梅

博客园 首页 新随笔 联系 订阅 管理

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>拖拽</title>
<style type="text/css">
body
{
margin:0px;
}

#b
{
width:100px;
height:50px;
border:1px solid #666666;
background-color:#FFCCCC;
}

#f
{
position:absolute;/*重要*/
width:100px;
height:50px;
border:1px solid #666666;
background-color:#CCCCCC;
}
</style>
</head>

<body>

<div id="b"></div>
<div id="f"></div>

<script type="text/javascript" language="javascript">
<!--
//获得物件对象
var b = document.getElementById("b");
var f = document.getElementById("f");

//配置物件位置
var b_orgnX = 0;
var b_orgnY = 0;
var f_orgnX = 300;
var f_orgnY = 100;

//设置物件位置
b.style.pixelLeft = b_orgnX;
b.style.pixelTop = b_orgnY;
f.style.pixelLeft = f_orgnX;
f.style.pixelTop = f_orgnY;

//拖拽过程中相关变量
var draging = false; //是否处于拖拽中
var offsetX = 0; //X方向上偏移量
var offsetY = 0; //Y方向上偏移量

//准备拖拽
function BeforeDrag()
{
draging = true;
offsetX = document.body.scrollLeft + event.clientX-f.style.pixelLeft;
offsetY = document.body.scrollTop + event.clientY-f.style.pixelTop;
}

//拖拽中
function OnDrag()
{
if(!draging)
{
return;
}
//更新位置
f.style.pixelLeft = document.body.scrollLeft + event.clientX-offsetX;
f.style.pixelTop = document.body.scrollTop + event.clientY-offsetY;
}

//结束拖拽
function EndDrag()
{
draging = false;
if (f.style.pixelLeft>=b.style.pixelLeft && f.style.pixelLeft<=(b.style.pixelLeft+b.offsetWidth) &&
f.style.pixelTop>=b.style.pixelTop && f.style.pixelTop<=(b.style.pixelTop+b.offsetHeight))
{
//拖拽块位于基块中,自动定位到基块位置
f.style.pixelLeft = b.style.pixelLeft;
f.style.pixelTop = b.style.pixelTop;
}
else
{
//拖拽块位于基块外,将拖拽块位置复原
f.style.pixelLeft = f_orgnX;
f.style.pixelTop = f_orgnY;
}
}

f.onmousedown = BeforeDrag;
f.onmousemove = OnDrag;
f.onmouseup = EndDrag;
f.onmouseout = EndDrag;
//-->
</script>
</body>

</html>

posted on 2006-05-24 09:18  踏雪寻梅  阅读(487)  评论(0编辑  收藏  举报