0

这是这个问题的几乎重复,但那里的答案似乎都没有真正解释这个的基本原理,这就是我真正想要的。

我知道绝对定位的元素会检查父系树,直到它们遇到具有绝对、固定或相对定位的东西,然后将自己 w/r/t 放置到该元素。

我的问题是:相对定位(相对于静态的,比如说)我错过了什么会使这变得直观?作为一个新手,从我(完全无知)的角度来看,这感觉非常武断,所以我渴望专家在这里提供帮助。声明某个元素相对的行为是否也使其成为 X,其中 X 是子项继承其右上角的合乎逻辑的东西?没有设置toprightbottomleft的相对定位元素本质上是静态元素,还是在更深层次上是某种根本不同的动物?

4

1 回答 1

2

如果您阅读规范,它是有道理的:

框的位置(可能还有大小)由“顶部”、“右侧”、“底部”和“左侧”属性指定。这些属性指定相对于盒子的包含块的偏移量。绝对定位的盒子从正常流程中取出。这意味着它们对后面的兄弟姐妹的布局没有影响。此外,尽管绝对定位的框有边距,但它们不会与任何其他边距一起折叠。

我在适当的部分添加了重点。绝对定位的元素被它们的包含块偏移

包含块指定:

在 CSS 2.1 中,许多框的位置和大小是相对于称为包含块的矩形框的边缘计算的。一般来说,生成的盒子充当后代盒子的包含块;我们说一个盒子为它的后代“建立”了包含块。短语“盒子的包含块”是指“盒子所在的包含块”,而不是它生成的那个。

相对位置建立了一个新的包含块,因此绝对定位在其中的任何东西都相对于它的包含块的左上角。

不幸的是,这并没有完全进入推理“为什么”......因为你必须挖掘 W3C 的会议记录才能找出(也许)。所以我们能给你的最好的答案是“规范是这样说的”。

于 2012-12-14T17:12:55.807 回答