client* 属性
获取元素的可见区域尺寸(不含滚动条和 border)
属性说明
client* 系列属性返回元素的可见区域信息,不包含 border 和滚动条。
- clientWidth - 内容宽度 + padding(不含滚动条)
- clientHeight - 内容高度 + padding(不含滚动条)
- clientLeft - 左边框宽度
- clientTop - 上边框宽度
const element = document.getElementById('box');
console.log(element.clientWidth); // 可见宽度(不含 border 和滚动条)
console.log(element.clientHeight); // 可见高度(不含 border 和滚动条)
console.log(element.clientLeft); // 左边框宽度
console.log(element.clientTop); // 上边框宽度
示例:对比 offset 和 client
观察 border 和滚动条对结果的影响
内容区域
有边框和滚动条
有边框和滚动条
测量结果
clientWidth:
0px
offsetWidth:
0px
差值:
0px
clientLeft (border):
0px
💡 关键区别
clientWidth = content + padding(不含 border 和滚动条)
offsetWidth = content + padding + border + 滚动条
差值就是 border + 滚动条的宽度
总结
- clientWidth/Height 表示可见区域尺寸
- 不包含 border 和滚动条
- clientTop/Left 实际上就是 border 的宽度
- 适用于计算元素的可用显示空间