【问题标题】:What is a positioned ancestor?什么是定位祖先?
【发布时间】:2018-01-28 19:12:51
【问题描述】:

我正在阅读 MDN 上 article 的“定位技术”。 它谈到“绝对定位元素可以固定到相对于其最近定位的祖先元素的位置”。

我对“定位祖先”的理解是具有除静态之外的任何位置属性的祖先。但我需要专家意见来验证我的想法。

【问题讨论】:

  • 我确定这是一个骗子,所以在我找到合适的目标之前,我会在这里说:你的理解是正确的。不知道有什么回旋余地可以开始另一种解释。
  • 是的,就是这个意思。

标签: css css-position


【解决方案1】:

当提到定位的祖先时,我们指的是最接近具有一组position 值的元素的祖先,而不是static(这是默认值)。

所以这里有两个假设:

  1. 如果有多个定位的祖先,我们的意思是最近的
  2. 如果有一个带有集合position:static 的祖先(可能是由 JavaScript 设置,以更改“定位的祖先”),我们并不是指那个祖先。

为什么这很重要?因为 “定位的祖先” 是计算 lefttop 等属性的参考,当给定后代 position:absolute 时。它也被称为后代的“参考元素/父元素”。
此外,如果这个最近的祖先有一个集合 z-indexauto 除外),它会为其后代创建一个堆叠上下文。

【讨论】:

  • 最接近是什么意思?这可以是父母或兄弟姐妹吗?如果两者都可以,那么两者中哪个最接近?
  • @ReidunMarie,“最近的祖先” 仅表示 祖先(父)。不是兄弟姐妹,也不是孩子。请参阅 HTML 规范中定义的 closest()
【解决方案2】:

From the W3C:

在这种情况下,包含块是最近的定位祖先。 “定位”是指位置属性设置为的元素 相对的、绝对的或固定的——换句话说,除了正常的任何东西 静态元素。

Long description for example illustrating positioning with respect to a positioned ancestor

由相对定位的祖先建立的包含块 (“外”)。

CSS Module 3,在该页面上搜索“定位祖先”。

【讨论】:

  • @AndreiGheorghiu 所以你是说蒂姆·伯纳斯-李错了?我确定您认为我链接到 W3Schools,但我没有。这些链接指向来自 W3C 的 CSS 规范文章。无论如何,您对 W3Schools 的陈述多年来都不是真的。
  • 你是对的,我之前的评论是基于你链接 W3Schools 的错误印象。我向你道歉,我向你保证我是来帮忙的。
猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多