如果您查看CSS 框模型规范,您将观察到以下内容:
[margin] 百分比是根据生成框的包含块的宽度计算的。请注意,“margin-top”和“margin-bottom”也是如此。如果包含块的宽度取决于此元素,则结果布局在 CSS 2.1 中未定义。 (强调我的)
这确实是真的。但是为什么?到底是什么迫使任何人以这种方式设计它?很容易想到您想要的场景,例如某件事总是从页面顶部向下 25%,但很难想出任何理由让您希望垂直填充相对于水平尺寸父母。
这是我所指的现象的一个例子:
<div style="border: 1px solid red; margin: 0; padding: 0; width: 200px; height: 800px;">
This div is 200x800.
<div style="border: 1px solid blue; margin: 10% 0 0 10%;">
This div has top-margin of 10% and left-margin of 10% with respect to its parent.
</div>
</div>