以前很少用原生JS,都是用JQ获取某个元素距离页面顶部的偏移量,像这样:
var offsetTop = $(obj).offset().top;
然后在用原生js的时候需要获取多层嵌套的任意元素相于<body>顶部的偏移量要这样:
function getTop(obj) {
var iTop = 0;
while (obj != window.document.body && obj != null) {
iTop += obj.offsetTop;
obj = obj.offsetParent;
}
return iTop;
}
这里的obj = obj.offsetParent没明白是什么意思,我去掉这句后,运行时,浏览器直接卡死了,说明while变成了无限循环。。那么就是obj变成了body或者null...
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
获取父级
获取最近的祖先定位元素,也就是有position: absolute/fixed/relative的最近的一个祖先
你那个是一直向上递推到 body(或者递推到根节点),累加offetTop,得出你的p 距离 body 的高度
手机写的格式比较丑:就是沿着dom树一层层往上,把相对于offsetParent的偏移累加,直到body,这样就可以得到当前元素相对于文档的偏移。
jquery源码里面实现offset方法使用的就是类似的做法,可以看一下jquery的源码。