8

場合によっては、ブロック フォーマット コンテキストがMDN:Block フォーマット コンテキストから作成されることを読みました。

ボックスがインライン フォーマット コンテキストを確立するのはいつですか?

私が知っているケースの 1 つは、ブロック コンテナー ボックスにインライン レベルのボックスのみが含まれている場合です。

4

1 に答える 1

13

あなたの質問に答えるために、CSS 2.1 仕様のセクション 9.2.1 を読み直しました。

私の読書に基づいて、あなたの答えがあります: インライン フォーマット コンテキストは、ブロック コンテナー ボックスにインライン要素のみが含まれている場合にトリガーされます。

明示的にトリガーできるブロック フォーマット コンテキスト (たとえば、overflow: hiddenブロック レベル要素への設定) とは対照的に、インライン フォーマット コンテキストは明示的にトリガーできません。

インライン フォーマッティング コンテキストは、「主要なブロック レベル ボックス」内の子孫ブロック ボックスとして常に存在するように見え、これらの子孫ブロック ボックスは匿名の場合があります。

ブロック/インラインの書式設定コンテキストを理解するためのメンタル モデルとして、次の説明を提供します。

ブロック レベルの要素 (例: a <div>) は、2 つの役割を果たします。1 つは配置、もう 1 つはコンテンツの書式設定です。

配置を扱う場合、ブロックレベルの要素は「ブロックレベルのボックス」として機能します。

フォーマットを扱う場合、ブロック レベル要素は「ブロック コンテナー ボックス」として機能します。

「ブロック レベル ボックス」として機能するブロック要素は、positionプロパティで指定された配置のタイプ (静的、絶対、相対、固定) に従って動作します。

「ブロックコンテナボックス」として機能するブロック要素は、ブロック要素に少なくとも1つの子ブロックレベル要素がある場合、ブロックフォーマットコンテキストを確立します。すべての子要素がインライン レベルのボックスである場合、インライン フォーマット コンテキストが確立されます。

「ブロック コンテナ ボックス」にテキストとブロック要素が含まれている場合、テキストは 1 つ以上の無名のブロック レベル ボックスに含まれているものとして扱われ、ブロック フォーマット コンテキストが確立されます。

余談
ですが、CSS 仕様は正確には読みやすいものではありません。私は第9章と第10章を何度か読み直しましたが、平易な英語の翻訳はまだ思いつきません.

于 2013-06-05T12:07:12.773 に答える