js中有一套方便的获取元素尺寸的办法:offset系列
offset常用属性(5个)
- offsetWidth和offsetHeight————(检测盒子自身宽高+padding+border)
- offsetLeft和offsetTop————(检测距离父盒子有定位的左/上面的距离)
- offsetParent————(检测父系盒子中带有定位的父盒子节点)
offsetwidth和offsetheight
offset宽/高 = 盒子自身的宽/高 + padding +border;
(相较与client系列和scroll系列,这两个算宽高都不带边框。)
offsetWidth = width+padding+border;
offsetHeight = Height+padding+border;
offsetLeft和offsetTop
offsetLeft:返回距离上级盒子(带有定位)左边的位置,如果父级都没有定位则以body为准
offsetLeft和style.left的区别
- 最大区别在于offseLeft可以返回没有定位盒子的距离左侧的位置。 而 style.left不可以
- offsetTop返回的是数字(值是四舍五入取整),style.top返回的是字符串(除了数字外还带有单位px)
- offsetTop只读,而style.top可读写,写入时是以行内样式写入
- style.top只能获取行内式样式。如果没有给 HTML 元素指定过 top 样式,则style.top 返回的是空字符串。
offsetParent:返回该对象的父级
如果当前元素的父级元素没有进行CSS定位(position为absolute或relative,fixed),offsetParent为body。
如果当前元素的父级元素中有CSS定位,offsetParent取最近的那个父级元素