offsetTop
:元素到offsetParent顶部的距离。
offsetParent
:距离元素最近的一个具有定位的祖宗元素(relative,absolute,fixed),若祖宗都不符合条件,offsetParent为body。
offsetTop
和offsetLeft
与offsetParent
有关。
所以一旦有具有定位的祖宗元素,则当前元素获取到的offsetTop
就会偏小。
为了获取正确的元素距离顶部的有效距离,需要对offsetParent的offsetTop进行计算,如果当前元素有offsetParent则当前元素的offsetTop为其offsetTop加上它的offsetParent的offsetTop,如果offsetParent还有它offsetParent则需要一直逐级向上查询,直到body。
function elemOffsetY(elem) {
return elem.offsetParent ? elem.offsetTop + elemOffsetY(elem.offsetParent) : elem.offsetTop;
}
网友评论