「js/jquery」offsetTop在不同浏览器下的表现

offsetTop​:元素到offsetParent顶部的距离。
offsetParent距离元素最近的一个具有定位的祖宗元素(relative,absolute,fixed),若祖宗都不符合条件,offsetParent为body。

offsetTop和​offsetLeft与​offsetParent有关

image

所以一旦有具有定位的祖宗元素,则当前元素获取到的​offsetTop​就会偏小。

为了获取正确的元素距离顶部的有效距离,需要对offsetParent的offsetTop进行计算,如果当前元素有offsetParent则当前元素的offsetTop为其offsetTop加上它的offsetParent的offsetTop,如果offsetParent还有它offsetParent则需要一直逐级向上查询,直到body。

function elemOffsetY(elem) {
    return elem.offsetParent ? elem.offsetTop + elemOffsetY(elem.offsetParent) : elem.offsetTop;
}

参考:关于offsetTop的理解

你可能感兴趣的:(「js/jquery」offsetTop在不同浏览器下的表现)