最近须要清除区分开元素的width,height及相应的坐标等,当前这篇用来区分offsetWidth
clientWidth
scrollWidth
的区别css
假设有一个元素,width有如下几个进行组合html
clientWidth = content + padding-left + padding-rightcode
offsetWidth = content + padding-left + padding-right + border-left + border-right + scrollbarhtm
scrollWidth = content + padding-left + padding-right + scrollbar + border-left + border-right +滚动进入不可见的内容blog
在上述中,咱们能够计算出
scrollbar
为get
const scrollbar = el.offsetWidth - (border-left + border-right) - clientWidth
htmlio
<section class="client-xyz"> <p>我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容我是很长很长的内容</p> </section>
cssclass
p { margin: 20px; padding: 20px; /* border: 30px solid #333; */ /* border: 10vw solid #333; */ /* border: calc(100px - 70px) solid #333; */ border: 30px solid #333; word-break: keep-all; overflow-y: scroll; }
jscli
const Box = document.querySelector('p') let border = 0 // 获取元素的style信息 const style = window.getComputedStyle(Box, null) // border无论设置的单位如何,最终都会转为 px border = parseFloat(style['borderRightWidth'].replace('px', '')) + parseFloat(style['borderLeftWidth'].replace('px', '')) const scollbar = Box.offsetWidth - Box.clientWidth - border
el.offsetWidth - el.clientWidth
而是还须要减去border
的宽度