フロントエンド開発のプロセスでは、float をよく使用しますが、これは私たちが好きでも嫌いでもある属性です。フローティングによって簡単にレイアウトできるので気に入っていますが、フローティング後に解決すべき問題が多すぎるため嫌いです。この章では、CSS がフロートをクリアする理由とフロートをクリアする方法、および CSS でフロートを削除するいくつかの方法を紹介します。困っている友人は参考にしていただければ幸いです。
#1. なぜ浮くのですか?
フローティング (float) の最も基本的な理由は、テキストの折り返し効果を実現するためです。後に、これをレイアウトに使用すると、いくつかの欠点を補うことができることがわかりました。従来のレイアウトでは非常に便利です。2. float をクリアする必要があるのはなぜですか?
Float (float) は、フローティング ボックスが別のフローティング ボックスまたはその外端にあるボックスを含むボックスに遭遇するまで左右に移動するように制御できます。フローティング ボックスはドキュメント フロー内の通常のフローに属しません。要素がフローティングされると、ブロック レベルの要素のレイアウトには影響しませんが、インライン要素のレイアウトにのみ影響します。このとき、ドキュメント フローの通常のフローでは、フローティング ボックスのレイアウト モードが同じではないことがわかります。包含ボックスの高さがフローティング ボックスよりも小さい場合、「高さの崩壊」が発生します。 上の図の親要素の高さはパディングの効果であり、親要素は高く設定されていません。 親要素の高さが設定されていない場合:
#3. フロートをクリアする方法
フロートをクリアするいくつかの方法を以下に紹介します。 CSS 内 (上の図の効果を実現します):
空のタグを使用してフロートをクリアします。 float をクリアする必要がある親要素 すべてのフローティング要素の後に空のタグを追加し (理論的には任意のタグにすることができますが、一般的には
が使用されます) フローティング要素をクリアし、CSS コードのクリアを定義します。どちらも彼らにとって。
コード例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .demo{ width: 500px; margin: 50px auto; background-color: #CCCCCC; } .left{ width: 100px; height: 100px; float: left; background-color: #21B4BB; } .right{ width: 100px; height: 50px; float: right; background-color: #21B4BB; } .clear{ clear:both; } </style> </head> <body> <div class="demo"> <div class="left">left</div> <div class="right">right</div> <div class="clear"></div> </div> </body> </html>
利点: シンプル、コードが少なく、ブラウザーとの互換性が良好。
欠点: 多数の非セマンティックな HTML 要素を追加する必要があり、コードは十分に洗練されておらず、後で保守するのは簡単ではありません。
2. CSS の overflow プロパティを使用します。オーバーフローを使用して浮動小数点をクリアします。浮動小数点数が含まれる要素に CSS コード overflow:auto または overflow:hidden を定義するだけです。それをクリアする必要があります。
コード例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .demo{ width: 500px; margin: 50px auto; background-color: #CCCCCC; overflow:hidden } .left{ width: 100px; height: 100px; float: left; background-color: #21B4BB; } .right{ width: 100px; height: 50px; float: right; background-color: #21B4BB; } </style> </head> <body> <div class="demo"> <div class="left">left</div> <div class="right">right</div> </div> </body> </html>
メリット: 構造的・意味的に問題がなく、コード量が非常に少ない
デメリット: コンテンツが増えた場合、簡単自動行折り返しが発生し、コンテンツが非表示になり、オーバーフローする必要がある要素を表示できなくなります。
3. CSS:after pseudo-elementを使用します。親要素の :after 疑似要素と set display:table
display:table により、生成された要素がブロック レベルのテーブルに表示され、残りのスペースが占有されます。
content: " " を通じて最後の要素としてコンテンツを生成します。コンテンツの内容については、従来の CSS は content: "." でOKです。バージョンによっては空のコンテンツが含まれる場合があります。
コード例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .demo{ width: 500px; margin: 50px auto; background-color: #CCCCCC; *zoom: 1; } .demo:after { content: " "; display: table; clear: both; } .left{ width: 100px; height: 100px; float: left; background-color: #21B4BB; } .right{ width: 100px; height: 50px; float: right; background-color: #21B4BB; } </style> </head> <body> <div class="demo"> <div class="left">left</div> <div class="right">right</div> </div> </body> </html>
短所: 最新のブラウザに適していますが、IE6/7 はサポートしていません。*ズーム: 1 は IE6/7 との互換性のためです
以上がCSSクリアフロートは何をするのですか?フロートをクリーンアップする方法 (概要)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。