CSS マルチカラムレイアウトソリューション

CSS マルチカラムレイアウトソリューション

1. 固定幅+適応型

期待される効果: 左側は固定幅、右側は適応幅 共通コード:
html:

<div class="parent">
    <div class="left">
        <p>左メニュー</p>
    </div>
    <div class="right">
        <li>右の項目1</li>
        <li>右の項目2</li>
        <li>右の項目3</li>
    </div>
</div>

css:

html、本文、p、ul、li {
    マージン: 0;
    パディング: 0;
}
div.left{
    背景: #d2e3e3;
}
div.right {
    背景: #77DBDB;
}

解決策1: フロート

。左 {
    フロート: 左;
    幅: 100ピクセル;
}
。右 {
    margin-left: 100px; // または overflow: hidden
}

解決策2: テーブル

。親 {
    表示: テーブル;
    幅: 100%;
    テーブルレイアウト: 固定; // https://blog.csdn.net/qq_36699230/article/details/80658742
    .左、.右{
        表示: テーブルセル;
    }
    。左 {
        幅: 100ピクセル;
    }
}

オプション3: フレックス

。親 {
    ディスプレイ: フレックス;
    。左 {
        width: 100px; // または flex: 0 0 100px;
    }
    。右 {
        フレックス: 1;
    }
}
  • 固定幅 + 適応レイアウトの 2 つ (またはそれ以上) の列では、上記のソリューションを使用できます。中央の列の設定は、最初の列と一致する必要があります。
  • 可変幅(2列以上)+適応レイアウトでは、上記のソリューションを使用できます。中央の列の設定は、最初の列と一致できます。違いは、特別な幅を設定する必要がないことです。テーブルレイアウトを使用する場合は、次の状況に特に注意する必要があります。
。親 {
    表示: テーブル;
    幅: 100%;
    // table-layout: fixed; を設定するとセルの幅が等しくなるため、ここでは .left、.right は設定されません {
        表示: テーブルセル;
    }
    。左 {
        width: 0.1%; // 幅を最小値に設定します。table-layout: fixed が設定されていないため、幅はコンテンツによって決まります。white-space:nowrap;
    }
}

2. 等幅(2列/複数列)レイアウト

公開コード:
html

<div class="parent">
    <div class="column">
        <p>1</p>
    </div>
    <div class="column">
        <p>2</p>
    </div>
    <div class="column">
        <p>3</p>
    </div>
    <div class="column">
        <p>4</p>
    </div>
</div>

CS

html、本文、div、p {
    マージン: 0;
    パディング: 0;
}
。親 {
    幅: 800ピクセル;
    境界線: 1px ソリッドコーラル;
    。カラム {
        高さ: 30px;
        背景:素焼き。
        p {
            背景: #f0b979;
            高さ: 30px;
        }
    }
}

解決策 1: float (あまりに厳格で、列の数を知る必要があり、境界線がある場合はコンテナーを超えてしまうため、個人的には好きではありません)

。親 {
    左マージン: -20px;
    オーバーフロー: 非表示;
    。カラム {
        フロート: 左;
        幅: 25%;
        左パディング: 20px;
        ボックスのサイズ: 境界線ボックス;
    }
} 


オプション 2: flex (推奨)

。親 {
    ディスプレイ: フレックス;
    。カラム {
        フレックス: 1;
        &+.列 {
            左マージン: 10px;
        }
    }
} 

3. 等高レイアウト

推奨される解決策:

。親 {
    ディスプレイ: フレックス;
}
.左、.右{
    フレックス: 1;
}

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

<<:  Webデザインの経験:ナビゲーションシステムをシンプルにする

>>:  JavaScript イベントバブリング、イベントキャプチャ、イベント委任の詳細な説明

推薦する

虫眼鏡効果を実現するJavaScript

この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

MySQLでテーブル名を変更する方法と注意すべき点

目次1. テーブル名を変更する方法2. 注記要約: 1. テーブル名を変更する方法RENAME TA...

Vue+SpringBoot で Alipay サンドボックス決済を実装するためのサンプルコード

まず、Alipay サンドボックスから一連のものをダウンロードします。多くのブログで取り上げられてお...

Nginx の一般的な設定とテクニックの概要

序文この記事では、Nginx の一般的な、実用的で興味深い構成をいくつか紹介します。この記事を読んだ...

アイデアがWebプロジェクトを公開した後、Tomcatサーバーがプロジェクトとそのソリューションを見つけることができません

概要プロジェクトは正常に作成され、正常にデプロイされましたが、以下に示すように、Tomcat サーバ...

Vite2+Vue3を使用してMarkdownドキュメントをレンダリングする練習

目次カスタム Vite プラグインvite-plugin-markdownの使用Front Matt...

DockerコンテナのIPアドレスを表示する方法

私はずっとDockerにはIPアドレスがないと思っていました。実はDockerのネットワークテンプレ...

Linux におけるシステム入出力管理の詳細な説明

システムの入力と出力の管理1. システムの入力と出力を理解するLinuxシステムでは、1は正しい出力...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...

Mysqlデータベースの文字化けに対処する方法

MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...

HTMLエリアタグの詳しい説明

<area> タグは、イメージ マップ内の領域を定義します (注: イメージ マップはク...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル (Windows の場合)

この記事では、MySQL 8.0.15 winx64のインストールと設定方法を参考までに紹介します。...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

どのような種類の MYSQL 接続クエリを知っていますか?

序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...