Flexboxによる柔軟なカードグリッド

Flexboxの折り返しを使用してレスポンシブなカードグリッドを作成。カードはコンテナ幅に適応し、等高の行で一貫したサイズを維持します。

Common Components

詳細な説明

Flexboxによるレスポンシブカードグリッド

カードグリッドはモダンWebデザインの至る所で使われています。Flexboxとflex-wrapで、任意のコンテナ幅に適応するレスポンシブカードグリッドを作成します。

CSSコード

.card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}

.card {
  flex: 1 1 300px;
  max-width: 400px;
  display: flex;
  flex-direction: column;
}

.card-body {
  flex: 1;
}

.card-footer {
  flex: 0 0 auto;
}

仕組み

  • グリッドコンテナ: flex-wrap: wrapでカードが新しい行に流れることを許可。gap: 24pxで一貫した間隔。
  • カード: flex: 1 1 300pxで各カードは最小300pxから開始し、スペースを埋めるように拡大。max-width: 400pxでカードの過度な拡大を防止。
  • カード内部: 各カードはカラムフレックスコンテナで、コンテンツ高さに関係なくフッターが下部に配置。

等高カード

Flexboxは同じ行のすべてのアイテムに自動的に等しい高さを与えます(デフォルトのalign-items: stretch設定時)。異なる量のコンテンツを持っていても、行内のすべてのカードは同じ高さになります。

最後の行の処理

最後の行はアイテム数が少ないことが多く、flex-grow: 1では完全な行のアイテムより幅広くなります。解決策としてflex: 0 1 300px(拡大しない)またはmax-widthの使用を検討してください。

ユースケース

商品一覧ページ、ポートフォリオギャラリー、ブログ記事アーカイブ、チームメンバー表示、または同様の構造を持つコンテンツカードのコレクションに使用します。Flexboxアプローチは等高の行を持つレスポンシブな動作を提供します。

試してみる — Flexbox Playground

フルツールを開く