ホームページ > 記事 > ウェブフロントエンド > オーバーフロー属性がフロートをクリアできない理由を分析する
<style> .container { overflow: hidden; } .float-left { float: left; width: 50%; } </style> <div class="container"> <div class="float-left">左侧内容</div> <div class="float-left">右侧内容</div> </div>しかし、奇妙なことに、この一見実行可能に見える方法は場合によっては機能せず、親コンテナは依然として高さを正しく計算できません。この現象を説明するには、フローティング要素の親コンテナの高さの計算方法から理解する必要があります。 親コンテナは、自身の高さを計算するときに、浮動子要素の高さを無視します。浮動子要素が親コンテナより高い場合でも、親コンテナは子要素の高さが浮く前の高さと同じです。これにより、コンテナの高さが内部のフローティング要素に正しく適応せず、全体のレイアウトに影響を与えます。 オーバーフロー属性を使用してフロートをクリアしようとした方法に戻りますが、実際には、オーバーフロー属性はフロートのクリアに直接影響しません。実際には、親コンテナの新しい BFC (ブロック レベルの書式設定コンテキスト) が作成されます。BFC は独立したコンテナとして理解できます。コンテナ内の浮動要素は外部要素に影響しません。 BFC の作成方法やブラウザの実装が異なるため、オーバーフロー属性が無効になる可能性があります。 それでは、本当にオーバーフロー属性によるフローティング効果をクリアしたい場合は、どのように解決すればよいでしょうか?参考までに、一般的な解決策をいくつか示します。
<style> .clearfix::after { content: ""; display: block; clear: both; visibility: hidden; height: 0; } .float-left { float: left; width: 50%; } </style> <div class="clearfix"> <div class="float-left">左侧内容</div> <div class="float-left">右侧内容</div> </div>
<style> .container::after { content: ""; display: table; clear: both; } .float-left { float: left; width: 50%; } </style> <div class="container"> <div class="float-left">左侧内容</div> <div class="float-left">右侧内容</div> </div>
<style> .container { display: flex; } .float-left { float: left; width: 50%; } </style> <div class="container"> <div class="float-left">左侧内容</div> <div class="float-left">右侧内容</div> </div>
以上がオーバーフロー属性がフロートをクリアできない理由を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。