Javascript Drag & Drop

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js drag + drop koyoz</title>
<style type="text/css">
{margin:0px;padding:0px;font-size:12px;}
#drop{position:absolute;width:200px;height:300px;border:1px #A5B6C8 solid;background:#EEF3F7;left:400px;top:100px;padding:10px;}
.item {width:100px; height:28px;background:#C2ECA7;text-align:center;line-height:28px;cursor:pointer;margin-top:5px;}
#items {margin: 50px 0 0 100px;}
</style>
</head>
<body>
<div id="drop">拖过来试试</div>

<div id="items">
<div id="item1" class="item">11111</div>
<div id="item2" class="item">22222</div>
<div id="item3" class="item">33333</div>
<div id="item4" class="item">44444</div>
<div id="item5" class="item">55555</div>
<div id="item6" class="item">66666</div>
</div>
<script type="text/javascript">
var makeDrag_flag = false;
var makeDrop_objs = [];
//注册放置对象
function makeDrop(obj)
{
makeDrop_objs.push(obj);
}

//注册拖动对象
function makeDrag(obj)
{
obj.onmousedown = function (e)
{
if (!document.all) e.preventDefault();
var oPos = getObjPos(obj);
var cPos = getCurPos(e);
makeDrag_flag = true;
document.onmouseup = function (e){
makeDrag_flag = false;
document.onmousemove = null;
document.onmouseup = null;
//放置位置检查开始
var nPos = getCurPos(e);
for(i = 0; i < makeDrop_objs.length; i++)
{
var tg = makeDrop_objs[i];
var tPos = getObjPos(tg);
var tg_w = tg.offsetWidth;
var tg_h = tg.offsetHeight;
if ((nPos.x > tPos.x) && (nPos.y > tPos.y) && (nPos.x < tPos.x + tg_w) && (nPos.y < tPos.y + tg_h))
{
tg.innerHTML += '<p>' + obj.innerHTML + '拖入</p>'
obj.style.display = 'none';
}
}
//放置位置检查结束
};
document.onmousemove = function (e)
{
if (makeDrag_flag)
{
obj.style.position = 'absolute';
var Pos = getCurPos(e);
obj.style.left = Pos.x - cPos.x + oPos.x + 'px';
obj.style.top = Pos.y - cPos.y + oPos.y + 'px';
}
return false;
}
}
}

function getObjPos(obj)
{
var x = y = 0;
if (obj.getBoundingClientRect)
{
var box = obj.getBoundingClientRect();
var D = document.documentElement;
x = box.left + Math.max(D.scrollLeft, document.body.scrollLeft) - D.clientLeft;
y = box.top + Math.max(D.scrollTop, document.body.scrollTop) - D.clientTop;
}
else
{
for(; obj != document.body; x += obj.offsetLeft, y += obj.offsetTop, obj = obj.offsetParent );
}
return {'x':x, 'y':y};
}

function getCurPos(e)
{
e = e || window.event;
var D = document.documentElement;
if (e.pageX) return {x: e.pageX, y: e.pageY};
return {
x: e.clientX + D.scrollLeft - D.clientLeft,
y: e.clientY + D.scrollTop - D.clientTop
};
}
</script>
<script type="text/javascript">
//逐个注册drag事件
var itemx = document.getElementById('items').getElementsByTagName("div")
for(var i = 0; l = itemx.length, i < l; i++)
{
makeDrag(itemx[i]);
}
//注册放置对象
var dropItem = document.getElementById('drop');
makeDrop(dropItem);
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值