JavaScript盒子拖拽的简单案例

让小盒子在大盒子中拖动,不能超出大盒子,如下图:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .bigBox {
            position: relative;
            width: 500px;
            height: 500px;
            border: 1px solid #000;
            margin: 50px auto;
        }

        .box {
            position: absolute;
            left: 0;
            top: 0;
            width: 100px;
            height: 100px;
            background: red;
        }
    </style>
</head>
<body>
    <div class="bigBox">
        <div class="box"></div>
    </div>
    <script>
        var $bigBox = document.querySelector('.bigBox');
        var $box = document.querySelector('.box')

        // 鼠标按下
        $box.onmousedown = function (e) {
            e = e || window.event;
            // 获取最大移动距离
            var maxX = $bigBox.clientWidth - $box.offsetWidth,
                maxY = $bigBox.clientHeight - $box.offsetHeight;
            // 获取鼠标偏移量
            var x = e.offsetX,
                y = e.offsetY;
            // 获取大盒子的偏移量
            var left = $bigBox.offsetLeft,
                top = $bigBox.offsetTop;

            document.onmousemove = function (e) {
                e = e || window.event;
                // 小盒子的移动距离
                var moveX = e.pageX - x - left - $bigBox.clientLeft,
                    moveY = e.pageY - y - top - $bigBox.clientTop;
                if (moveX < 0) {
                    moveX = 0;
                } else if (moveX > maxX) {
                    moveX = maxX;
                }
                if (moveY < 0) {
                    moveY = 0;
                } else if (moveY > maxY) {
                    moveY = maxY;
                }

                $box.style.left = moveX + 'px';
                $box.style.top = moveY + 'px';
            }

        }
        // 鼠标抬起
        document.onmouseup = function () {
            // 取消时间
            document.onmousemove = null;
        }
    </script>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/H-Y-Z/p/10510212.html