元素偏移量offset、可视区client、滚动scroll

it2024-12-12  16

元素偏移量offset

offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

获得元素距离带有定位父元素的位置获得元素自身的大小(宽度高度)注意:返回的数值都不带单位

offset系列常用属性:

element.offsetParent:返回作为该元素带有定位的父级元素,如果父级都没有定位则返回bodyelement.offsetTop:返回元素相对带有定位父元素上方的偏移element.offsetLeft:返回元素相对带有定位父元素左边框的偏移(没有Right和Buttom)element.offsetWidth:返回自身包括padding、边框、内容区的宽度,返回数值不带单位element.offsetHeight:返回自身包括padding、边框、内容区的高度,返回数值不带单位

offset和style的区别:

offset可以得到任意样式表中的样式值 style只能得到行内样式表中的样式值offset系列获得的数值是没有单位的 style.width获得的是带有单位的字符串offsetWidth包含padding+border+width style.width获得的是不包含padding和border的值offsetWidth等属性是只读属性,只能获取不能赋值 style.width是可读写属性,可以获取也可以赋值

因此,我们想要获取元素大小位置,用offset更合适,想要给元素更改值,则需要用style改变

元素可视区client

client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client的相关属性可以动态的得到该元素的边框大小、元素大小等。

client系列属性:

element.clientTop:返回元素上边框的大小element.clientLeft:返回元素左边框的大小element.clienttWidth:返回自身包括padding、内容区的宽度,不含边框,返回数值不带单位element.clientHeight:返回自身包括padding、内容区的高度,不含边框,返回数值不带单位

clientHeight + 滚动条 + 边框 = offsetHeight

元素滚动scroll

scroll翻译过来就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小、滚动距离等。

scroll系列属性:

element.scrollTop:返回被卷去的上侧距离,返回数值不带单位element.scrollLeft:返回被卷去的左侧距离,返回数值不带单位element.scrollWidth:返回自身实际的宽度,不含边框,返回数值不带单位element.scrollHeight:返回自身实际的高度,不含边框,返回数值不带单位

应用场景:

判定元素是否滚动到底

element.scrollHeight - element.scrollTop === element.clientHeight

返回顶部

element.scrollTop = 0

页面被卷去的头部兼容性解决方案:

需要注意的是,页面被卷去的头部,有兼容性问题,因此被卷去的头部通常有如下几种写法:

声明了DTD,使用document.documentElement.scrollTop未声明DTD,使用document.body.scollTop新方法window.pageYoffset和window.pageXoffset(IE9开始支持)
最新回复(0)