1. ドキュメントフローとフローティング 1. ドキュメントフローとは何ですか? HTML では、ドキュメント フローは標準フローまたは通常フローとも呼ばれます。要素は上から下、左から右に表示されます。ブロックレベル要素はデフォルトで 1 行を占めます。インラインまたはインライン ブロックレベル要素は、コンテンツ部分またはそれ自体が占める部分のみを占めます。ブロックレベル要素ほど横柄に行を占めることはありません。実は、これは滝が上から下へ流れる自然現象と同じです^_^。 2. 落ち着かない浮遊 上記では、ドキュメントフローについてすでに予備的な理解をしましたが、Web ページ上の要素の表示は、ドキュメントフローに頼るだけでは不十分です。たとえば、Tmall Mall の商標ナビゲーションセクションでは、順序なしリスト ul の各リスト項目 li はブロックレベル要素 (display:list-item) です。ドキュメントフローによると、ブロックレベル要素は 1 行を占めるため、各 li は上から下に表示されますが、実際には各 li は独自の部分のみを占めます。次の図を参照してください。 では、なぜこれらの li 要素はドキュメント フローに従って表示されないのでしょうか。その理由は、これらがドキュメント フローから分離されているためです。ドキュメント フローから要素を作成するには、2 つの方法があります。1 つ目はフローティング (float)、2 つ目は配置 (position) です。 2. フローティングは諸刃の剣 フローティングにより要素がドキュメント フローから外れるため、シンプルなナビゲーション バーを作成するなど、要素の表示をより柔軟にすることができます。 体{ マージン:0; 背景色:#333; } ul{ リストスタイル:なし; 幅:500ピクセル; マージン:100px 自動 0; パディング:0; } .clearfix:後{ コンテンツ:""; 表示:ブロック; クリア:両方; } ul li{ フロート:左; 幅:100ピクセル; 高さ:30px; 背景色:#fff; } ウル・リア 表示:ブロック; 高さ:100%; 行の高さ:30px; 色:#000; テキスト装飾:なし; テキスト配置:中央; } <ul class="nav clearfix"> <li> <a href="">ナビゲーション 1</a> </li> <li> <a href="">ナビゲーション 2</a> </li> <li> <a href="">ナビゲーション 3</a> </li> <li> <a href="">ナビゲーション 4</a> </li> <li> <a href="">ナビゲーション 5</a> </li> </ul> もう一つの例は、先ほどの聖杯レイアウトです 体{ マージン:0; } 。包む{ パディング:0 300px; } .clearfix:後{ コンテンツ:""; 表示:ブロック; クリア:両方; } .中央、.左、.右{ フロート:左; 位置:相対; 高さ:100px; } 。真ん中{ 幅:100%; 背景色:#333; } 。左{ 左:-300px; 幅:300ピクセル; 左マージン:-100%; 背景色:#ccc; } 。右{ 右:-300px; 幅:300ピクセル; 左マージン:-300px; 背景色:#f00; } <div class="wrap clearfix"> <div class="middle"></div> <div class="left"></div> <div class="right"></div> </div> 同時に、フローティングは他の効果ももたらします。たとえば、フローティング要素は、ドキュメント フローの背後にある要素を覆います。 体{ マージン:0; } .box-1{ フロート:左; 幅:200px; 高さ:200px; 背景色:#333; } .box-2{ 幅:200px; 高さ:300px; 背景色:#ccc; } <div class="box-1"></div> <div class="box-2"></div> 上記の問題を解決するには、BOX-2 の float をクリアするだけです。 .box-2{ クリア:両方; 幅:200px; 高さ:300px; 背景色:#ccc; } さらに、フローティング要素により、親要素の高さが縮小されます。高さのないブロックレベル要素の子要素がフローティングされている場合、ブロックレベルの親要素の高さは 0 になります。次のコードを参照してください。 体{ マージン:0; } .box-1{ 幅:300ピクセル; 背景色:#333; } .box-2{ フロート:左; 幅:200px; 高さ:300px; 背景色:#ccc; } <div class="box-1"> <div class="box-2"></div> </div> 要素に固定の高さが指定されていない場合、その高さはコンテンツによって拡張されることに注意してください。つまり、この要素にコンテンツがない場合、その高さは 0 です。この要素にコンテンツがある場合、高さ (つまり、コンテンツの高さ) が設定されます。次の図を参照してください。 .box-1{ 幅:100ピクセル; 背景色:#f00; } <div class="box-1"></div> <div class="box-1">私はコンテンツです</div> 上図では、親要素 BOX-1 に子要素 BOX-2 がありますが、その高さは 0 です。何が起こっているのでしょうか? BOX-2 が浮いているため、子要素 BOX-2 と親要素 BOX-1 の高さが同じではなく、BOX-1 は BOX-2 をラップできません。次の図を参照してください。 上の図は、フローティングによって親要素の高さが崩れる問題を示しています。 3. フローティングによる親要素の高さの崩れの問題を解決する方法 1. 子メソッド 子要素の最後に高さ 0 の子要素を追加し、フローティングをクリアします。コードをご覧ください。 体{ マージン:0; } .box-1{ 幅:300ピクセル; 背景色:#f00; } .box-2{ フロート:左; 幅:200px; 高さ:150px; 背景色:#ff0; } .box-3{ クリア:両方; } <div class="box-1"> <div class="box-2"></div> <div class="box-3"></div> </div> 効果図は以下のようになります。赤いボックスが親要素、黄色いボックスが子要素BOX-2です。 2. 親メソッド 親要素に display:inline-block を設定します。 体{ マージン:0; } .box-1{ 表示:インラインブロック; 幅:300ピクセル; 背景色:#f00; } .box-2{ フロート:左; 幅:200px; 高さ:150px; 背景色:#ff0; } <div class="box-1"> <div class="box-2"></div> </div> 親要素に overflow:hidden を設定します。 体{ マージン:0; } .box-1{ オーバーフロー:非表示; 幅:300ピクセル; 背景色:#f00; } .box-2{ フロート:左; 幅:200px; 高さ:150px; 背景色:#ff0; } <div class="box-1"> <div class="box-2"></div> </div> 上記の 2 つの方法は、実際には BFC (ブロック フォーマット コンテキスト) に基づいています。BFC では、親要素にフローティングの子要素を含めることができるため、親要素の高さが崩れる問題が解決されるため、BFC がトリガーされれば問題ありません。 親要素に固定の高さを与えることについては、あまり言うことはありません。実際の開発では、高さは一般的にコンテンツによってサポートされるため、詳細には触れません。 疑似要素: after を使用してフロートをクリアします。次のコードを参照してください。 体{ マージン:0; } .clearfix{ 幅:300ピクセル; 背景色:#f00; } .clearfix:後{ コンテンツ:""; 表示:ブロック; クリア:両方; } 。箱{ フロート:左; 幅:200px; 高さ:150px; 背景色:#ff0; } <div class="clearfix"> <div class="box"></div> </div> 4. 最終 これで、フローティングによって発生する親要素の高さの崩壊の問題を解決するためのいくつかの CSS メソッドに関するこの記事は終了です。より関連性の高い CSS 親要素の高さの崩壊コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 |
<<: Dockerオーバーレイはホスト間のコンテナ相互通信を実現します
1. 今日、ページを作っているときに、矢印を中央に配置する効果に遭遇しました。クリック領域を大きくし...
目次1. イベントの委任イベントバブリングイベントキャプチャイベントの泡立ちの昇華考える2. 深いコ...
>1 データベースを起動するcmd コマンド ウィンドウで、「sqlplus」を直接入力して ...
/etc/yum.repos.d/フォルダに入るrabbitmq-erlang.repo ファイルを...
SQL インジェクション脆弱性を悪用する後期段階では、MySQL のファイル シリーズ関数を使用して...
文法以下は、MySQL テーブルにデータを挿入するための INSERT INTO コマンドの一般的な...
前面に書かれた近年、ライブストリーミング業界は非常に人気が高まっています。伝統的な業界でのライブスト...
目次背景分析するデータシミュレーション1. 従業員テーブルと部門テーブルの2つのテーブルを作成します...
この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...
mysqladmin ツールの使用形式は次のとおりです。 mysqladmin [オプション] コ...
==================================================...
目次1. 子プロセス2. nodejsでのコマンド実行2.1 16進数エンコード2.2 ユニコードエ...
Ubuntu では中国語入力方法の解決策はありません。仮想マシンや Ubuntu システムをインスト...
この記事の例では、すべてのチェックボックスの選択を実現するためのJavaScriptの具体的なコード...
目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...