CSS 複数 3 列適応レイアウト実装の詳細な説明

CSS 複数 3 列適応レイアウト実装の詳細な説明

序文

従来のWEBレイアウトに沿うため、すべてヘッダーとフッターモードの左・中央・右レイアウトで書かれています。

1つ目: float実装に基づく

実装のアイデア

従来の考え方では、左と右の Aside をそれぞれ左側と右側に浮かせることになります。

コードの実装

<!-- HTML セクション -->
<div class="コンテナ">
  <!-- トップヘッダー -->
  <header>ここにヘッダーがあります</header>
  <!-- 脇に置き、中央にコンテンツを配置 -->
  <div class="middle clearfix">
    <aside class="left"></aside>
    <aside class="right"></aside>
    <!-- 中央のコンテンツは、右側が圧迫されるのを防ぐために右の列の下に配置されます。 -->
    <div class="content">ここにコンテンツがあります</div>
  </div>
  <!-- フッター -->
  <フッター></フッター>
</div>
<!-- CSS セクション -->
<スタイル lang="scss">
  * {
    マージン: 0;
    パディング: 0;
  }
  
  .clearfix {
    ズーム: 1;
    &::後 {
      表示: ブロック;
      コンテンツ: ' ';
      クリア:両方
    }
  }
  
  html、本文{
    幅: 100%;
    高さ: 100%
    }
    。容器 {
      幅: 100%
      高さ: 100%
      ヘッダー {
        高さ: 80px;
        背景: rgba(0, 0, 0, 0.5)
      }
      フッター {
        高さ: 80px;
        背景: rgba(0, 0, 0, 0.5)
      }
      。真ん中 {
        高さ: calc(100% - 80px - 80px)
        脇に
          高さ: 100%;
          幅: 300ピクセル;
          背景: rgba(156, 154, 249, 1)
        }
        。左 {
          フロート: 左
        }
        。右: {
          フロート: 右
        }
      }
    }
  }
</スタイル>

成果を達成する

2番目の方法:位置に基づく:絶対実装

実装のアイデア

中央の 3 つの列の親に対して position: relative を割り当て、左と右の Aside 列に position: absolute を割り当て、それぞれ left: 0 と right: 0 width: custom 値を割り当てます。中央のコンテンツの左と右に、それぞれ左と右の幅と同じ幅を割り当てます。

コードの実装

<!-- HTML 関連コード-->
<div class="コンテナ">
  <!-- トップヘッダー -->
  <ヘッダー></ヘッダー>
  <div class="middle">
    <!-- 脇に置いて -->
    <aside class="left"></aside>
    <!-- 中間コンテンツ -->
    <div class="content">ここにコンテンツがあります</div>
    <!-- 右側 -->
    <aside class="right"></aside>
  </div>
  <!-- フッター -->
  <フッター></フッター>
