模仿windows界面的鼠标拖拽,在网页上生成一个鼠标点击拖拽事件,
需要注意:需要设置一个控制的开关,判断为开时正常拖拽,判断为关时,拖拽鼠标获得的矩形立即消失;
完整代码:
<!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;
        }
        div {
            position: absolute;
            width: 1px;
            height: 1px;
            background: pink;
            border: solid 1px #54a;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        var div = document.querySelector('div');
        var f
        //设置一个开关
        var w = 0,
            h = 0,
            l = 0,
            t = 0;
        var movex = 0,
            movey = 0,
            downx = 0,
            downy = 0;
        window.onmousedown = (e) => {
            f = true;
            e = window.event || e.event;
            //当点击按下时,开关开启
            downx = e.clientX;
            downy = e.clientY;
            //获取按下的点的坐标
            window.onmousemove = (e) => {
                e = window.event || e.event
                movex = e.clientX;
                movey = e.clientY;
                //获取终止位置的点的坐标
                l = Math.min(movex, downx);
                t = Math.min(movey, downy);
                w = Math.abs(movex - downx);
                h = Math.abs(movey - downy);
                //计算出移动的长和宽
                if (f) {
                    div.style.cssText = `left:${l}px;top:${t}px;width:${w}px;height:${h}px`;
                }
                //当开关为开时,div中生成一个矩形
            }
        }
        window.onmouseup = (e) => {
            f = false
            e = window.event || e.event
            div.style.cssText = ``;
            //当鼠标抬起,开关为关;生成的矩形消失
        }
    </script>
</body>
</html>