4

私には困惑があります。CSS が本来の動作をしているように見えるアプリケーションがありますが、期待どおりの結果が表示されず、「期待される」結果を得るための解決策が見つかりません。問題は、コンテンツの左側に float 要素があり、コンテンツ スタイルでパディングまたはマージンが使用されている場合に、コンテンツがどのように流れるかです。

私のアプリケーションでは、ユーザーは DIV にテキストを入力できます。float left 要素がある場合とない場合があるため、テキストを含む div は body 領域の左側に配置するか、右に移動できます (つまり、float 要素の後)。

フローティング要素がない場合、テキストは、左、インデント、最初の行のインデント、またはぶら下がっている段落 (つまり、div と適切なクラス) で問題ありません。

サンプル段落

段落の CSS は次のとおりです。

.firstindent { text-indent:30px; }
.indent { padding-left:30px; }
.hanging { padding-left:30px; text-indent:-30px; }

ただし、float left 要素が追加されると、標準インデントと最初のインデントのみが正しく表示されます。これは、パディング、ボーダー、およびマージンがボックス モデルの「コンテンツ」の外側にあり、「コンテンツ」領域内のアイテムのみがフロートに合わせて調整されるためです。

浮きます。フロート モデルでは、ボックスは最初に通常の流れに従って配置され、次に流れから取り出され、可能な限り左または右にシフトされます。フロートの側面に沿ってコンテンツが流れる場合があります。

Firebug で Firefox を使用している場合、div を強調表示すると、パディングが左端、つまり浮動要素の「下」に表示され、浮動要素の右側に調整されていないことがわかります。

その結果、float left 要素を持つ段落は次のようになります。

問題の段落とリスト

(float 要素はリストの表示にも影響することに注意してください。)

これまでのところ、メイン テキストのコンテンツを設定し、左側に float left 要素があるかどうかに関係なく適切に表示できるようにする CSS ソリューションを思い付くことができませんでした。

完全な HTML サンプルを投稿しましたので、お気軽にソースを入手して、解決策を見つけられるかどうかを確認してください。サンプルページ

ありがとう - 「あなたが期待するもの」を含めるべきでした。こちらがフロート左とフロート左スペーサーです。

見たいもの

4

1 に答える 1

2

修正するにはoverflow: hidden、すべての段落要素 (およびリストなど) に設定します。 fiddle を参照してください

于 2012-07-24T18:50:47.897 に答える