js实现元素的clone与拖动有时候还是会遇到的,以下是示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="textml; charset=utf-8" />
<title>Clone</title>
<style type="text/css">
body,div{margin:0;padding:0;}
body{background:#222;}
div{position:absolute;width:100px;height:100px;cursor:move;border:1px solid #888;background:#000;}
#d1{top:50px;left:50px;font-size: 20px;color: #fff;}
#d2{top:200px;left:50px;font-size: 20px;color: #fff;}
#d3{top:350px;left:50px;font-size: 20px;color: #fff;}
</style>
</head>
<body>
<div id="d1">1</div>
<div id="d2">2</div>
<div id="d3">3</div>
</body>
<script type="text/javascript">
window.onload = function ()
{
var d1 = document.getElementById("d1");
var d2 = document.getElementById("d2");
var d3 = document.getElementById("d3");
cloneMove(d1);
cloneMove(d2);
cloneMove(d3);
};
function cloneMove(cloneMoves)
{
var disX =0;
var disY = 0;
cloneMoves.onmousedown = function (event)
{
var event = event || window.event;
disX = event.clientX - this.offsetLeft;
disY = event.clientY - this.offsetTop;
var cloneTemp = cloneMoves.cloneNode(true);
cloneTemp.style.left = this.currentStyle ? this.currentStyle["left"] : getComputedStyle(this, null)["left"];
cloneTemp.style.top = this.currentStyle ? this.currentStyle["top"] : getComputedStyle(this, null)["top"];
document.body.appendChild(cloneTemp);
document.onmousemove = function (event)
{
var event = event || window.event;
var iL = event.clientX - disX;
var iT = event.clientY - disY;
var maxL = document.documentElement.clientWidth - cloneMoves.offsetWidth;
var maxT = document.documentElement.clientHeight - cloneMoves.offsetHeight;
iL <= 0 && (iL = 0);
iT <= 0 && (iT = 0);
iL >= maxL && (iL = maxL);
iT >= maxT && (iT = maxT);
cloneTemp.style.left = iL + "px";
cloneTemp.style.top = iT + "px";
return false;
};
document.onmouseup = function ()
{
document.onmousemove = null;
document.onmouseup = null;
};
this.setCapture && this.setCapture();
return false
}
}
</script>
<html>