CSS 等高レイアウトの一般的な方法

CSS 等高レイアウトの一般的な方法

等高レイアウト

同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。

等高レイアウトの実装の観点からは、2つのカテゴリに分けることができます。

擬似高さ

サブ要素の高さの違いは依然として存在しますが、視覚的には高さが等しいという印象を与えます。

実高

サブ要素の高さは同じ

まず擬似等高実装方法を見てみましょう

負のマージンとパディングで実装

真の等高実装

  • テーブル
  • 絶対
  • フレックス
  • グリッド
  • js

擬似等高 - 負のマージンとパディング

主にマイナスマージンで実装されます。具体的なマイナスマージンの実装については以下の記事を参照してください。

 <div class="レイアウト親">
        <div class="left"><p>左</p></div>
        <div class="center">
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
        </div>
        <div class="right"><p>右</p></div>
        <div style="clear: both;">111111111111</div>
    </div>
。親{
    位置: 相対的;
    オーバーフロー:非表示;
    色: #efefef;
}
。中心、
。左、
。右 {
    ボックスのサイズ: 境界線ボックス;
    フロート: 左;
}
。中心 {
    背景色: #2ECC71;
    幅: 60%;
}

。左 {
    幅: 20%;
    背景色: #1ABC9C;
}
。右 {
    幅: 20%;
    背景色: #3498DB;
}
。左、
。右、
。中心 {
    下マージン: -99999px;
    パディング下部: 99999px;
}

真の等高 - テーブルレイアウト

  <div class="レイアウト親">
        <div class="left"><p>左</p></div>
        <div class="center">
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
        </div>
        <div class="right"><p>右</p></div>
        <div style="clear: both;">111111111111</div>
    </div>
    。親{
        位置: 相対的;
        表示: テーブル;
        色: #efefef;
    }
    。中心、
    。左、
    。右 {
        ボックスのサイズ: 境界線ボックス;
        表示: テーブルセル
    }
    。中心 {
        背景色: #2ECC71;
        幅: 60%;
    }

    。左 {
        幅: 20%;
        背景色: #1ABC9C;
    }
    。右 {
        幅: 20%;
        背景色: #3498DB;
    }

真の輪郭 - 絶対

    <div class="レイアウト親">
        <div class="left"><p>左</p> </div>
        <div class="center">
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
        </div>
        <div class="right"><p>右</p></div>
    </div>
   。親{
        位置: 絶対;
        色: #efefef;
        幅:100%;
        高さ: 200px;
    }

    。左、
    。右、
    。中心 {
        位置: 絶対;
        ボックスのサイズ: 境界線ボックス;
        トップ:0;
        下:0;
    }
    。中心 {
        背景色: #2ECC71;
        左: 200px;
        右: 300px;
    }

    。左 {
        幅: 200ピクセル;
        背景色: #1ABC9C;
    }
    。右 {
        右:0;
        幅: 300ピクセル;
        背景色: #3498DB;
    }
  

真高 - フレックス

。親{
    ディスプレイ: フレックス;
    色: #efefef;
    幅:100%;
    高さ: 200px;
}

。左、
。右、
。中心 {
    ボックスのサイズ: 境界線ボックス;
    フレックス: 1;
}
。中心 {
    背景色: #2ECC71;
}
。左 {
    背景色: #1ABC9C;
}
。右 {
    背景色: #3498DB;
}
<div class="レイアウト親">
    <div class="left"><p>左</p> </div>
    <div class="center">
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
    </div>
    <div class="right"><p>右</p></div>
</div>

真の高さ - グリッド

    。親{
        表示: グリッド;
        色: #efefef;
        幅:100%;
        高さ: 200px;
        グリッドテンプレートの列: 1fr 1fr 1fr;
    }

    。左、
    。右、
    。中心 {
        ボックスのサイズ: 境界線ボックス;
    }
    。中心 {
        背景色: #2ECC71;
    }
    。左 {
        背景色: #1ABC9C;
    }
    。右 {
        背景色: #3498DB;
    }
<div class="レイアウト親">
    <div class="left"><p>左</p> </div>
    <div class="center">
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
        <p>私は真ん中の部分の内容です</p>
    </div>
    <div class="right"><p>右</p></div>
</div>

真の高さ-js

すべての要素の最も高い列を取得し、比較して変更します
    <div class="レイアウト親">
        <div class="left"><p>左</p> </div>
        <div class="center">
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
            <p>私は真ん中の部分の内容です</p>
        </div>
        <div class="right"><p>右</p></div>
    </div>
    。親{
        オーバーフロー:自動;
        色: #efefef;
    }
    。左、
    。右、
    。中心 {
        フロート: 左;
    }
    。中心 {
        幅: 60%;
        背景色: #2ECC71;
    }
    。左 {
        幅: 20%;
        背景色: #1ABC9C;
    }
    。右 {
        幅: 20%;
        背景色: #3498DB;
    }
     // 最も高い要素の高さを取得します。 var nodeList = document.querySelectorAll(".parent > div");
    var arr = [].slice.call(nodeList,0);
    var maxHeight = arr.map(function(item){
        item.offsetHeight を返す
    }).sort(関数(a, b){
        a - b を返します。
    })。ポップ();
    arr.map(関数(アイテム){
        if(item.offsetHeight < maxHeight) {
            item.style.height = maxHeight + "px";
        }
    }); 

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

<<:  大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

>>:  ウェブデザインのためのロイヤルブルーのカラーマッチング入門

推薦する

ROS で Turtlebot3 移動ロボットを制御するための基本的なチュートリアル

中国語チュートリアルhttps://www.ncnynl.com/category/turtlebo...

MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)

早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...

nginxリバースプロキシのyum設定の詳細な手順

パート0 背景社内のイントラネットサーバーは直接インターネットにアクセスすることはできませんが、外部...

SQL ストアド プロシージャの取得、データ取得、プロセス分析

この記事は主に、SQL のストアド プロシージャから返されたデータを取得するプロセスの分析を紹介しま...

優秀なウェブ開発者が開発スキルを向上させるために知っておくべき10のこと

「開発とは、単にコードを書くだけではない」というのは、3EV の Dan Frost 氏の言葉です。...

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TR...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

よく使われるHTMLタグのインライン要素とブロックレベル要素の詳細な説明

ブロック要素HTMLタグ分類の詳細* 住所 - 住所* blockquote - ブロック引用* c...

Dockerはnextcloudを使用してプライベートBaiduクラウドディスクを構築します

突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

Kylin V10 サーバーで Storm をコンパイルしてインストールする詳細なプロセス

1 はじめにApache Storm は、Hadoop と同様に、大量のデータを処理するために使用で...

JavaScript におけるブラウザ互換性の問題について簡単に説明します

ブラウザの互換性は、実際の開発では見落とされがちな最も重要な部分です。古いバージョンのブラウザの互換...

Docker /var/lib/docker/aufs/mnt ディレクトリのクリーニング方法

会社のサービスはdockerを使用しており、ディスクマンが見つかりました。その後、次のコマンドを実行...

MySQLデータベースでの値の追加、変更、削除、クリアの例

3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...