CSSのグリッドレイアウト【現役エンジニアが解説】
今回は、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に配置しています。