【发布时间】:2018-10-19 22:43:17
【问题描述】:
“绝对”定位的定义是:“元素的定位是相对于它的第一个定位(非静态)祖先元素”。
我的问题是当所有祖先都是“静态”时元素的行为如何?
我们可以说在这种情况下,“绝对”定位表现为“固定”定位吗?
【问题讨论】:
-
@Temani Afif:除了极端情况外,它的行为并不固定。看我的回答。
标签: css
“绝对”定位的定义是:“元素的定位是相对于它的第一个定位(非静态)祖先元素”。
我的问题是当所有祖先都是“静态”时元素的行为如何?
我们可以说在这种情况下,“绝对”定位表现为“固定”定位吗?
【问题讨论】:
标签: css
我们可以说在这种情况下,“绝对”定位表现为“固定”定位吗?
不,不完全是。 top、right、bottom 和 left 偏移的行为是相同的,但对于滚动则不同,这是固定定位与常规绝对定位的区别。
当没有定位的祖先时,带有position: absolute的元素的包含块是初始包含块。
带有position: fixed 的元素的包含块是视口,而不是初始包含块。滚动时视口不会移动,但初始包含块会移动(因为它可能比视口大),这就是为什么固定位置的元素不会随页面滚动,但带有position: absolute 的元素会移动,即使当后者没有定位的祖先。
您可以操纵页面布局以使内容滚动,但初始包含块永远不会滚动,resulting in a hack that makes position: absolute with no positioned ancestors behave like position: fixed,即使在 Internet Explorer 6 中也是如此。
【讨论】: