Grid Layout でカラム(セル) の最小幅を設定する - CSS

Grid Layout でカラム(セル) の最小幅を設定するコードを紹介します。

概要

グリッドのカラム最小幅を設定する場合は、グリッドの列幅設定部分で minmax() 関数を利用します。

書式

minmax(最小幅, 最大幅)

記述例

下記の記述ではグリッドの2列目の幅を最大幅を1fr、最小幅を320ピクセルで指定しています。
.container {
  display: grid;
  grid-template-columns: 240px minmax(320px, 1fr) 200px;
  grid-template-rows: 120px auto 120px;
}

コード

下記のCSS,HTMLファイルを作成します。
grid-column-minimum-width.css
.Container {
    display: grid;
    grid-template-columns: 160px minmax(160px, 1fr) 160px 160px;
    grid-template-rows: 120px 120px;
    border: solid #ff6a00 1px;
}

.GridItem1 {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
    background-color: #ff9c9c;
}

.GridItem2 {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
    background-color: #ffcb70;
}

.GridItem3 {
    grid-column: 3 / 4;
    grid-row: 1 / 2;
    background-color: #fffd70;
}

.GridItem4 {
    grid-column: 4 / 5;
    grid-row: 1 / 2;
    background-color: #b0ff70;
}

.GridItem5 {
    grid-column: 1 / 2;
    grid-row: 2 / 3;
    background-color: #7ee68d;
}

.GridItem6 {
    grid-column: 2 / 3;
    grid-row: 2 / 3;
    background-color: #7ee6e2;
}

.GridItem7 {
    grid-column: 3 / 4;
    grid-row: 2 / 3;
    background-color: #95a7f5
}

.GridItem8 {
    grid-column: 4 / 5;
    grid-row: 2 / 3;
    background-color: #d095f5;
}
grid-column-minimum-width.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <link rel="stylesheet" href="grid-column-minimum-width.css" />
</head>
<body>
  <div class="Container">
    <div class="GridItem1">項目1</div>
    <div class="GridItem2">項目2</div>
    <div class="GridItem3">項目3</div>
    <div class="GridItem4">項目4</div>
    <div class="GridItem5">項目5</div>
    <div class="GridItem6">項目6</div>
    <div class="GridItem7">項目7</div>
    <div class="GridItem8">項目8</div>
  </div>
</body>
</html>

解説

グリッドの列の幅はCSSファイル中のContainerクラスの下記のgrid-template-columnsの記述で設定されています。
4つの値が記述されているため、グリッドは4列となります。左から以下の値となっています。
  • 160px
  • minmax(160px, 1fr)
  • 160px
  • 160px

2列目以外は160ピクセルの固定値が設定されており、固定幅となります。2列目は minmax(160px, 1fr) の指定になっており、最大幅が1fr、最小幅が160ピクセルです。1frが指定されているため、列はレスポンシブ幅となり枠の幅いっぱいまで広がります。カラムの幅にfrを指定した場合の動作の詳細はこちらの記事を参照してください。
下記の設定により、ウィンドウ幅全体にグリッドの枠が表示され、1,3,4列目は160ピクセル幅で表示され、2列目が伸縮する動作になります。
    grid-template-columns: 160px minmax(160px, 1fr) 160px 160px;

表示結果

上記のHTMLファイルをWebブラウザで表示します。下図の画面が表示されます。


ウィンドウ幅を狭めます。2列目以外は固定幅のため、2列目の幅が縮まります。




2列目の最小幅である160ピクセルまで幅が縮みます。


さらにウィンドウ幅を縮めると、これ以上幅を縮められる場所が無いため、左右スクロールバーが表示されます。



著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
最終更新日: 2018-11-27
作成日: 2018-11-27
iPentec all rights reserverd.