タグ
component利用者が追加・選択した値(担当者・キーワード・絞り込みの条件など)を 1 つずつ見せる小さな pill です。削除ボタン(×)でその値だけを外せます。タグインプット(追加した値の一覧)と テーブル の見出し行(適用中の条件)で使っています。ものの状態を見せる バッジ や、押して ON / OFF する フィルターチップ とは役割が違います。
基本
複数のタグは ul.tag-list > li.tag で並べ、ul に aria-label。× を押すとそのタグが外れ、フォーカスは次のタグ(無ければ前)の × へ移り、結果が読み上げられる
<ul class="tag-list" aria-label="追加した担当者"> <li class="tag"> <span class="tag-label">山田</span> <button type="button" class="tag-remove" aria-label="『山田』を削除"> <svg class="icon" aria-hidden="true"><use href="./icons.svg#lucide-x"></use></svg> </button> </li> … </ul> <p class="sr-only" aria-live="polite"></p> <!-- 「『山田』を削除しました」を告知 -->
状態
削除ボタンの hover / focus は is-hover-preview / is-focus-preview の見本。値を外せない場所(確認画面など)では削除ボタンを置かない。長い値は 1 行で省略する(全文は削除ボタンの名前に含める)
削除ボタンの enable / hover / focus
削除ボタンなし(確認画面など)
長い値
機能
このコンポーネントの用途
利用者が追加・選択した値を 1 つずつ見せ、× で外せるようにする。
ものの状態・分類を見せる表示だけのラベルは badge(押せない・外せない)。押して ON/OFF する絞り込みは filter-chip。
値を入力して集める入力欄は tag-input(中でタグを使う)、表の適用中の条件は data-table-conditions(中でタグを使う)。
使用法
推奨される使い方と、やりがちな NG パターン
OK
- ✓利用者が追加・選択した値を、1 つずつ外せる形で見せる(追加した担当者、適用中の絞り込みの条件)。
- ✓複数のタグは ul.tag-list > li.tag で並べ、ul に aria-label で何の一覧かを付ける。
- ✓削除ボタンの aria-label に値を含める(『山田』を削除 / 『振込月: 2026 年 9 月』の絞り込みを解除)。
- ✓削除したら、次のタグの削除ボタン(無ければ前、1 つも無ければ元の入力欄など)へフォーカスを移し、結果を aria-live で告知する。
NG
- ✕ものの状態・分類(公開中・審査中 等)の表示に使わない → badge(外せる見た目にすると誤解される)。
- ✕押して ON/OFF する絞り込みに使わない → filter-chip(タグは押しても選択状態を持たない。押せるのは × だけ)。
- ✕タグ自体をリンクやボタンにしない → 押せるのは削除ボタンだけ。行き先があるなら link。
- ✕値ごとに色を変えない → 色の意味が生まれ、badge と紛らわしい。
- ✕削除ボタンを aria-label なしの × だけにしない → 何を外すか分からない。
タグ・バッジ・フィルターチップの使い分け
用途の使い分け| タグ | 利用者が追加・選択した値。× で外せる。押せるのは × だけ |
|---|---|
| バッジ | 公開中 ものの状態・分類の表示。押せない・外せない |
| フィルターチップ | 押して ON / OFF する絞り込み。選択状態(aria-pressed)を持つ |
ものの状態の表示にはバッジ
誤解を防ぐ状態をタグにすると、× で「公開中」を外せるように見えてしまう。
タグのアクセシビリティ
タグ自体は押せない表示で、押せるのは削除ボタン(×)だけです。削除ボタンはそれぞれ Tab で止まる普通のボタンで、名前に値を含めます。WCAG 2.2 全基準は アクセシビリティ ページを参照。
期待される配慮
Presentation / Adaptability / Interaction / Assistive Technology
タグの文字(fg/high on neutral/100)と削除アイコン(fg/middle)は AA 以上。長い値は省略し、全文は削除ボタンの名前で伝える。
タグは折り返して並べ、狭い画面でも横にはみ出さない。
削除ボタンは Tab で止まり、Enter / Space で外す。外したらフォーカスが次のタグ(無ければ前、元の入力欄など)へ移る。
「追加した担当者、リスト、3 項目」「『山田』を削除、ボタン」と読まれ、外すと「『山田』を削除しました」と告知される。
DS が担保する機能
追加実装なしで満たされる
- ✓削除ボタンの押せる範囲は 24×24(WCAG 2.5.8 の最低限)。フォーカスリング(info/600)が全周に出る
- ✓強制カラーモードではタグの背景が消えるため、輪郭線で形を示す
実装時の必須対応
プロダクト側で担保する
- !複数のタグは
ul.tag-list>li.tagにし、ul にaria-labelを付ける - !削除ボタンの
aria-labelに値を含める(『山田』を削除)。アイコンはaria-hidden="true" - !外したら次(無ければ前、元の入力欄など)へフォーカスを移し、
aria-live="polite"で結果を告知する