3

position:absoluteこれは、ブロックするcssdisplayプロパティをオーバーライドすることと関係があると確信しています。

下の画像(およびこのフィドル)でわかるように、左側(絶対)のdivはテキストの垂直方向の中央に配置されていませんが、右側のdivは(相対的)中央に配置されています。クロムデバッガーで見られる場合、前者は持ってdisplay:blockおり、後者は持っていdisplay:table-cellます。

ここに画像の説明を入力してください

質問:何かを配置すると、「ドキュメントのフローから削除されます」が、表示が上書きされず、すべてがデフォルトの表示(つまり、divの場合はブロック、spanの場合はインラインなど)にデフォルト設定されることを意味します。なぜですか?この動作には特定の理由がありますか?

4

2 に答える 2

4

これは仕様で要求されています:

'position'の値が'absolute'または'fixed'の場合、ボックスは絶対位置にあり、'float'の計算値は'none'であり、表示は次の表に従って設定されます。

仕様のそのセクションに示されているテーブルでは、「display」のテーブル関連の値はすべて、代わりに「block」に計算されます。

あなたが言うように、絶対に何かを配置すると、通常の流れからそれが削除されます。そのため、表示するテーブルがなくなったため、テーブルセルとして表示する意味がなくなりました。要素をテーブルセルとして表示するには、適切なコンテナが必要であり、これらは通常のフローでのみ暗黙的に生成できるように見えます。

于 2012-07-27T21:02:31.323 に答える
2

position:absoluteの要素は、display:blockとして扱われます。デフォルトでは扱われません。

'ドキュメントのフローから削除します'

他のエンティティとの関係ではなく、独自のグラフィカルエンティティとして扱われることを意味します。要素は、テーブルに関連するテーブルセルとしてのみ表示できます。ほとんどの表示モードは、他の要素との関係でのみ意味があります。主な例外は「ブロック」と「なし」です

div要素とspan要素の両方のさまざまな表示タイプの相対対絶対のサンプルを示す非常に大まかなフィドルを作成しました。display:noneは相対位置と絶対位置の両方で機能しますが、display:inlineは相対位置でのみ機能することに注意してください。

于 2012-07-27T21:55:33.353 に答える