CSSボックスモデルの仕様を見ると、次のことがわかります。
[マージン]パーセンテージは、生成されたボックスを含むブロックの幅を基準にして計算されます。これは「margin-top」と「margin-bottom」にも当てはまることに注意してください。含まれているブロックの幅がこの要素に依存している場合、結果のレイアウトはCSS2.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>