【しーえすえすぐりっど】

CSS Grid とは?

最終更新:
💡 Webレイアウトの「方眼紙」

行と列を使って要素を配置する、CSSの2次元レイアウトの仕組み。列幅や行高、間隔、要素が占める範囲を指定してWebページの配置を組み立てる。

📌 このページのポイント
行と列でページを配置するheadersidebar1frmain3frfooter列幅の指定例:1fr 3fr / 間隔:gap
内容が収まる場合の配置例。headerとfooterは両列を占める。frは残りの空間の比率で、内容の最小幅にも注意する。
ひよこ ひよこ
Flexboxとどう使い分ける?
ペンギン先生 ペンギン先生
Flexboxは主に一つの軸に沿って並べ、Gridは行と列をまとめて定義するのが得意だよ。Flexboxでも折り返せるけれど、折り返した各行を独立に配置する。行をまたいで列をそろえたい場合などはGridが役立つね。必要なら組み合わせて使えるよ。
ひよこ ひよこ
基本の書き方は?
ペンギン先生 ペンギン先生
親要素にdisplay: gridを指定するよ。grid-template-columns: repeat(3, 1fr)なら、残りの空間を同じ比率で使う3列を定義できる。gapで列や行の間隔も指定する。ただし1frには自動の最小幅があり、長い文字列などの内容によっては均等な幅にならないこともあるんだ。
ひよこ ひよこ
auto-fillなら、狭い画面にも必ず収まる?
ペンギン先生 ペンギン先生
repeat(auto-fill, minmax(300px, 1fr))は、最小300pxの列が入る数を自動で決める指定だよ。けれど、配置先の幅が300px未満なら1列でもはみ出す。狭い幅での最小値を見直す、メディアクエリで切り替えるなど、実際の表示幅に合う設計が必要なんだ。
ひよこ ひよこ
名前付きエリアって何?
ペンギン先生 ペンギン先生
grid-template-areasで区画に名前を付け、各要素のgrid-areaで配置先を指定する方法だよ。たとえば「header header」「sidebar main」「footer footer」のように配置を表す。各行の区画数をそろえ、同じ名前の区画は途中が欠けない一つの長方形にする必要があるんだ。
ひよこ ひよこ
見た目の順序を変えれば、読む順序も変わる?
ペンギン先生 ペンギン先生
Gridで見た目の位置を変えても、読み上げや通常のキーボード操作の順序まで同じように変わるわけではないよ。HTMLの順序を内容として自然なものにして、見た目と操作の流れが食い違わないか確かめよう。配置の自由さだけで判断しないことが大切だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CSS Grid」って出てきたら「行と列で要素を格子状に配置するCSSレイアウト」と思えればだいたいOK!
📖 おまけ:英語の意味
「CSS Grid Layout」 = CSSの格子状レイアウト
💬 gridは格子という意味だよ。行と列からなる格子を定義し、要素を一つまたは複数の区画に配置するんだ。

参考資料

← 用語集にもどる