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 でテキストと画像が混在)

推薦する

Nginx 最適化サービスで Web ページ圧縮を実装する方法

リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...

スケルトンスクリーン効果を実現する CSS

ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...

ハンドラー PageHandlerFactory-Integrated のモジュール リストに不正なモジュール ManagedPipelineHandler が含まれています

Web プロジェクトを開発する場合、IIS をインストールする必要があります。IIS がインストール...

MySQLの主キーとユニークキーの重複挿入の解決策の詳細な説明

目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...

CSS でのフレックスレイアウトの詳細な説明

フレックス レイアウトは、エラスティック レイアウトとも呼ばれます。任意のコンテナーをフレックス レ...

Javascriptのクロージャとアプリケーションの詳細な説明

目次序文1. クロージャとは何ですか? 1.1 クロージャは条件コードを満たす1.2 クロージャ生成...

HTML における src と href の違いについての簡単な説明

簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...

MySQL 8.0.13 のダウンロードとインストールのチュートリアル(画像とテキスト付き)

MySQL は最もよく使用されるデータベースです。詳しく知るには、コンピュータにインストールする必...

Vue でログインと登録テンプレートを実装するためのサンプルコード

テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...

Vueページの画像が表示されない問題の解決方法

新しいバージョンの設定インターフェースを作る際に、vueフレームワークを使用して実装しました。ページ...

JSキャンバスは描画ボードと署名ボードの機能を実現します

この記事では、お絵かきボード/サインボード機能を実現するためのJSキャンバスの具体的なコードを参考ま...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

丸い角や鋭い角を表現するために、絵の代わりに文字を使用する研究

Google Gmail ページから撮った次のスクリーンショットをご覧ください (同じ場所からスクリ...