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

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

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

相关日志 随机文章

Comments

One Response to “计算element相对于父容器的偏移量”

  1. 南子 on 2008-07-16 2:05 pm

    嗯。

    [Reply]

Leave a Reply




请输入验证码

Use "<coolcode></coolcode>" to publish your code.

Line breaks and paragraphs are automatically converted.

Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.

京ICP备05059555号

收藏 & 分享

Powered by 17fav.com