Js方框随鼠标移动

2020-05-01

screenX 和screenY

参照点:电脑屏幕左上角

screenX:鼠标点击位置相对于电脑屏幕左上角的水平偏移量

screenY:鼠标点击位置相对于电脑屏幕左上角的垂直偏移量

clientX和clientY

参照点:浏览器内容区域左上角

clientX:鼠标点击位置相对于浏览器可视区域的水平偏移量(不会计算水平滚动的距离)

clientY:鼠标点击位置相对于浏览器可视区域的垂直偏移量(不会计算垂直滚动条的距离)

pageX和pageY

参照点:网页的左上角

pageX:鼠标点击位置相对于网页左上角的水平偏移量,也就是clientX加上水平滚动条的距离

pageY:鼠标点击位置相对于网页左上角的垂直平偏移量,也就是clientY加上垂直滚动条的距离

offsetX和offsetY

offsetX:鼠标点击位置相对于触发事件对象的水平距离

offsetY:鼠标点击位置相对于触发事件对象的垂直距离

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        body {
            width: 5000px;
            height: 5000px;
        }

        #test {
            width: 20px;
            height: 20px;
            background-color: red;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
<div id="test"></div>
<script>
    let test = document.getElementById('test');
    console.log(test);
    // 注册移动鼠标事件
    document.documentElement.onmousemove = function (e) {
        console.log('================================');
        console.log('offset ' + e.offsetX + ',' + e.offsetY);
        console.log('screen ' + e.screenX + ',' + e.screenY);
        console.log('client ' + e.clientX + ',' + e.clientY);
        console.log('page ' + e.pageX + ',' + e.pageY);

        let x = e.pageX;
        let y = e.pageY;

        test.style.left = x + 'px';
        test.style.top = y + 'px';

    };
</script>
</body>
</html>