フロートとBFCをクリアするCSSメソッド

フロートとBFCをクリアするCSSメソッド

イギリス

BFC: ブロック書式設定コンテキスト

BFCレイアウトルール

  • 内箱は縦方向に次々に配置されます。
  • ボックスの垂直距離はマージンによって決まります。同じ BFC に属する 2 つの隣接するボックスの余白は重なり合います。
  • BFC の高さを計算する際には、浮動要素も計算に含められます。
  • BFC 領域はフロート ボックスと重なりません。
  • 各ボックス (ブロック ボックスと行ボックス) のマージン ボックスの左端は、包含ブロックの境界ボックスの左端に接します (左から右への書式設定の場合、およびその逆)。フロートがある場合でも同様です。
  • BFC はページ上の分離された独立したコンテナーです。コンテナー内の子要素は外部の要素に影響を与えません。逆の場合も同様です。

ブロック書式コンテキストを作成する方法

1. float の値は none ではありません。

2. 位置の値は静的でも相対的でもない。

3. displayの値は、inline-block、table-cell、flex、table-caption、inline-flexのいずれかです。
4. オーバーフローの値は表示されない

BFCの役割

1. マージンの重複を避けるために BFC を使用します。

2. 適応型2列レイアウト

3. フロートをクリアします。

クリアフロート

フロートをクリアするのは主に、子要素のフロートにより親要素の内部高さが 0 になる問題を解決するためです。

フロートをクリアする方法

1. 追加ラベル付け方法

最後のフローティング ラベルの後に新しいラベルを追加し、clear: both; に設定します (非推奨)

利点: 分かりやすい、便利

デメリット: 意味のないタグの追加、意味の乏しさ

<スタイル>
        .div1 {
            背景: #00a2d4;
        }
        。左 {
            フロート: 左;
            幅: 200ピクセル;
            高さ: 200px;
            背景: #9889c1;
        }
        。右 {
            フロート: 右;
            幅: 200ピクセル;
            高さ: 200px;
            背景:オレンジ色;
        }
        。クリア {
            クリア: 両方;
        }
    </スタイル>
</head>
<本文>
<divクラス="div1">
    <div class="left">左</div>
    <div class="right">右</div>
    <div class="clear"></div>
</div>
<div class="div2"></div>
</本文>

2. 親にオーバーフロー属性を追加する

BFC をトリガーしてフローティングをクリアします。 (非推奨)

利点: 簡潔なコード

デメリット:コンテンツが増えると、自動行折り返しの失敗によりコンテンツが隠れてしまうことが発生しやすく、溢れた要素を表示できません。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
    <スタイル>
        .div1 {
            背景: #00a2d4;
            オーバーフロー: 非表示;
        }
        。左 {
            フロート: 左;
            幅: 200ピクセル;
            高さ: 200px;
            背景: #9889c1;
        }
        。右 {
            フロート: 右;
            幅: 200ピクセル;
            高さ: 200px;
            背景:オレンジ色;
        }
    </スタイル>
</head>
<本文>
<divクラス="div1">
    <div class="left">左</div>
    <div class="right">右</div>
</div>
<div class="div2"></div>
</本文>
</html>

3. after疑似要素を使用してフロートをクリアする(推奨)

利点: クローズドフローティングコンセプトに準拠し、正しい構造セマンティクスを備えています。

デメリット: ie6-7 は疑似要素をサポートしていません。hasLayout をトリガーするには、zoom: 1 を使用します。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
    <スタイル>
        .div1 {
            背景: #00a2d4;
        }
        。左 {
            フロート: 左;
            幅: 200ピクセル;
            高さ: 200px;
            背景: #9889c1;
        }
        。右 {
            フロート: 右;
            幅: 200ピクセル;
            高さ: 200px;
            背景:オレンジ色;
        }
        .clearfix:後{
            content: ""; /*コンテンツは空です*/
            display: block; /*ブロックレベル要素に変換*/
            height: 0; /*高さは0です*/
            clear: both; /*float をクリア*/
            visibility: hidden; /*ボックスを非表示にする*/
        }
        .clearfix {
            *zoom: 1; /*IE6\7の処理方法*/
        }
    </スタイル>
</head>
<本文>
<div class="div1 clearfix">
    <div class="left">左</div>
    <div class="right">右</div>
</div>
<div class="div2"></div>
</本文>
</html>

4. 前後の二重疑似要素を使用してフロートをクリアする

利点: フローティングをクリアできるだけでなく、高さの崩れの問題も解決できます (親ボックスにクラス名 clearfix を追加します)

欠点: hasLayout をトリガーするには zoom:1 を使用します。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>タイトル</title>
    <スタイル>
        .div1 {
            背景: #00a2d4;
        }
        。左 {
            フロート: 左;
            幅: 200ピクセル;
            高さ: 200px;
            背景: #9889c1;
        }
        。右 {
            フロート: 右;
            幅: 200ピクセル;
            高さ: 200px;
            背景:オレンジ色;
        }
        .clearfix:after、.clearfix:before {
            コンテンツ: "";
            表示: テーブル;
        }
        .clearfix:後{
            クリア: 両方;
        }
        .clearfix {
            *ズーム: 1;
        }
    </スタイル>
</head>
<本文>
<div class="div1 clearfix">
    <div class="left">左</div>
    <div class="right">右</div>
</div>
<div class="div2"></div>
</本文>
</html>

要約する

CSS クリアフロートと BFC に関するこの記事はこれで終わりです。CSS フロート BFC に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Enterキーを押すとフォームが自動的に送信されます。予期せぬ発見

>>:  Vue プロジェクトで mock を使用する方法をご存知ですか?

推薦する

よくある HTML タグの記述エラー

HTML Police がコードを調べて意味のないタグをすべて見つけ出すので、注意を払う必要がありま...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

jsはカスタムドロップダウンボックスを実装します

この記事の例では、カスタムドロップダウンボックスを実装するためのjsの具体的なコードを参考までに共有...

CentOS7 で yum を使用して PostgreSQL と PostGIS をインストールする方法

1. yumソースを更新するCentOS7 のデフォルトの yum リポジトリの PostgreSQ...

Docker で Ubuntu に Python3 と Pip をインストールする際の問題

文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...

Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました

1. mysql-8.0.15をダウンロード、インストール、設定する1. 公式サイト (https:...

Linux における効果的なユーザー グループと初期ユーザー グループの実装

まず、/etc/group ファイルを確認します。 [root@localhost /]# cat ...

VmWareでcentos7をインストールするときにインターネットにアクセスできない問題の解決策

Centos7 のインストール時に VmWare がインターネットにアクセスできない場合はどうすれば...

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

MySQL データベース クエリ パフォーマンス最適化戦略

クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...

Linux lessコマンド例の詳細な説明

ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...

MySQL接続クエリの原理と応用

概要MySQL の最も強力な機能の 1 つは、データ取得を実行しながらテーブルを結合できることです。...

Centos での TCPWrappers アクセス制御の実装

1. TCP ラッパーの概要TCP Wrappers は TCP サービス プログラムを「ラップ」し...

Vue の共通 A​​PI と高度な API の概要

目次次のチェックミックスイン$強制更新設定、削除フィルター指令その他の単純な共通プロパティとメソッド...

React useEffect の理解と使用

目次繰り返しレンダリングループを避ける副作用の除去についてReact16.8 の新しい useEff...