</div>
<!-- CSS 関連コード -->
<スタイル lang="scss">
  * {
    マージン: 0;
    パディング: 0
  }
  
  html、本文{
    幅: 100%;
    高さ: 100%
  }
  
  。容器 {
    幅: 100%;
    高さ: 100%;
    ヘッダー {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    フッター {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    。真ん中 {
      高さ: calc(100% - 80px - 80px);
      位置: 相対的;
      さて、
      。コンテンツ {
        位置: 絶対;
      }
      。左 {
        幅: 300ピクセル;
        背景: rgba(156, 154, 249, 1);
        左: 0;
        高さ: 100%;
      }
      。右 {
        幅: 300ピクセル;
        背景: rgba(156, 154, 249, 1);
        右: 0;
        高さ: 100%;
      }
      。コンテンツ {
        左: 300ピクセル;
        右: 300px;
      }
    }
  }
</スタイル>

成果を達成する

3番目の方法:ディスプレイに基づく:フレックス

実装のアイデア

左、中央、右の列の親にdisplay: flexを指定し、左と右のAside幅にカスタム値を指定し、中央のコンテンツにflex:1を指定します。

コードの実装

<!-- HTML 関連コード-->
<div class="コンテナ">
  <!-- トップヘッダー -->
  <ヘッダー></ヘッダー>
  <div class="middle">
    <!-- 脇に置いて -->
    <aside class="left"></aside>
    <!-- 中間コンテンツ -->
    <div class="content">ここにコンテンツがあります</div>
    <!-- 右側 -->
    <aside class="right"></aside>
  </div>
  <!-- フッター -->
  <フッター></フッター>
</div>
<!-- CSS セクション -->
<スタイル lang="scss">
  * {
    マージン: 0;
    パディング: 0;
  }
  
  html、本文{
    幅: 100%;
    高さ: 100%;
  }
  
  。容器 {
    ヘッダー {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    フッター {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    。真ん中 {
      ディスプレイ: フレックス;
      高さ: calc(100% - 80px - 80px);
      脇に
        幅: 300ピクセル;
        背景: rgba(156, 154, 249, 1);
      }
      。コンテンツ: {
        フレックス: 1;
      }
    }
  }
</スタイル>

成果を達成する

4番目の方法:表示に基づく:テーブルの実装

実装のアイデア

左、中央、右の列の親に display: table、width: 100% を指定し、左、中央、右の列にそれぞれ display: table-cell を指定し、左と右の Aside 幅をそれぞれ指定します。

コードの実装

<!-- HTML 関連コード-->
<div class="コンテナ">
  <!-- トップヘッダー -->
  <ヘッダー></ヘッダー>
  <div class="middle">
    <!-- 脇に置いて -->
    <aside class="left"></aside>
    <!-- 中間コンテンツ -->
    <div class="content">ここにコンテンツがあります</div>
    <!-- 右側 -->
    <aside class="right"></aside>
  </div>
  <!-- フッター -->
  <フッター></フッター>
</div>
<!-- CSS セクション -->
<スタイル lang="scss">
  * {
    マージン: 0;
    パディング: 0;
  }
  
  html、本文{
    幅: 100%;
    高さ: 100%;
  }
  
  。容器 {
    ヘッダー {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    フッター {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    。真ん中 {
      表示: テーブル;
      幅: 100%
      高さ: calc(100% - 80px - 80px);
      脇に
        幅: 300ピクセル;
        表示: テーブルセル;
        背景: rgba(156, 154, 249, 1);
      }
      。コンテンツ: {
        表示: テーブルセル;
      }
    }
  }
</スタイル>

成果を達成する

5番目: ディスプレイに基づく: グリッド実装

実装のアイデア

左、中央、右の列の親に display: grid を指定し、grid-template-columns: 300px auto 300px を使用して、幅が 300px、auto、300px の 3 つの列に分割します。

コードの実装

<!-- HTML 関連コード-->
<div class="コンテナ">
  <!-- トップヘッダー -->
  <ヘッダー></ヘッダー>
  <div class="middle">
    <!-- 脇に置いて -->
    <aside class="left"></aside>
    <!-- 中間コンテンツ -->
    <div class="content">ここにコンテンツがあります</div>
    <!-- 右側 -->
    <aside class="right"></aside>
  </div>
  <!-- フッター -->
  <フッター></フッター>
</div>
<!-- CSS セクション -->
<スタイル lang="scss">
  * {
    マージン: 0;
    パディング: 0;
  }
  
  html、本文{
    幅: 100%;
    高さ: 100%;
  }
  
  。容器 {
    ヘッダー {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    フッター {
      高さ: 80px;
      背景: rgba(0, 0, 0, 0.5);
    }
    。真ん中 {
      表示: グリッド;
      グリッドテンプレート列: 300px 自動 300px;
      高さ: calc(100% - 80px - 80px);
      脇に
        背景: rgba(156, 154, 249, 1);
      }
    }
  }
</スタイル>

成果を達成する

以上で、CSS での各種 3 列アダプティブ レイアウトの実装について詳細に解説した記事は終了です。CSS 3 列アダプティブ レイアウトに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL での select、distinct、limit の使用

>>:  HTML でさまざまなスペースの特徴と表現を探る (推奨)

推薦する

my.cnf (my.ini) 重要なパラメータの最適化設定手順

MyISAM ストレージエンジンMyISAM ストレージ エンジンは、書き込みよりも読み取りが多く、...

JavaScript キャンバスで動的な点と線の効果を実現

この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...

ミニプログラムは、カスタムのマルチレベル単一選択と複数選択を実装します

この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...

CSS3で蓮の花が咲くアニメーション効果を実現

まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...

React.Childrenの詳しい使い方

目次1. React.Children.map 2. React.Children.forEach ...

MySQL 接続クエリを本当に学びましたか?

1. 内部結合クエリの概要内部結合は、アプリケーションで非常に一般的な結合操作であり、通常はデフォ...

Next.js 入門チュートリアル

目次導入Next.jsプロジェクトを作成するNext.js プロジェクトを手動で作成するcreact...

Docker を使用して Microsoft Sql Server を展開するための詳細な手順

目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...

3次元画像配置効果を実現する純粋なCSSのサンプルコード

1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...

HTML でスクロールバーを非表示にしたり削除したりする方法

1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...

MySQL は正常に起動するがポートをリッスンしない場合の解決策

問題の説明MySQL が正常に起動しました。以下に示すように、 ps -ef |grep mysql...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

CSS ピクセルとさまざまなモバイル画面適応の問題に対する解決策

ピクセル解決通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクト...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...