HOME
NAVIGATION

DOM2元素大小

☞之前的博客有一些相关的
☞dom2、3相关合集

0.偏移量

元素的可见大小由其高度、宽度决定,包括所有内边距、滚动条和边框大小(注意,不包括外边距)

在做偏移量的测试时,别忘了这个!

*{
padding: 0;
margin: 0;
}

offsetHeight

offsetHeight:元素在垂直方向上占用的空间大小,以像素计。包括元素的高度、(可见的)水平滚动条的高度、上边框高度和下边框高度

个人测试:子元素(内容大小+padding*2+border*2+滚动条)

offsetWidth

offsetWidth:元素在水平方向上占用的空间大小,以像素计。包括元素的宽度、(可见的)垂直滚动条的宽度、左边框高度和右边框高度

个人测试:子元素(内容大小+padding*2+border*2+滚动条)

offsetLeft

offsetLeft:元素的左外边框至包含元素的左内边距之间的像素距离。

个人测试:父元素的padding-left+子元素的margin

offsetTop

offsetTop: 元素的上外边框至包含元素的左内边距之间的像素距离

个人测试:父元素的padding-left+父元素内容高度+子元素的margin

//亲测貌似这两个属性和滚动条没什么关系

1.客户区大小:

指的是元素内容及内边距所占据的空间大小,和偏移量相似,是只读的,也是每次访问都要重新计算的。

clientWidth:

clientWidth:元素内容区宽度加上左右内边距宽度(要减去滚动条本身的宽度,一般是17px)。

clientHeight:

clientHeight:元素内容区高度机上上下内边距高度(要减去滚动条本身的宽度,一般是17px)。

2.滚动大小:

滚动大小指的是包含滚动内容的元素的大小。

scrollHeight:

scrollHeight:在没有滚动条的情况下,元素内容的总高度(就是说假设没有滚动条,元素内容本来应有的高度)

scrollWidth:

scrollWidth:在没有滚动条的情况下,元素内容的总宽度

scrollLeft:

scrollLeft:被隐藏在内容区域左侧的像素数。通过设置这个属性可以改变元素的滚动位置

scrollTop:

scrollTop:被隐藏在内容区域上方的像素数。通过设置这个属性可以改变元素的滚动位置

通过scrollLeft和scrollTop属性既可以确定元素当前滚动的状态,也可以设置元素的滚动位置。 在元素尚未被滚动时,两个属性的值都等于0.如果元素被垂直滚动了,那么scrollTop的值会大于0,且表示元素上方不可见内容的像素高度。 水平滚动同理。

这两个属性都是可以设置的,因此将元素的scrollLeft和scrollTop设置为0,即可充值元素的滚动位置。

3.确定元素大小

getBoundingClientRect()方法

这个方法会返回一个矩形对象,包含4个属性:left\top\right和bottom.这些属性给出了元素在页面中相对于视口的位置。

一般来说,对于子元素来说

inner.getBoundingClientRect().left

得出的值为父元素的(border+padding+margin-scrollLeft)+子元素的(margin)

但是浏览器对于这个方法的实现略有不同,IE8及更早版本认为文档的左上角坐标是(2,2),而其他浏览器包括IE9则将传统的(0,0)作为起点坐标。