clientX与offsetX、clientWidth与offsetWidth的区别

相关属性介绍

都要结合鼠标事件监听使用

1、client相关属性

获取鼠标位置

鼠标相对于视口的位置
e.clientX e.clientY (e是鼠标对象)

获取节点尺寸

节点.clientWidth; 节点.clientHeight;(返回值为数值)

clientWidth = content宽度 + 左padding + 右padding(即:实际尺寸 不含border和margin,不论是什么盒模型)

clientHeight = content高度 + 左padding + 右padding (即:实际尺寸 不含border和margin,不论是什么盒模型)

获取边框宽度

clientTop = 上边框的宽度

clientLeft = 左边框的宽度

2、offset相关属性

获取鼠标位置

鼠标相对于事件源的位置
e.offsetX e.offsetY (如果鼠标事件为mousemove,则移到子节点时变成相对于子节点的位置)

获取节点尺寸

节点.offsetWidth; 节点.offsetHeight;(返回值为数值)

offsetWidth = content宽度 + 左padding + 右padding + 左boder + 右boder

offsetHeight = content高度 + 左padding + 右padding + 左boder + 右boder

offsetTop:当前节点的 上边框外边缘 到最近的已定位父级(offsetParent) 上边框内边缘 的距离。

offsetLeft:当前元素 左边框外边缘 到最近的已定位父级(offsetParent) 左边框内边缘 的距离。
offsetParent:获取离当前元素最近的已定位父级(即:position有以下属性值之一:relative absolute fixed),如果父级都没有定位,则获取的为body节点

区别

clientX/clientY 的位置是鼠标相对于整个视口的左上角的位置
offsetX/offsetY 的位置是鼠标相对于事件源(即鼠标所停留在的那个节点)的左上角的位置

clientWidth/clientHeight 的尺寸是节点不包含border宽度和margin的尺寸,不论是什么盒模型都不包含
offsetWidth/offsetHeight 的尺寸是节点不包含margin的尺寸

区别图如下
区别图

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值