我正在看Pro JS技术书中的这段javasript。

他正在尝试查找元素的offsetLeft。但是在firefox中,offsetParent是否不总是根元素主体?

我不确定它将如何递归。

// Find the X (Horizontal, Left) position of an element
function pageX(elem) {
// See if we' re at the root element, or not
return elem. offsetParent ?
// If we can still go up, add the current offset and recurse upwards
elem. offsetLeft + pageX( elem. offsetParent ) :
// Otherwise, just get the current offset
elem. offsetLeft;
}

最佳答案

元素的offset parent是其最接近的祖先。我的猜测是,在您的实验中,没有祖先被定位。如果某个元素的position style propertyrelativeabsolutefixed,...我认为是所有元素)不是static(默认值),则该元素被“定位”,在其style属性中或通过CSS选择器。

因此,例如,这里没有定位元素:

<body>
  <p>Hi there,
      <span>I'm some text in a span inside a paragraph</span>
  </p>
</body>


...因此,段落和跨度的offsetParent都是document元素。

在这里,我们将段落定位:

<body>
  <p style='position: relative'>Hi there,
    <span>I'm some text in a span inside a paragraph</span>
  </p>
</body>


...因此spanoffsetParent是该段落。

09-17 04:13