从the MDN documentation for Element.offsetParent
开始:HTMLElement.offsetParent
只读属性会传回对象的指涉,此对象是最近(在内含项目阶层中最近)定位的包含元素。如果元素是未定位的,则offsetParent会传回最近的表格、表格储存格或根元素
为什么.offsetParent
在元素没有定位的情况下返回最近的表(即position: static
)?为什么.offsetParent
不总是返回最近定位的元素?
我知道我的问题的答案是“因为标准是这样说的”,但是为什么标准的开发者会做出这样的决定呢?这种行为的目的是什么?
1条答案
按热度按时间0x6upsns1#
这些文件充其量是误导性的。
新版本更加清晰:
定位的祖系为:
td
、th
、table
(如果元素本身是静态定位的)。因此,如果在最近的
td
、th
或table
之前有一个元素,则.offsetParent
会“返回最近的定位元素”:第一个
至于为什么他们决定这些元素应该被视为定位元素,即使他们计算的
position
是"static"
,这肯定是因为他们的位置实际上是由规则决定的,而这些规则与 static 的规则不匹配。