CSS マージンの重複と解決策の探索の詳細な説明

CSS マージンの重複と解決策の探索の詳細な説明

最近、CSS 関連の知識ポイントをいくつか見直し、CSS における典型的なマージンの重なりの問題を整理してまとめました。目的は、レビューの効果をテストし、他の人に役立つことを願っています。漏れがある場合は、フロントエンドのベテランにアドバイスを求めたいと思います。

質問: CSSレイアウトを使用すると、次の図に示すように、兄弟ノードまたは親子ノードによって設定された上部と下部の余白が重なり合うことがわかります。

    <スタイル>
        。外 {
            幅: 100%;
            背景色: ピンク;
        }

        .out>div {
            高さ: 100px;
            幅: 100%;
            背景色: rgb(223, 136, 23);
            マージン: 5px 0 10px;
        }
    </スタイル>
    <セクションクラス="out">
        <div>11</div>
        <div>22</div>
        <div>33</div>
    </セクション>

セクション全体の高さを確認すると、実際には 345px になるはずですが、親と子、兄弟の余白が重なり合っているため、高さは 320px になっていることがわかります。では、実際のアプリケーションでこの問題をどのように解決するのでしょうか?
この問題は、BFC (Full Block Formatting Context) を作成することで解決できます。まず、BFC の原理を明確にしましょう。

BFC 内の要素は外部の要素に影響を与えず、比較的独立した閉じた領域です。
隣接する BFC 間で垂直マージンの重なりはありません。つまり、要素のマージンが重ならないようにするには、BFC 領域を作成する必要があります。
BFC 領域はフローティング要素のボックスと重なりません。
BFC の高さを計算する際には、浮遊要素も考慮されます。
ブロック書式設定コンテキストを作成するにはどうすればよいですか?
1. オーバーフロープロパティを非表示に設定します。
2. float が none ではない。
3. 位置の値は静的でも相対的でもない。
4. 表示属性がテーブルの場合

    <スタイル>
        。外 {
            幅: 100%;
            背景色: ピンク;
            オーバーフロー: 非表示;
        }

        .out>div {
            高さ: 100px;
            幅: 100%;
            背景色: rgb(223, 136, 23);
            マージン: 5px 0 10px;
            /* オーバーフロー: 非表示; */
            フロート: 左;
        }
    </スタイル>
    <セクションクラス="out">
        <div>11</div>
        <div>22</div>
        <div>33</div>
    </セクション>

セクションの高さを再度確認すると、高さが 345 ピクセルに戻っていることがわかります。これは、BFC が高さを計算するときに、フローティング子要素の高さも考慮されていることを証明しています。

CSS マージンの重複の詳細な説明と解決策の探求に関するこの記事はこれで終わりです。CSS マージンの重複に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  int(3)とint(10)の値の範囲はmysqlで同じですか?

>>:  CSS最適化スキルの自己実践体験

推薦する

コードレイン効果を実現するjQueryプラグイン

この記事では、コードレイン特殊効果を実現するためのjQueryプラグインの具体的なコードを参考までに...

Vueカスタムテーブル列実装プロセス記録

目次序文レンダリングsetTable コンポーネント使用結論序文フォームを使用して PC 側のプロジ...

HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...

シンプルなページング効果を実現するjQuery+Ajax

この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...

MySQL ロックブロッキングの詳細な分析

日常のメンテナンスでは、スレッドがブロックされることが多く、データベースの応答が非常に遅くなります。...

MySql ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策

方法1: MySQL では、次のコマンド ラインで MySQL サーバーを起動することにより、アクセ...

ラジオボタンと複数選択ボタンは画像を使用してスタイル設定されます

ラジオ ボタンや複数選択ボタンにスタイルを追加する方法や、ボタンを大きくする方法を尋ねる人を以前見か...

HTMLは正規表現を使用してテーブルの例をテストします

以下は、HTML で正規表現を使用してテーブルをチェックするサンプル コードです。具体的なコードの内...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

HTML+JS に基づくシンプルな年齢計算ツールの実装

目次序文デモンストレーション効果HTMLコードCSSコードJavascriptコードデモアドレス序文...

Vue.js フロントエンド Web ページ ポップアップ非同期動作例の分析

目次1. 序文2. ポップアップコンポーネントを2つ見つける3. 自分で作る3.1. Promise...

最初のReactページを作成する方法

目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...

vue-cli の紹介とインストール

目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...

ApacheとTomcatによるクラスタ環境構築プロセスの分析

実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...