HTMLElement.offsetParent只读属性返回对对象的引用,该对象是位于包含元素的最接近的对象(在包含层次结构中最近)。如果元素未定位,则由返回最近的表、表单元格或根元素。
如果元素没有定位,为什么.offsetParent返回最近的表(即position: static)?为什么.offsetParent不总是返回最近的定位元素?
我知道我的问题的答案是“因为标准是这么说的”,但是为什么标准的开发人员会这样决定呢?这种行为的目的是什么?
发布于 2022-11-23 02:08:48
医生们充其量只是误导或误导。
新版本更清楚:
定位的祖先是:
td,th,table。因此,如果在最近的.offsetParent、th或table之前有一个元素,则th会“返回最近的定位元素”。
console.log("in positioned", target1.offsetParent);
console.log("in static", target2.offsetParent);.positioned { position: relative }<table>
<tbody>
<tr>
<td>
<div class=positioned>
<span id=target1>content</span>
</div>
</td>
<td>
<div class=static>
<span id=target2>content</span>
</div>
</td>
</tr>
</tbody>
</table>
至于为什么他们决定将这些元素作为定位元素来处理,即使它们的计算position是"static",这当然是因为它们的位置实际上是由与静态规则不匹配的规则决定的。
https://stackoverflow.com/questions/46505758
复制相似问题