关于css:静态定位正常布局中body元素的高度是否默认不是其容器的100%?
Is the body element's height not 100% of its container by default in the static positioning normal layout?
到目前为止,我一直假设默认情况下,根据正常的布局行为,即使设置了
然而,一个简单的实验证明我的假设是错误的,我很震惊。
我明白,在正常的布局行为中,块元素的高度是有弹性的并且可以拉伸以填充它们的全部内容。但是,出于某种原因,我认为这不适用于
所以,在我的简单实验中,我有以下 HTML:
html { background-color: white; } body { width: 50%; background-color: gray; margin: 0 auto; min-height: 100%; height: 100%; /* position: absolute; left: 22%; */ } |
Nice sounds <p>Zoo zoo zoo</p> <p>Koo koo koo</p> <p>Boo boo boo</p> <p>Poo poo poo</p> |
如果我将

但是,如果我将定位更改为
position: absolute; left: 22%; |
当然,它遵守

这是正常行为吗?
- 这个问题可能会对您有所帮助:stackoverflow.com/questions/31893330/...
-
height 100% 继承自其父级,而<html> 没有固有高度,只有其父级viewport 有。position: absolute 元素将视口作为其包含块,这就是height: 100% 在那里工作的原因。 -
@TylerH:你说,"一个位置:绝对元素将视口作为它的包含块......"。但是,我读到
position 为absolute 的元素的默认定位上下文是<html> 元素。 (developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/...) -
@WaterCoolrv2 抱歉,我在考虑
position: fixed ,它是将视口作为其包含块的那个,而不是position: absolute; 。可能很难记住,因为 position: fixed 和 position: absolute(以及当前 position: sticky,虽然可能不会持续很长时间)都被认为是"绝对定位"...... W3C 以其令人困惑和迟钝的措辞而闻名。
TL;DR:是的,这是正常行为。
但是。
曾几何时,有一个较旧的标准,默认情况下 body 确实具有视口的高度。很久以前。
另外,HTML 的一些晦涩的特性可能会造成混淆。如果不设置
- 关于
<html> 继承<body> 元素的背景颜色的漂亮评论。那是我所做的另一个观察,它实际上让我开始研究这个特定的例子。所以我也特意为身体元素采用了不同的颜色来测试它。非常感谢。
当它是静态的时,它的父级是