如果您查看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>
height: 10%; width: 10%
您也不会得到一个正方形元素,那还是一样。
Note that in a horizontal flow, percentages on ‘margin-top’ and ‘margin-bottom’ are relative to the width of the containing block, not the height (and in vertical flow, ‘margin-left’ and ‘margin-right’ are relative to the height, not the width).
,它是双向的-Adam
margin: 25%
实际含义造成歧义。即使代码表明确实如此,这也不是一个均匀的利润。我没有证据支持这一点,但这似乎是合理的。