Grid

レスポンシブ対応のグリッドレイアウト。ブレイクポイントごとのカラム数を prop で制御。

プレビュー

1
2
3
4
5
6

使いどころ

使う場面

  • カード、指標、画像など、同じ種類の要素を等幅の列で並べる
  • columns(デスクトップ)、columnsMd(1024px 以下)、columnsSm(640px 以下)で画面幅ごとの列数を決める。スマホは 1 列にするのが基本
  • 余白は gap に "sm" "md" "lg" のような意味の名前か、space トークンの数値を渡す

使わない場面

  • マーケティングの特長紹介や料金の並び。FeatureGrid や PricingGrid が専用の見た目を持っている
  • 行と列の見出しがあるデータ。Table を使う
  • 要素が 1 列に縦積みされるだけの場面。Grid でなくスタック用のユーティリティで足りる

使い方

<Grid columns={3} columnsMd={2} columnsSm={1}>
  <Card>...</Card>
  <Card>...</Card>
  <Card>...</Card>
</Grid>

<Grid columns={4} columnsSm={2} gap="var(--space-4)">
  {items.map(item => <Card key={item.id}>...</Card>)}
</Grid>

プロパティ

名前型デフォルト説明
columns1 | 2 | 3 | 4 | 5 | 63デスクトップ時のカラム数
columnsMd1 | 2 | 3 | 4 | 5 | 6なし≤1024px 時のカラム数(省略時は columns を継承)
columnsSm1 | 2 | 3 | 4 | 5 | 6なし≤640px 時のカラム数(省略時は columnsMd を継承)
gap"xs" | "sm" | "md" | "lg" | "xl" | SpaceToken | number | (string & {})var(--space-6)アイテム間のギャップ(space トークン/数値/CSS値)
gapMd"xs" | "sm" | "md" | "lg" | "xl" | SpaceToken | number | (string & {})なし1024px 以下での間隔。未指定なら gap
gapSm"xs" | "sm" | "md" | "lg" | "xl" | SpaceToken | number | (string & {})なし640px 以下での間隔。未指定なら gapMd、それもなければ gap

型と必須かどうかはソースの型定義から自動で生成しています。表にない HTML 標準の属性(className や aria-* など)も、ルート要素にそのまま渡せます。

アクセシビリティ

  • 出力は <div> で、役割は付かない。並び順がそのまま読み上げ順になるので、見た目で並び替えず DOM の順を意味どおりにする
  • 項目の集まりであることを伝えたいときは、子に List を使うか、利用側で role を足す

関連するコンポーネント