指定されたマージン値を持つ HTML 要素が別のコンテナ要素内にネストされている場合、親要素は次のことを期待するかもしれません。常にマージンを包み込みます。ただし、この期待が常に満たされるわけではありません。境界線、位置、オーバーフロー設定などの親コンテナの特定の特性によって、マージンが含まれるかどうかが決定されるという、驚くべき動作が出現します。
この興味深い動作により、いくつかの疑問が生じています。
謎を解明するために、CSS の奥深くおよびマージン相互作用の複雑さを掘り下げてみましょう。
実験を通じて、いくつかの CSS プロパティがマージンの包含に影響を与える可能性があることが観察されました:
興味深いことに、これらのトリガーはマージン プロパティに直接関係しません。たとえば、実線の境界線は、マージンの抑制に影響を与える候補としては考えにくいようです。
CSS マージンに関する W3C 仕様のページを詳しく調べると、明確な情報が見つかることが期待されます。この不可解な行動の説明。しかし、驚いたことに、この仕様には、観察された動作の明確な定義が記載されていません。
さらに深く掘り下げると、仕様が次の 2 つの概念を混同していることがわかります。
この不可解な組み合わせにより曖昧さが生まれ、余地が残されています。
マージン抑制の背後にあるロジックを理解するには、CSS 仕様の「マージンの縮小」セクションを参照する必要があります。
"If the top and bottom margins of a box are adjoining, then it is possible for margins to collapse through it."
これは、子要素の上下のマージンが接触または重なっている場合、単一のマージンになることを意味します。要素の位置は、折りたたみマージン内の他の要素との関係に応じて決まります。
本質的に、マージンの包含は「通常の div」のデフォルトの動作とは関係ありません。代わりに、マージン、境界線、配置、およびオーバーフロー設定の相互作用に依存します。
マージン封じ込めの謎が解明され、一見矛盾した動作が制御されていることが明らかになりました。マージン崩壊の複雑なルール。 CSS 仕様に明確な文書がないことが混乱の一因となっており、CSS のこの複雑な側面のニュアンスを完全に把握するには広範なテストと実験が必要です。
以上が親要素のプロパティに基づいてマージンの動作が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。