实现一个拖拽然后原路返回的功能

话不多说;直接上代码(复制粘贴即可使用)

<!DOCTYPE html>

<html>

<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #box{
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
        }
    </style>
</head>
<body>
    <input type="button" name="btn" id="btn" value="回到原点" />
    <div id="box">
    </div>
    <script type="text/javascript">
        var arr = [];
        function drag(obj){
            obj.onmousedown = function(evt){
                arr  = [];
                var e = evt || window.event;
                //获取鼠标的相对于对象的坐标值
                var disX = e.offsetX;
                var disY = e.offsetY;
                document.onmousemove = function(evt){
                    var e = evt || window.event;
                    //求出对象到页面边的距离
                    var left = e.pageX - disX;
                    var top = e.pageY - disY;
                    //设置边界
                    //左右边界 
                    if(left <= 0){
                        left = 0;
                    }else if(left >= document.documentElement.clientWidth - obj.offsetWidth){
                        left = document.documentElement.clientWidth - obj.offsetWidth;
                    }
                    //上下边界 
                    if(top <= 0){
                        top = 0;
                    }else if(top >= document.documentElement.clientHeight - obj.offsetHeight){
                        top = document.documentElement.clientHeight - obj.offsetHeight;
                    }
                    //设置对象的坐标值
                    obj.style.left = left + "px";
                    obj.style.top = top + "px";
                    console.log({"left":obj.offsetLeft,"top" : obj.offsetTop});
                    //记录下对象运动的轨迹
                    arr.push({"left":obj.offsetLeft,"top" : obj.offsetTop});
                }
                //取消移动事件
                document.onmouseup = function(){
                    document.onmousemove = null;
                }
                //删除拖拽的默认行为
                document.ondragstart = function(){
                    return false;
                }
            }
        }
        var oBox = document.getElementById("box");
        var oBtn = document.getElementById("btn");
        oBtn.onclick = function(){
            var index = arr.length - 1;
            var timer = setInterval(function(){
                if(index < 0){
                    clearInterval(timer);
                    arr = [];
                }else{
                    oBox.style.left = arr[index].left + "px";
                    oBox.style.top = arr[index].top + "px";
                    index --;
                }
                
            },30)
        }
        drag(oBox);
    </script>
</body>

</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。