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 的宽度
  • 适用于计算元素的可用显示空间