function getAbsolutePosition(ele)
        {
            var x = ele.offsetLeft;
            var y = ele.offsetTop;
            while (ele.offsetParent != null)
            {
                ele = ele.offsetParent;
                x += ele.offsetLeft;
                y += ele.offsetTop;
            }
            return { x: x, y: y };
        }
用这个方法获取一个元素的绝对坐标,但是当他的某一层父元素有设置border宽度后,这个位置就出现了偏移,奇怪,为什么?我想获取一个text的绝对坐标,然后动态生成一个宽度和其相等的div 浮在正下方。

解决方案 »

  1.   

    border的宽度也会影响布局,请看盒子模型:【分享】说说标准——你真的了解盒子模型(box model)吗?
      

  2.   

    可是用offsetLeft算绝对位置的话 他只考虑当前元素以及他的offsetParent 一直向上追溯 并不根据dom父节点来,难道得先用offsetLeft算一遍,然后在沿着dom树加一次border?
    有没有好点的办法呢?
      

  3.   

    lz可以参考jquery的源码, 参考 .offet()方法的写法, 确实根据DOM和浏览器差异进行了计算, 得出的最终绝对定位. 或者lz直接用jquery来做, 方便
      

  4.   

    呵呵 offset获取的就是相对位置
      

  5.   


    试了jQuery的,他用getBoundingRect做的,居然可以精确定位,多谢!