カード
component関連する情報をひとまとまりにして枠で囲うコンテナです。ヘッダー(タイトル+補足)・本文・フッターで構成します。
プロジェクト A
最終更新: 2026-05-25
これは標準的なカードです。ヘッダー・本文・フッターを持ちます。
シンプルカード
ヘッダー / フッターを省略した最小構成。カードの区切りは影でなく外枠のボーダーで示します。
バリエーション
アイコン・画像・メタデータ・アクションは任意のパーツで、必要なものだけ組み合わせます。
アイコン + メタデータ + アクション
-
プロジェクト A
事業承継の準備を進めるプロジェクト
譲渡条件の整理と、候補者との面談日程を調整しています。
-
本人確認
アカウントの安全性を高める
書類を提出すると、案件への問い合わせができるようになります。
アクションのみ
月次レポート
2026 年 8 月分
問い合わせ 24 件、面談 6 件、成約 1 件でした。
画像付き
-
カフェ事業の承継
東京都 / 飲食
地域で 20 年続くカフェの後継者を募集しています。
クリッカブル
.card-clickable + .card-link — カードのどこを押しても詳細ページへ移動する。見出しの中の <a class="card-link"> の当たり判定をカード全面に広げる方式で、読み上げ・Tab の対象はこのリンク 1 つ。中に置いたメニューやボタンは前面に出て、それぞれ単独で押せる。
-
カフェ事業の承継
東京都 / 飲食
地域で 20 年続くカフェの後継者を募集しています。
-
カードを押すと詳細へ、右上のメニューはカードとは別に押せます。
<li class="card card-clickable"> <div class="card-header"> <h3 class="card-title"><a class="card-link" href="/projects/a">プロジェクト A</a></h3> <div class="card-action">…メニューの icon-btn(前面に出て単独で押せる)…</div> </div> <div class="card-body">…</div> </li> <!-- 1 つの操作(モーダルを開く等)なら button --> <h3 class="card-title"><button type="button" class="card-link">プロジェクト A</button></h3>
compact
.card-compact — 同種のカードを密に並べる一覧向け。左右 16・見出し上下 12・本文 16。見出し+短い説明だけで組み、アイコンは付けない。
-
プロフィール
名前・自己紹介を編集
-
通知
メール・プッシュ通知の設定
-
セキュリティ
パスワード・2 段階認証
body flush
.card-body-flush — 本文の padding を 0 にし、見出し付きのリストをカード幅いっぱいに敷く(行側で左右 24 を取る)。
最近の問い合わせ
直近 7 日間
- カフェ事業の承継3 件
- 製造業の事業譲渡1 件
- 美容室の後継者募集5 件
機能
このコンポーネントの用途
関連情報をグループ化して見せる枠。最前面に重ねて操作を止めるなら modal。
同種のカードを並べた一覧(案件・プロジェクト等)にも使う。
card-clickable は、カードのどこを押しても詳細ページへ移動する(または 1 つの操作をする)カード。
中に置いた別のボタン・リンク(card-action のメニュー等)はそれぞれ単独で押せる。
カードを選ぶ(選択状態を持つ)なら card-clickable ではなく checkbox / radio。
使用法
推奨される使い方と、やりがちな NG パターン
OK
- ✓見出しは card-header > card-title、本文は card-body、操作は card-footer。
- ✓内容の種類を一目で示したいときは card-icon、写真・サムネイルが主役なら card-image。アイコンと画像は併用しない。
- ✓件数・日付・担当者などの補足は本文末尾の card-metadata にまとめる(アイコン + テキスト)。
- ✓カード単位の操作は card-header 内の card-action に 1 つだけ置く(icon-btn-sm の neutral ghost)。複数の操作は action-menu(.action-menu-end)にまとめて開く。
- ✓同種のカードを密に並べる一覧は card-compact(見出し+短い説明だけで組む)。
- ✓見出し付きのリスト・テーブルをカード幅いっぱいに敷くときは card-body-flush(行側で左右 24 を取る)。
- ✓カードを並べるときは ul(aria-label 付き)> li で包む。
- ✓一覧の各カードが詳細ページへの入口なら card-clickable にし、card-title の中の <a class="card-link"> に 見出しの文字を入れる(リンク先は 1 つ)。1 つの操作(モーダルを開く等)なら <button type="button" class="card-link">。
- ✓card-clickable の中にも card-action や card-footer のボタンを置ける(前面に出て単独で押せる)。
NG
- ✕カード全体を <a> で包まない → 中にボタン・リンクを置けず(入れ子になる)、カードの全文がリンク名として 読まれる。card-clickable + card-link を使う。
- ✕div に onclick を付けてカードを押せるようにしない → キーボードで操作できず、リンクとして読まれない。
- ✕card-clickable に card-link を 2 つ以上置かない → 当たり判定が重なり、押した先が分からない。 リンク先が複数あるなら card-clickable にせず、それぞれを link / btn として置く。
- ✕カードの選択(複数から選ぶ・ON/OFF)に使わない → checkbox / radio(選択状態を持つ)。
- ✕本文の文字をコピーさせたいカードを card-clickable にしない → 全面の当たり判定で文字を選択できなくなる。
- ✕elevation(浮き上がり)表現でシャドウ(card-elevated)を使わない → 標準の border 付き .card で区切る。シャドウは modal / tooltip 等の重なりレイヤー専用。
- ✕余白を直書きしない → card-header/body/footer の規定パディングを使う。密にしたいなら card-compact、余白なしは card-body-flush。
- ✕カード全体への操作(変更・削除・停止など)を card-body 内のボタン行に置かない → card-footer に置き、既定の右寄せにそろえる。 左寄せの本文内とカードごとに位置が揺れる。入力欄の横のコピー等、特定の要素に付く操作はその要素のそばに置いてよい。
- ✕body / footer の間に区切り線(border-t / divide-y)や背景色を足さない → 区切り線は header の下だけ。本文と操作は余白で区切る既定を保つ。
- ✕角丸・境界を独自指定しない → .card の既定(rounded-md / stroke-middle)を保つ。
- ✕テーブルだけを card で包まない → 枠と padding が二重になる。card-header に書く見出しが無いならテーブルを直接置く。
- ✕card-compact に card-icon を付けない → 密な一覧でアイコンが並ぶと情報より装飾が勝つ。種類を示したいなら標準レイアウトにする。
- ✕card-action に操作を 2 つ以上並べない → 複数の操作は action-menu にまとめて 1 つのボタンから開くか、card-footer に置く。
- ✕card-image の alt を省略しない → 内容を表す画像は説明を、装飾なら alt="" を明示する。
見出し・補足がある時だけ card で囲む
過剰な入れ子を避ける今月の申請
2026 年 8 月
タイトル・補足など card-header に書く内容がある時に囲む。まとまりが意味を持つ。
| 申請 A | 承認待ち |
| 申請 B | 承認済み |
見出しの無いテーブル 1 枚を card で囲まない。枠が増えるだけで意味を足さない。
カード全体をリンクにするなら card-clickable
要素の役割リンクは見出しの「プロジェクト A」1 つで、当たり判定だけをカード全面に広げる。メニューのボタンも単独で押せる。
<li class="card card-clickable"> <h3 class="card-title"><a class="card-link" href="…">プロジェクト A</a></h3>… </li>
プロジェクト A
カードを <a> で包むと、見出しも本文も全部がリンク名として読まれ、中にボタンを置くと入れ子になる。div の onclick はキーボードで押せない。
<!-- カードを a で包まない・div に onclick を付けない --> <a href="…" class="card">…<button>メニュー</button>…</a> <div class="card" onclick="location.href='…'">…</div>
カードのアクセシビリティ
カードは見た目の枠を提供するコンテナです。見出しは適切な見出し要素(h2〜h4)で階層を保ち、カード全体をリンクにする場合は card-clickable + 見出しの中の card-link を使い、リンクを入れ子にしません。WCAG 2.2 全基準は アクセシビリティ ページを参照。
期待される配慮
Presentation / Adaptability / Interaction / Assistive Technology
カードの区切りは影でなく外枠のボーダー。カード内は見出しの下だけ線を引き、本文と操作は余白で区切る。card-title の見た目(サイズ)と、実際の見出しレベルを一致させる。
rem / トークンで拡大に追従し、狭幅では縦積みに reflow。高さ固定で内容を切らない。
カード自体は非対話。中のボタン/リンクが操作対象。カード全体を押せるようにするなら card-clickable にし、見出しの中の card-link 1 つを Tab の対象にする(カードを a で包まない・入れ子リンクを作らない)。
card-title を h2〜h4 にすると、SR の見出しジャンプでカードを辿れる。装飾の枠は読み上げに影響しない。
DS が担保する機能
追加実装なしで満たされる
- ✓カードの区切りは外枠のボーダー、パート間は余白で示し、枠自体は読み上げに影響しないニュートラルな見た目
- ✓
card-title/card-subtitle/card-body/card-footerの役割別スロット - ✓reflow・テキスト拡大に耐えるトークンベースの余白
- ✓
card-clickableはcard-linkの当たり判定をカード全面に広げ、中の他のボタン・リンクを前面に出して単独で押せるようにする - ✓
card-linkにフォーカスするとカード全体にフォーカスリング(info 青)。強制カラーモードでは outline で示す
実装時の必須対応
プロダクト側で担保する
- !
card-titleは文脈に合う見出し要素(h2〜h4)にし、レベルを飛ばさない - !カード全体をクリック可能にするなら
card-clickable+ 見出しの中の<a class="card-link">(1 つの操作なら<button type="button">)。カードを<a>で包まない・div に onclick を付けない。見出しの文字だけで行き先が分かるようにする - !見出し・補足が無いなら card で囲まず、素の要素で十分(過剰な入れ子を避ける)
- !
card-actionの icon-btn はaria-labelにカード名を含めて一意化する(例: 『プロジェクト A』のメニュー)。操作は 1 つだけ - !
card-imageはalt必須(内容を表すなら説明、装飾ならalt="")。card-icon/card-metadataのアイコンはaria-hidden="true" - !カード一覧は
<ul aria-label="…">>liで包み、件数とまとまりを伝える
テスト方法
スクリーンリーダー / 自動チェック
- SR見出しジャンプ(H キー)で各カードのタイトルを辿れる(
card-titleが見出し要素) - 操作カード内の操作要素が Tab で辿れ、入れ子リンクが無い。card-clickable は見出しのリンクに 1 回だけ止まり、名前が見出しの文字で読まれる
- 自動axe / Lighthouse で見出し階層・コントラストを確認
card-title は見出し要素にする
達成基準:WCAG 1.3.1 情報及び関係性 / 2.4.6 見出し及びラベル
プロジェクト A
card-title を <h3> にする。SR の見出し一覧に載る。
<h3 class="card-title">プロジェクト A</h3>
card-title を <span>/<div> にしない。見た目は同じでも見出しとして辿れない。
<span class="card-title">プロジェクト A</span> <!-- 見出しでない -->