计算element相对于父容器的偏移量

如果没有提供parentId参数,则计算相对于给定element的最顶层容器的偏移量
特别需要注意的是,这里所指的父级容器,是指最近的一个有定位的元素,意即设置了position属性为absolute或者relative的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getOffsetXY(elementId, parentId){
var element = document.getElementById(elementId);
var element_X = element.offsetLeft;
var element_Y = element.offsetTop;
while (true) {
if ((!element.offsetParent) || (!element.offsetParent.style) || (!!parentId && element.offsetParent.id == parentId)) {
break;
}
element_X += element.offsetParent.offsetLeft;
element_Y += element.offsetParent.offsetTop;
element = element.offsetParent;
}
//element_X = element_X - document.body.scrollLeft;
//element_Y = element_Y - document.body.scrollTop;
return {
x: element_X,
y: element_Y
};
}

显示 Gitment 评论