あなたが見ればCSSボックスモデルの仕様は、次のことを守っます:
[マージン]パーセンテージは、生成されたボックスの包含ブロックの幅を基準に計算されます。これは「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).
進む
margin: 25%
実際に何を意味するのかについて曖昧さを引き起こすだろうということです。コードがそれを示唆しているとしても、それは均一なマージンではありません。これを裏付ける証拠はありませんが、それは妥当なようです。