1. JS 中的 offsetParent 和 parentNode
- 在正常的文档流中,元素的 offsetParent 值为 body 元素,offsetLeft 和offsetTop 获取的也是相对于 body 的偏移量;
- 而 parentNode 指的是元素的父节点。
2. 获取元素相对于 body 的偏移量
需要考虑到非正常文档流中(有关元素不处于正常文档流的情况,这里不做介绍),元素的offsetParent不为body,代码如下:
function offset(el){
var left, top = null;
var elPar = el.offsetParent;
left += el.offsetLeft;
top += el.offsetTop;
while (elPar) {
if (navigator.userAgent.indexOf("MSIE 8.0") == -1) //若不是IE8,则需要加上offsetParent的clientLeft和clientTop
{
left += elPar.clientLeft;
top += elPar.clientTop;
}
left += elPar.offsetLeft;
top += elPar.offsetTop;
elPar = elPar.offsetParent;
}
return {left: left, top: top};
}