我听说一个绝对定位的元素相对于它的第一个非静态定位的祖先定位自己。但这有更全面的原因吗?或者它只是一个随意的选择,对静态元素来说是不正确的。
我想我想知道是否有一些统一的CSS理论,可以这么说,即一个可能复杂但不太复杂的理论。一个概述了位置和静态和绝对行为的方式,这种方式使得这种相互作用成为一种自然结果。
我也无法在CSS规范中找到对此规则的明确引用;这可能有所帮助。
答案 0 :(得分:4)
仅仅因为强迫人们相对于父元素定位元素是一个不必要的限制。如果我想将元素相对于<body>
定位怎么办?如果我想相对于特定的祖先定位元素怎么办?好吧,我可以在目标父级上设置position: relative
。没有这个,我需要使用JS。
当然,我不认为这是最好的方式。如果我自己编写规范,我就会成功:
position: absolute(selector);
但当然,我不会写规范。
答案 1 :(得分:3)
static
是任何给定元素的默认位置,除非您另行指定。如果绝对定位会将其作为参考点,那么你将无法将一个元素绝对地放在引用除了其父元素之外的任何内容中。
因此,指定绝对定位采用最近的祖先元素,其位置其他而不是static
作为参考点(或视口本身,如果没有)。