DOM中的offsetWith,clientWidth和scrollWidth

352 阅读1分钟

盒模型

dom的元素尺寸基于盒模型。

w3c规范的标准盒模型中,元素的宽度(width属性)只等于content宽度;而IE定义的怪异盒模型中,width=content+padding+border。

css属性box-sizing: content-box/border-box,可分别将元素设置为标准盒模型和怪异盒模型。

src=http___ddrvcn.oss-cn-hangzhou.aliyuncs.com_2019_5_aAvIrm.gif&refer=http___ddrvcn.oss-cn-hangzhou.aliyuncs.gif

offsetWidth

如下图,其中offsetParent是距离最近有定位属性的父级元素,如不存在则是body元素;

offsetWidth = content+padding+border。

其中offsetLeft是元素边框外侧到offsetParent元素边框内侧的距离。

2AE576E4-2662-4ba0-8FBA-CBA8D30F2890.png

clientWidth

元素的视口尺寸,不包含滚动条占用的空间。

如下图,clientWidth=content+padding。

其中,document.documentElement.clientWidth常用于检测浏览器视口尺寸。

75D08CE9-B851-40be-A096-09A0FDFAD61B.png

scrollWidth

如下图,scrollWidth为元素的总尺寸,即等于实际尺寸+padding。所以在不需要滚动元素中,scrollWidth= clientWidth。

其中,scrollTop是隐藏区域的尺寸,即等于滚动条滚动的距离。

955D16C7-9639-47ca-AD21-D8F9C2DE739D.png