确切地说,为什么绝对定位会从相对祖先继承?

时间:2012-12-14 17:06:11

标签: html css position positioning

这是this question的近似重复,但没有一个答案似乎真正解释了这个的理由,这就是我真正追求的。

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

我的问题是:相对定位怎么样(相对于静态,比如说)我错过了会让这个直观吗?作为一个新手,从我(完全无知)的观点来看,这感觉很随意,所以我很想让专家在这里帮忙。声明某些元素相对的行为是否也使它成为X,其中X是孩子继承其右上角的逻辑事物?是一个相对定位的元素,没有 top right bottom left 基本上是一个静态元素,或者在更深层次上它是一些根本不同的动物吗?

1 个答案:

答案 0 :(得分:2)

如果您阅读了Specification,那就有意义了:

  

框的位置(以及可能的大小)由' top',' right',' bottom'和'指定;左'属性。 这些属性指定相对于包含块的框的偏移。绝对定位的框从正常流中取出。这意味着它们对后来的兄弟姐妹的布局没有影响。此外,虽然绝对定位的盒子有边距,但它们不会随着任何其他边缘而崩溃。

我强调了适当的部分。绝对定位的元素由其包含块

抵消

containing block指定:

  

在CSS 2.1中,根据称为包含块的矩形框的边缘计算许多框位置和大小。通常,生成的框用作包含后代框的块;我们说一个盒子"建立"它的后代的包含块。短语"包含块"意味着"盒子所在的容纳块,"不是它产生的那个。

相对位置建立一个新的包含块因此绝对位于其中的任何内容都是相对于它包含块的左上角。

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