ホームページ >ウェブフロントエンド >CSSチュートリアル >フレックスボックスのマージンが標準のブロック書式設定コンテキストとは異なる動作をするのはなぜですか?

フレックスボックスのマージンが標準のブロック書式設定コンテキストとは異なる動作をするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-27 11:48:14176ブラウズ

Why Do Flexbox Margins Behave Differently Than in a Standard Block Formatting Context?

Flexbox でのマージンの折りたたみ

通常、CSS では、親とその最後の子にマージンがある場合、マージンは 1 つに折りたたまれます。マージン。ただし、フレックスボックスでは、マージンの動作が異なります。

マージンの折りたたみがフレックスボックスで異なる理由

マージンの折りたたみはブロック フォーマット コンテキストの機能であり、フレックスボックスでは使用されません。フレックスフォーマットコンテキスト。 Flexbox は、コンテンツに対して新しいフレックス フォーマット コンテキストを確立します。つまり、ブロック フォーマット コンテキストと同じようにマージンが折りたたまれません。

フレックスボックスのマージンを非フレックスボックスのマージンのように動作させる方法

マージンの折りたたみはブロック書式設定コンテキストの機能であるため、フレックスボックスのマージンを動作させることはできません非フレックスボックスのものとまったく同じです。ただし、フレックスボックス コンテナの表示プロパティを flex ではなく inline-flex に設定することで、同様の効果を実現することができます。これにより、フレックスボックスの書式設定コンテキストが作成されますが、インライン要素として扱われるため、予想通り余白が折りたたまれます。

例:

#container {
  display: inline-flex;
  flex-direction: column;
}

article {
  margin-bottom: 20px;
}

main {
  background: pink;
  margin-bottom: 20px;
}

footer {
  background: skyblue;
}

この場合、最後の記事とフッターの間でマージンが折りたたまれ、非フレックスボックス レイアウトと同様に 20 ピクセルのマージンが生じます。

以上がフレックスボックスのマージンが標準のブロック書式設定コンテキストとは異なる動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。