マージントップ崩壊現象とその具体的解決策

マージントップ崩壊現象とその具体的解決策

マージントップの崩壊とは

margin-top の崩壊は、CSS ボックス モデルで発生する現象です。親要素が子要素を囲む場合、子要素に margin-top プロパティが設定されていると、このとき、子要素の境界線を親要素の境界線から一定の距離だけ離したいのですが、親要素の上部が本体の境界線からずれてしまいます。これが margin-top の崩壊という現象です。

子要素 (緑色の部分) に margin-top 属性が追加されていない場合、Web ページは次のようになります。

ただし、子要素に margin-top 属性を追加すると、Web ページの表示は次のようになります。

子要素の境界線と親要素の境界線(黄色の部分)の間の距離は広がっていないことがわかります。代わりに、親要素の上境界線とブラウザの上境界線の間の距離が広がっています。つまり、親要素は子要素とともに一定の距離だけ下に移動します。検査後、この距離は子要素に設定した margin-top 属性値とまったく同じです。これが margin-top の崩壊という現象です。

マージントップの崩壊を解決する方法

マージントップの崩壊問題は、以下の点から解決でき、効果的であることが証明されています。

1. 親要素に境界線を追加する

元の画像効果に影響を与えないように、境界線の色を白(ブラウザの背景色と一致する)に設定できます。

2. オーバーフローの非表示

親要素のスタイルに overflow:hidden を追加します。

3. フロートを使用する

親要素のスタイルに float を追加しますが、この方法は推奨されません。未知のエラーが発生するため

4. 親要素にposition:fixedを追加します。

ここでは、配置の知識を使用して、親要素を固定位置に表示し、margin-top の崩壊の問題の影響を受けないようにします。

5. 親要素に display: table を設定します。

6. 疑似要素を使用する

疑似要素は実際のページ要素ではなく、HTML には対応する要素がないため疑似要素と呼ばれますが、その使用方法とパフォーマンスの動作は実際の要素と同じであるため、疑似要素と呼ばれます。

.clearfix::before{ 
コンテンツ: "; 
表示: テーブル; 
} 

.clearfix は親要素に追加される別のクラス名です。これは、他の追加の不明なエラーを引き起こすことなく、margin-top の崩壊の問題を解決できる推奨ソリューションです。

解決策が決まったので、次に示すように最終結果を見てみましょう。

ご覧のとおり、子要素の現在の位置は親要素に対して相対的に移動しており、親要素の位置には影響しません。

デバッグ コードは以下に添付されています。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <meta http-equiv="X-UA-compatible" content="ie=edge">
    <title>10 マージン上部折りたたみ</title>

    <スタイル>

        .clearfix::before{
            コンテンツ: '';
            表示: テーブル;
        }

        。箱{
            幅: 200ピクセル;
            高さ: 200px;
            背景色: ゴールド;
            マージン:0px 自動; 
        }

        .con{
            幅: 100ピクセル;
            高さ: 50px;
            背景色: 緑;
            上マージン: 100px;
        }
    </スタイル>
</head>
<本文>

    <div class="box clearfix">
        <div class="con"></div>
    </div>

</本文>
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  相対幅を使用してテーブルのサイズを変更する際の問題

>>:  nginxで静的リソースを公開する方法

推薦する

MySQLの関連ロックについての簡単な理解

この記事は主にInnoDBのロックに関する知識を素早く理解してもらうことを目的としています。 Roc...

Vue の element-ui コンポーネントのデフォルトの CSS スタイルを変更する 4 つの方法

目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...

生年月日を年齢に変換し、グループ化して人数を数えるMySQLの例

データベースのクエリ `学生`から*を選択 クエリ結果id名前誕生日1張三1970-10-01 2李...

ネイティブ JavaScript でショッピングカートを実装する

この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...

JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。

目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...

MySQL の暗黙的な型変換によって発生するインデックス障害の解決策

目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...

Vue3 ベースのフルスクリーン ドラッグ アップロード コンポーネント

この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...

相同性とクロスドメイン、jsonp(関数カプセル化)、CORS原則の詳細な分析

目次同一起源ポリシーAjax リクエストの制限: Ajaxは自身のサーバーにのみリクエストを送信でき...

HTML ボディタグと HTML でよく使われる制御タグの詳細な説明

1. <body> タグ: Web ページの本体をマークするために使用されます。body...

MySQLのジョイントクエリについて詳しく説明します

目次ユニオンクエリ1. 中国の各省のIDと名前を照会する2. 湖南省のすべての地級市のIDと名称3....

フォーム要素の簡単な実装コードでは登録を例に挙げています

コード実装:コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

Docker Compose を使用して Confluence を構築するチュートリアル

この記事は「Attribution 4.0 International (CC BY 4.0)」ライ...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

Linux でバックグラウンドで実行中のプログラムを表示して終了する方法

1. .shファイルを実行する./sh ファイルを使用して直接実行することもできますが、現在のターミ...