我正在看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 property(relative
,absolute
,fixed
,...我认为是所有元素)不是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>
...因此
span
的offsetParent
是该段落。