网上对offsetParent和parentNode差异的解释都是同一篇文章千篇一律,讲的不是很清楚。

offsetParent用的最普遍的就是来计算元素在页面中的位置,我们通过 getBoundingClientRect()方法来获取页面中元素的位置,不过这只支持最新的浏览器,如果要兼容像Opera9.2和Firefox2以及Safair任何版本,都只能通过offsetParent该属性来循环获计算获得元素的位置,只是效率没getBoundingClientRect()好。贴一段缩减了来自YUI里的代码: 

function getElementXY(el){ //el 要获取位置的元素对象
    var pos = [el.offsetLeft, el.offsetTop]; //首先获得该元素相对第一个非流布局父元素的位置
    var parentNode = el.offsetParent; //获得该元素的第一个非流布局父元素
    if (parentNode != el) { 
        
while (parentNode) { 
            pos[
0+= parentNode.offsetLeft; 
            pos[
1+= parentNode.offsetTop;
            parentNode 
= parentNode.offsetParent; //循环定义非流布局父元素
        }
    }
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-14
  • 2021-07-06
  • 2022-12-23
  • 2021-08-13
  • 2021-12-30
  • 2022-02-16
相关资源
相似解决方案