js实现元素的clone与拖动

6 篇文章 1 订阅
2 篇文章 0 订阅

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>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值