CSS フローティング問題について話す_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:48:11
オリジナル
1128 人が閲覧しました

フローティングの仕組み

フローティング要素はドキュメント フローから分離されており、スペースを占有しません。フローティング要素は、それを含む境界線またはフローティング要素の境界線に当たると、そのまま残ります。

浮動要素によって引き起こされる潜在的な問題

1. 親要素の高さを拡張することはできず、親要素と同じレベルの要素に影響します

2. 浮動要素と同じレベルの非浮動要素それに従います

3. 最初の要素がフローティングされていない場合、その前の要素もフローティングにする必要があります。そうしないと、ページの表示構造に影響します

フロートをクリアする解決策は何ですか?

一般的に、3つの方法があります。

1. 空のタグを使用してフローティングタグをクリアします

すべてのフローティングタグの後に空のタグを追加し、CSS 属性clear:bothを定義します

比較画像: divは引き伸ばされていません

空のタグを追加するだけです, 欠点は、非セマンティックなタグが追加されることです

<style type="text/css">    html,body,div{ margin: 0;padding: 0;}      .box{border: 1px solid #333;}      p{border: 1px dotted #333;}      .box img{float: left;}      .box p{float: left;}      .cb{clear: both;}    </style></head><body><div class="box"><img src="1.jpg" width="50px" height="50px">    <p>one</p><!--在这里增加    <div class="cb"></div> --></div></body>
ログイン後にコピー

もちろん、floated 要素の後ろにある要素を float にする必要がない場合は、clear:both を追加することもできます。これも良いことです。

2. overflow を使用します

浮動要素を含む親要素タグに CSS 属性を追加します ( overflow: hidden または auto;zoom:1 は、IE6 との互換性のために使用されます)。

3. after 疑似オブジェクトを使用してフロートをクリアします。

ただし、このメソッドは IE 以外のブラウザにのみ適用できます。これを使用するときは、フローティング要素をクリアする必要がある疑似オブジェクトに必ず height:0 を設定してください。そうしないと、オブジェクトが複数のオブジェクトになることにも注意してください。実際よりも高いピクセル数になります。

<head><style>    html,body,div{ margin: 0;padding: 0;}      .box{border: 1px solid #333;}      p{border: 1px dotted #333;}      .box img{float: left;}      .box p{float: left;}      .cb{clear: both;}            .clearfix{display: inline-block; /*zoom:1;*/ } /* for IE  ; or use zoom:1 to trigger the hasLayout; */      .clearfix:after{content: "."; display: block; height: 0; visibility: hidden;clear: both;}    </style></head><body><div class="box clearfix"><img src="1.jpg" width="50px" height="50px">    <p>one</p></div></body>
ログイン後にコピー

4. フローティング要素の親要素もフローティングされますが、要素全体が再びフローティングされるため、お勧めできません~

5. フローティング要素に直接属性を追加する方法もあります。要素の表示: Table;

FF Chrome およびその他のサポート、IE6/IE7 テストではサポートされていないことが示されているため、Haslayout に加えて Zoom: 1 または Display: Inline-Block をトリガーする必要があります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート