グリッド・レイアウト(Grid Layout)とは何か
グリッド・レイアウトは、CSSで操作可能なレイアウト・モデルの一種です。グリッドとは、行と列を定義する水平線と垂直線の集合が交差する二次元の空間です。この格子状の仮想範囲を作成し、そこに子要素をはめ込んでいく作業がグリッド・レイアウトの基本的な流れです。
グリッド・レイアウトのモデルでは、通常のフロー・レイアウトやフレックス・ボックスにはない概念が登場します。それらを正確に理解するためには、各プロパティの機能よりも先に言葉の意味を把握しておく方が大事です。
以降の内容を読み進める前に、CSSのボックス・モデルについて理解しておきましょう。ボックス・モデルは、CSSがHTMLの要素をどのように扱うのかを表す基本的な概念です。この仕組みの拡張機能の一種が、グリッド・レイアウトなのです。
グリッド・レイアウトを開始する
グリッド・レイアウトを開始するには、まず初めにグリッド・レイアウトを適用したい要素にdisplayプロパティを追加し、その値にgridまたはinline-gridを指定します。
この状態になった要素のことをグリッド・コンテナと呼びます。あとは必要な数だけ子要素を配置していくわけですが、現段階ではグリッドに関する指定を何も行っていないため、画面に表示される内容には変化が現れません。
HTMLとCSSの基本的な構成は以下の通りです。
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
</div>
.container {
display: grid;
/* コンテナに指定するプロパティ */
}
.item {
/* アイテムに指定するプロパティ */
}
グリッド・コンテナとアイテム
グリッド・コンテナに配置された直接の子要素は、自動的にグリッド・アイテムとして扱われます。アイテムは、コンテナが定義するグリッドに沿って配置されます。そのため、グリッド・レイアウトで最初に着手すべき作業は、コンテナ側でのグリッドの定義となります。
まずは、グリッドの定義を何も行っていない状態での挙動を確認しましょう。以下の例を操作して、プルダウンメニューの値をblockからgridに変えてみてください。
resizeに対応しているブラウザであれば、コンテナの右下にハンドルが表示されます。これを掴んでコンテナの寸法を変えた時に、子要素はどのように振る舞うでしょうか。
