我认为一般规则是,只要 divfoo
有position: relative
,那么如果父级和祖先都没有任何非静态position
(因此需要有一个relative, absolute, or fixed
),那么 divfoo
现在将相对于整个文档的位置。
但在以下页面中:
<div id="box1"></div>
<div id="box2">
<div id="box3">some text inside some text</div>
</div>
<style>
#box1 { width: 300px; height: 100px; background: #ffd; margin-left: 60px }
#box2 { width: 300px; height: 100px; background: #fa0; margin-left: 60px }
#box3 { width: 100px; height: 80px; background: #af0; position:
absolute; left: 20px; }
</style>
box3
实际上的行为是这样的:left
is20px
并且是相对于文档的,但是top
是auto
(默认情况下),并且实际上是相对于容器 div。只有当top
设置为0
、0px
或其他值时,它才相对于文档。这是什么规则?
PS与规范中的规则,我没有看到一条规则说:如果top
orleft
没有指定,那么行为就是这样那样。所以这是一个事实上的标准,如果没有指定,那么如果没有“包含块”(定义为非静态定位块),那么它不会相对于“初始块”?