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データベース用のマスタースレーブシステムを構築するアイデアを共有する

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

推薦する

CSS3は、ズームと回転を実現するためにscale()とrotate()を使用します。

1. scale() メソッドズームとは「縮小」と「拡大」を意味します。 CSS3 では、scal...

Windows システムで MySQL が起動しない場合の一般的な解決策

MySQL 起動エラーWindows 10 に MySQL をインストールする前は、net star...

Vue フロントエンドで PDF を生成してダウンロードする方法

目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...

node.js でマルチコア CPU を最大限に活用する方法

目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...

Ubuntu環境でPHPとNginxをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...

Vueスロットの使用の詳細

目次1. スロットを使用する理由1.1 スロット1.2 コンポーネントのスロット1.3 例2. この...

CSSは固定比率のブロックレベルコンテナを簡単に実装できる

H5 レイアウトを設計する場合、通常はバナーに遭遇することになります。例えば、2:1 で表示したい場...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

MySQL バージョンは、2 つのタイムスタンプ型の値をサポートしていないバージョンよりも低いです。

MySQL エラー:エラー コード: 1293 テーブル定義が正しくありません。CURRENT_T...

JavaScript で配列遅延評価ライブラリを実装する方法

目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...

MyCat を使用して Linux で MySQL マスター/スレーブの読み取り/書き込み分離を実装する方法

目次Linux - MyCat を使用して MySQL マスター スレーブの読み取り書き込み分離を実...

【Webデザイン】E-WebTemplates の美しい海外の Web ページ テンプレート (FLASH+PSD ソース ファイル+HTML) を共有します

これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

CentOS 7のインストールと設定方法のグラフィックチュートリアル

この記事は、CentOS 7の詳細なインストールチュートリアルを参考のために記録します。具体的な内容...

HTML外部参照CSSファイルが効果を発揮しない理由の分析と解決

フロントエンドの初心者として、私は数日間フロントエンドをいじってみました。 。今日、私は自分が固く信...