CSS のマージンの崩壊問題を解決する方法

CSS のマージンの崩壊問題を解決する方法

まず、マージン崩壊が発生する 3 つの状況を見てみましょう。

1. 隣接する 2 つのブロックレベル要素が接する場合、上の要素には下マージン margin-bottom があり、下の要素には上マージン margin-top がある場合、それらの間の垂直距離は 2 つの値のうち大きい方の値になります。

<スタイル>
  .box1 {
     幅: 150ピクセル;
     高さ: 100px;
     下マージン: 20px;
     背景色: rgb(201, 239, 98);
  }
  .box2 {
     幅: 100ピクセル;
     高さ: 100px;
     背景色: レベッカ紫;
     上マージン: 10px;
  }
</スタイル>
   <div class="box1"></div>
   <div class="box2"></div>

このとき、2 つのボックス間の垂直距離は 30 px ではなく 20 px になります。

解決:

1 つのボックスにのみ余白を追加するようにしてください。

2. ネストされた 2 つのブロック要素の場合、親要素に上余白と境界線がない場合、親要素の上余白は子要素の上余白と結合され、結合された余白は 2 つのうち大きい方になります。

<スタイル>
        .box1 {
            幅: 150ピクセル;
            高さ: 100px;
            上マージン: 20px; 
            /* 境界線: 1px 実線 #000000; */
            背景色: 赤;
        }

        .box2 {
            幅: 100ピクセル;
            高さ: 100px;
            /* 境界線: 1px 実線 #000000; */
            背景色: レベッカ紫;
            上マージン: 10px;
        }
    </スタイル>
</head>

<本文>
    <div class="box1">
        <div class="box2"></div>
    </div>
</本文>

このとき、2 つのボックスが結合され、上余白は 20 px になります。

解決:

①親要素の上境界線を定義する

②親要素の上余白を定義する

③親要素にoverflow:hiddenを追加します。

④フローティングを追加

⑤絶対位置指定を追加する

3. 空のブロックレベル要素があり、境界線、パディング、インラインコンテンツ、高さ、最小高さが存在しない場合は、上余白と下余白の間に障害はなく、上余白と下余白は結合されます。

<p style="margin-bottom: 0px;">この段落と次の段落の間の距離は 20px になります</p>

<div style="margin-top: 20px; margin-bottom: 20px;"></div>

<p style="margin-top: 0px;">この段落と上の段落の間の距離は 20px になります</p>

真ん中のdivの幅が0で、上下の余白が結合され、余白の最大値のみが取られていることがわかります。

CSS のマージン崩壊問題を解決する方法についての記事はこれで終わりです。CSS マージン崩壊に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

>>:  HTML でテキストの折り返しを実装する例 (HTML でテキストと画像が混在)

推薦する

MySQL 完全折りたたみクエリ正規マッチングの詳細な説明

概要前の章では、クエリのフィルター条件について学習しました。MySQL では、like % ワイルド...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...

JS の 3 つの主要な問題、非同期性とシングルスレッドについて簡単に説明します。

目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...

HTML で div+CSS を使用してシンプルな矢印アイコンを実装するコード

ウェブデザインでは、ウェブページを美しく見せるために矢印を装飾としてよく使用します。現在、多くのウェ...

JavaScript CollectGarbage 関数の例

まず、メモリ解放の例を見てみましょう。 <スクリプト言語="JavaScript&q...

Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

最近、ポーターを学んでいます。こんなに強力なものがあったなんて、今まで知らなかった気がします。クラス...

Vueフレームワークで習得しなければならない重要な知識を学びます

1. Vueとは何かVue は、ユーザー ページを構築するためのプログレッシブ フレームワークです。...

JavaScript インスタンス オブジェクトでプロトタイプ メソッドをオーバーライドする方法の詳細

目次JavaScriptでは、通常、次のコードのようにクラスを簡単に定義できます。 var サンプル...

ノードでシェルスクリプトを使用する方法

背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...

MySQLデータベースのトランザクションとインデックスの詳細な説明

目次1. 事務:取引の 4 つの主な特徴:同時トランザクションはどのような問題を引き起こしますか? ...

Dockerはコンテナにポートを動的に公開します

コンテナのIPアドレスを表示するdocker examine <コンテナ名またはID> ...

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

Docker Machineの詳細な説明

Docker と Docker Machine の違いDocker はクライアント サーバー アーキ...

jsを使ってシンプルなディスククロックを実現する

この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...

mysql.data.dll ドライバーのさまざまなバージョンの簡単な分析

ここにmysqlドライバmysql.data.dllがあります知らせ:ここではX86バージョンが多く...