浅谈clientX、offsetX、screenX、pageX

clientX、offsetX相对于鼠标事件对象,需要触发鼠标事件才会有clientX、offsetX。

clientX:当事件被触发时鼠标指针相对于窗口左边界的水平坐标,参照点为浏览器内容区域的左上角,该参照点会随之滚动条的移动而移动。

offsetX:当事件被触发时鼠标指针相对于所触发的标签元素的左内边框的水平坐标。

screenX:鼠标位置相对于用户屏幕水平偏移量,此时的参照点也就是原点是屏幕的左上角。

pageX:参照点是页面本身的body原点,而不是浏览器内容区域左上角,它计算的值不会随着滚动条而变动,它在计算时其实是以body左上角原点(即页面本身的左上角,而不是浏览器可见区域的左上角)为参考点计算的,这个相当于已经把滚动条滚过的高或宽计算在内了,所以无论滚动条是否滚动,他都是一样的距离值。

可以自己写一下代码试验一下,自行加入其他元素

<!DOCTYPE html>
<html lang="en">

<head>
    <title>Mancuoj</title>
</head>

<body>
    <p>移动鼠标看看:</p>
    <p id="screen-log"></p>


    <script>
        let screenLog = document.querySelector('#screen-log');
        document.addEventListener('mousemove', logKey);

        function logKey(e) {
            screenLog.innerText = `
                Screen X/Y: ${e.screenX}, ${e.screenY}
                Client X/Y: ${e.clientX}, ${e.clientY}
                Offset X/Y: ${e.offsetX}, ${e.offsetY}
                Page X/Y: ${e.pageX}, ${e.pageY}`;
        }
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mancuoj

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值