CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress/?p=9404

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してください。サークルはとても小さいです。緊急に必要な場合は、許可を得るためにご連絡ください。

1. Safariブラウザのサポート

display:flow-rootが最初にリリースされたとき、その互換性を見て、いつ本番環境で使えるようになるのかと思っていました。今日、再びこれに遭遇し、互換性を確認しました。おや、これはなかなか良いですね。Safari ブラウザはバージョン 13 からこれをサポートしているので、すぐに広く使用されるようになるでしょう。

2. display:flow-root は何に使用されますか?

インライン要素でも元々ブロックレベル要素でも、 display:flow-root宣言が適用されると、要素はブロックレベル要素になります。同時に、この要素は新しいブロックレベル書式設定コンテキストを確立します。これは業界では一般に BFC と呼ばれています。

BFC に関しては、私の以前の古典的な記事「CSS の流動的な特性と BFC 特性での複数列の適応レイアウトの詳細な理解」を参照してください。

BFC はレイアウトに使用されるだけでなく、フロートをクリアしてマージンの結合を削除することもできます。したがって、 display:flow-rootにも同様の効果があります。float、position、overflow、inline-block などの機能によって生成されるブロックレベル形式のコンテキストと比較すると、 display:flow-root要素に追加の副作用をもたらしません。たとえば、 overflow:hiddenフロートの干渉を削除できますが、子要素がコンテナーの外側に配置されないようにする可能性があります。

display:flow-rootを使用するとそのような心配はありません。

たとえば、次の例では、コンテナーにアウトラインがあり、子要素はフロートされています。

<p><img src="mm.jpg"></p>
p {
    アウトライン: ソリッド ディープスカイブルー;    
}
画像 {
    フロート: 左;
}

結果の輪郭は、以下に示すように結合されます。

この時点で、 <p>要素にdisplay:flow-rootが設定されていれば、フローティングによって要素の高さがつぶれる問題は発生しなくなります。

p {
    表示: フロールート;
}

効果は次のスクリーンショットに示されています。

同様に、 display:flow-rootを使用すると、マージン プロパティのマージ現象も防ぐことができます。

HTML コードは次のとおりです。

<div class="box">
    <p>マージン: 2em;</p>
</div>
<div class="box flow-root">
    <p>マージン: 2em;</p>
</div>

CSS は次のとおりです。

。箱 {
    背景色: #f0f3f9;    
}
.box p {
    アウトライン: ソリッド ディープスカイブルー;
    マージン: 2em;
}
.flow-root {
    表示: フロールート;
}

その結果、上のコンテナ要素のマージンが侵食され、下のコンテナ要素のマージン侵食はdisplay:flow-rootが設定されているため阻止されます。その結果、次の図に示すように、内部の<p>要素が占めるスペースが大きく表示されます。

上記の両方の例にはデモが用意されています。display:flowt-root のデモを見るには、ここをクリックしてください。

display:flow-root float 属性と組み合わせて使用​​することで、2 列の適応型レイアウト効果を実現することもできます。

例えば:

<div class="box flow-root">
    <img src="mm.jpg">
    <p class="flow-root">Pinduoduoは7%急騰し、時価総額は700億米ドルを超え、JD.comを上回りました。黄正氏の個人資産は中国本土で3番目に裕福な人物でもある。
</div>
.box 画像 {
    フロート: 左;
    右マージン: 20px;
}
.box p {
    背景色: #f0f3f9;
    パディング: 10px;
}
.flow-root {
    表示: フロールート;
}

リアルタイム効果は以下のとおりです。

Pinduoduoは7%急騰し、時価総額は700億ドルを超え、JD.comを上回った。黄正氏の個人資産は中国本土の富豪の中で第3位である。

3. 結論

この記事の要点を要約する

display:flow-root要素をブロック状にし、書式設定コンテキスト BFC を含めることができます。これを使用して、フロートをクリアし、 margin結合を削除し、2 列の適応型レイアウトを実現できます。

一部のプロジェクトではdisplay:flow-roo t を使用できます。

表示:フロー

displayプロパティは、要素がインライン ボックスまたはブロック ボックスのいずれかであることを示す、現在実験段階のflowという値もサポートしています。

どのボックスがレンダリングされるかは、外側の要素の表示タイプによって異なります。

インライン書式設定コンテキストまたはブロック書式設定コンテキストを生成します。要素の外部表示タイプがインラインまたはランインであり、要素がブロックまたはインライン書式設定コンテキストに参加している場合、要素はインライン ボックスとして動作し、それ以外の場合はブロック コンテナー ボックスとして動作します。

書式設定コンテキスト プロパティ ( positionfloatoverflowなど) が含まれているかどうか、および要素自体がブロック書式設定コンテキストまたはインライン書式設定コンテキストに参加しているかどうかに応じて、 display:flow要素は、そのコンテンツに対して新しいブロック書式設定コンテキスト (BFC) を確立するか、そのコンテンツを親書式設定コンテキストに統合します。

display:flowの互換性は現在のところ不明であり、サポートしているブラウザはほとんどないと推定されます。

熟成したら詳しく紹介します。

CSS display:flow-root 宣言を1つの記事でマスターするこの記事はこれで終わりです。より関連性の高い CSS display:flow-root コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Docker ベースの Tomcat クラスタと Nginx ロード バランシングの展開の概要

>>:  MySQL テーブルパーティションの使用法と基本原理の詳細な説明

推薦する

VMware仮想マシンの起動時に黒い画面が表示される問題を解決する

# VMware ハードディスクの起動優先順位を調整するステップ 1: 電源をオンにすると、BIOS...

Javascriptで戦略パターンを実装する方法

目次概要コードの実装要約する概要戦略パターンは、JavaScript デザイン パターンにおける動作...

MySQL が重複データを挿入するのを防ぐ 3 つの方法

新しいテーブルを作成する テーブル「人」を作成します( `id` int NOT NULL COMM...

MySQL ルートパスワードをリセットする方法

目次1. ルートパスワードを忘れてしまい、データベースにアクセスできない: DBA にとって、スーパ...

Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル

1. Navicat for MySQL 15をダウンロードするhttps://www.navica...

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...

HTML テーブルタグチュートリアル (35): 列間属性 COLSPAN

複雑なテーブル構造では、一部のセルが垂直方向に複数のセルにまたがるため、列間属性 COLSPAN を...

Vue 値転送の 12 の方法の概要

目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...

MySQLクエリのパフォーマンスを分析する方法

目次スロークエリの基礎: データ取得の最適化データベースから不要なデータが要求されていないか確認する...

Ubuntu 20.04でLNMP環境を構築する方法

簡単な説明以前 Centos7 で構築し、その後個人開発環境として Ubuntu 20.04 を使っ...

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

MySQLのLIMIT文について詳しく説明します

目次質問サーバー層とストレージエンジン層LIMITって何ですか?何をするか?トゥカオ最近、Q&...

Linuxはnode.jsを完全に削除し、yumコマンドで再インストールします。

最初のステップ組み込みのパッケージ管理機能で一度削除する yum 削除 nodejs npm -y ...

Win10 の Linux サブシステムを有効にする方法を説明します (詳細な画像とテキスト付き)

今日は、Windows 10 で Linux サブシステムを有効にする方法を紹介します。早速、手順を...

Docker イメージに基づいて Go プロジェクトをデプロイする方法と手順

知識への依存Go クロスコンパイルの基礎Dockerの基礎Dockerfileカスタムイメージの基本...