JS做物体的拖拽效果

示意图:

JS做物体的拖拽效果

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            position: absolute;
            top: 0;
            left: 0;
            width: 100px;
            height: 100px;
            background-color: cornflowerblue;

        }
    </style>
</head>
<body>
        
        <div></div>
        <script>
            // 获取要实现拖拽的物体
            var box = document.getElementsByTagName('div')[0];
            // 调用函数
            tuozhuai(box);

            function tuozhuai(dom){
            dom.onmousedown = function(e){
            // 记录鼠标上一次的位置
            var xLast = 0;
            var yLast =0;           
            // 处理事件
            var event = event || e;
            // 记录按下时的横坐标与纵坐标
            var xMouse = event.clientX;
            var yMouse = event.clientY;
            // 记录鼠标与物体边缘的距离,方便下一步计算移动后的top和left
            var xDis = xMouse - this.offsetLeft;
            var yDis = yMouse - this.offsetTop; 
            // 将物体记录,后面调用。减少代码的改动。
            var self = this;

            // 鼠标移动
            document.onmousemove = function(e){
                var event = event || e;
                var newLeft = event.clientX - xDis;
                var newTop = event.clientY -yDis;
                // 鼠标移动,改变物体的left值和top值
                self.style.left = newLeft + "px";
                self.style.top = newTop + "px";

            }
            
            document.onmouseup = function(){
                // 鼠标抬起,将事件置空
                document.onmouseup = null;
                document.onmousemove = null;
                
            }
        }

            }

        </script>
</body>

</html>