CSSのグリッドレイアウト【現役エンジニアが解説】

PROGRAM

今回は、CSSのグリッドレイアウトについて、HTMLとCSSに分け、簡単に解説していきます。

HTML

ここでは2×2のグリッドレイアウトを想定します。

グリッドレイアウトにはコンテナとアイテムの2つの構成要素がありますが、HTMLではアイテムはコンテナの中に順不同で並べるだけです。

<div id="container">
    <div id="item_A">A</div>
    <div id="item_B">B</div>
    <div id="item_C">C</div>
</div>

上記のコードでは、2×2のグリッドレイアウトを想定して、HTMLでコンテナ1つとアイテム3つを、CSSから操作できるようにそれぞれにidを付けて用意しています。

CSS(ラインの番号で指定)

コンテナでは、displayプロパティの値をgridにし、grid-template-rowsとgrid-templateのプロパティの値で行列のサイズを指定します。

アイテムでは、n×mのグリッドであれば、取る領域をそれぞれn+1とm+1の番号を使って、始点/終点の形式でgrid-rowとgrid-columnプロパティの値で指定します。

#container{
    display:grid;
    grid-template-rows:100px 200px;
    grid-template-columns:100px 1fr;
}
#item_A{
    grid-row:1/3;
    grid-column:1/2;
    background-color:red;
}
#item_B{
    grid-row:1/2;
    grid-column:2/3;
    background-color:green;
}
#item_C{
    grid-row:2/3;
    grid-column:2/3;
    background-color:blue;
}

上記のコードでは、1行目を100ピクセル、2行目を200ピクセル、1列目を100ピクセル、2列目を残り全てにしたうえで、アイテムAを1~2行目と1列目に、アイテムBを1行目と2列目に、アイテムCを2行目と2列目に配置しています。

CSS(エリアに名前を付けて指定)

先程同様、コンテナでは、displayプロパティの値をgridにし、grid-template-rowsとgrid-templateのプロパティの値で行列のサイズを指定します。

さらにコンテナではgrid-template-areasプロパティの値で半角スペース区切りでエリアに名前を付け、アイテムではgrid-areaプロパティの値で取る領域のエリアの名前を指定します。

#container{
    display:grid;
    grid-template-rows:100px 200px;
    grid-template-columns:100px 1fr;
    grid-template-areas:
        "area_A area_B"
        "area_A area_C";
}
#item_A{
    grid-area:area_A;
    background-color:red;
}
#item_B{
    grid-area:area_B;
    background-color:green;
}
#item_C{
    grid-area:area_C;
    background-color:blue;
}

上記のコードでは、1行目を100ピクセル、2行目を200ピクセル、1列目を100ピクセル、2列目を残り全てにしたうえで、アイテムAを1~2行目と1列目のエリアAに、アイテムBを1行目と2列目のエリアBに、アイテムCを2行目と2列目のエリアCに配置しています。