JS中 PageX、clientX、offsetX、layerX、offsetTop、offsetWidth各位置属性详解

一.PageX和clientX

PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 pageX = 200
clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,
即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移而变化.
比如原先高度是200,滚动条向下滑动100的距离,那么此时clientX = 100

二.screenX

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

三.offsetX和layerX

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

layerX:鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点
也就是当触发元素设置了相对或者绝对定位后。

四。offsetTop

offsetTop:当前div位于父级的距离(前提得有定位),如果存在父级position: relative;

五。offsetWidth

offsetWidth: 不包括margin的距离,只有 border + content + padding

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{
      width: 100px;
      height: 100px;
      border: 10px solid red;
      margin: 50px;
      padding: 50px;
    }
  </style>
</head>
<body>
  <div></div>
  <div></div>
  <div id="div1"></div>
  <div></div>
  <script>
    const divElm = document.getElementById('div1')
    divElm.onmousemove = (e) => {
      const pageY = e.pageY; // 相对于页面的距离,带有滚动条的距离
      const clientY = e.clientY; // 相对于窗口的距离,不会带有滚动条的距离,滚动条变化,距离就变了
      const offsetTop = e.target.offsetTop; // 当前div位于父级的距离(前提得有定位),如果存在父级position: relative;
      const offsetY = e.offsetY; // 当前鼠标位于div的距离
      const offsetWidth = divElm.offsetWidth; // 不包括margin的距离,只有 border + content + padding
      console.log('pageY=' + pageY);
      console.log('clientY=' + clientY);
      console.log('offsetTop=' + offsetTop);
      console.log('offsetY=' + offsetY);
      console.log('offsetWidth=' + offsetWidth); 
  }
  </script>
</body>
</html>
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值