scrollTop, offsetTop, pageYOffset, scrollY 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrollTop, offsetTop, pageYOffset, scrollY 的区别相关的知识,希望对你有一定的参考价值。

参考技术A DOM对象的scrollTop用于获取或者设置一个元素里滚动的距离(垂直)。例如:document.documentElement.scrollTop可以获取当前页面的滚动高度,也可以获取某个DOM元素的滚动距离,例如:document.querySelector('.content').scrollTop,前提是.content元素存在,并且可以滚动。
另外,scrollTop还可以把滚动条移到指定位置,例如:

DOM对象的offsetTop与scrollTop完全不同,它是上边框相对于父元素上边框的距离,一般是固定的,不随滚动变化。

这两个都能返回视窗滚动过的距离,相对来说,pageYOffset兼容性更好,一般我们只用 pageYOffset就行。但两者都不兼容IE9以下,另外 scrollY 可以赋值,让视窗滚动到指定位置。pageYOffser和scrollY都与scrollTop不同,pageYOffset和scrollY都只存在window对象里。

看下面等式:

javascript中scrollTop和offsetTop的区别

scrollTop是指某个可滚动区块向下滚动的距离,offsetTop则是元素的上边框与父元素的上边框的绝对距离。

1.offsetTop   :

当前对象到其上级层顶部的距离.

不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性.

2.offsetLeft    :

当前对象到其上级层左边的距离.

不能对其进行赋值.设置对象到页面左部的距离请用style.left属性.

3.offsetWidth   :

与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值

4.offsetHeight :

与style.height属性的区别在于:如对象的宽度设定值为百分比高度,则无论页面变大还是变小,style.height都返回此百分比,而offsetHeight则返回在不同页面中对象的高度值而不是百分比值

5.offsetParent  :

当前对象的上级层对象.

注意.如果对象是包括在一个DIV中时,此DIV不会被当做是此对象的上级层,(即对象的上级层会跳过DIV对象)上级层是Table时则不会有问题.

利用这个属性,可以得到当前对象在不同大小的页面中的绝对位置.

6.scrollLeft    :

对象的最左边到对象在当前窗口显示的范围内的左边的距离.

即是在出现了横向滚动条的情况下,滚动条拉动的距离.

7.scrollTop

对象的最顶部到对象在当前窗口显示的范围内的顶边的距离.

即是在出现了纵向滚动条的情况下,滚动条拉动的距离.

 

 scrollTop是指某个可滚动区块向下滚动的距离,比如向下滚动了10个像素,那么这个元素的scrollTop属性值就是10;
offsetTop则是元素的上边框与父元素的上边框的绝对距离。
两者描述的不是同一个东西,所以没有可比性。

 



以上是关于scrollTop, offsetTop, pageYOffset, scrollY 的区别的主要内容,如果未能解决你的问题,请参考以下文章

scrollTop和offsetTop的区别,scrollTopLeft和offsetLeft的区别

javascript中scrollTop和offsetTop的区别

html offsetTop,clientTop,scrollTop,offsetLeft ...之间的差异...

jsz中scrollTop,clientTop,offsetTop

clientTop、scrollTop、offsetTop详解

clientHeight,scrollHeight,offsetHeight ,以及scrollTop, offsetTop,clientTop