操作可能 / 2.5 入力モダリティ

2.5.8ターゲットのサイズ(最小)

レベル AA2.2 新規

Target Size (Minimum)

クリック・タップできる対象は原則 24×24 CSSピクセル以上にするか、十分な間隔を空ける。小さすぎる操作対象を避ける。

WCAG 2.2 で新しく追加された達成基準です

この基準は WCAG 2.1 にはなく、2.2 で新設されました。 まだ日本語の解説が少ない領域なので、下記のリンク先とあわせて理解を深めてください。

ターゲットサイズがなぜ大事なの?

スマートフォンやタブレットでは指でボタンを押すため、ボタンが小さいと隣を誤って押してしまいます。 手が震える人、運動機能に障害がある人、大きな指の人にとっては特に深刻です。 マウス操作でも、16px 程度の極小アイコンボタン(削除・編集など)を正確にクリックするのは難しくなります。

WCAG 2.2 で新設されたこの基準は、ポインタで操作できる対象を原則 24×24 CSS ピクセル以上にすることを求めます。 24px に届かない場合でも、隣の対象と十分な間隔(各対象を中心とする直径 24px の円が重ならない)があれば達成できます。

補足

24px はあくまで最小要件(レベル AA)です。 iOS HIG・Material Design はともに 44×44px 以上を推奨しており、 ユーザー体験の観点でもこの値を目安にするのが望ましいです。 タッチ端末の指の接触面は平均直径 11〜25mm とされており、24px ではまだ小さいケースがあります。

不合格の例(小さく密集)

下のボタン群を実際に押してみてください。 16px の極小ボタンが 2px の隙間で並んでいます。 共有・編集・削除を正確に押し分けるのは困難です。

極小・密集アイコンボタン(不合格)

各ボタン: 16×16px / 間隔: 2px

ボタンが小さく密集していて、隣を押し間違えます(各 16×16px、間隔 2px)。

合格の例(24px以上・十分な間隔)

同じ機能のボタンを 44×44px(最小要件 24px の倍近い推奨サイズ)にし、間隔も 8px 空けています。 押しやすさの違いを体感してください。

タップしやすいアイコンボタン(合格)

各ボタン: 44×44px(最小要件: 24px)/ 間隔: 8px

各ボタンが 44×44px・間隔 8px。正確に押し分けられます。

ポイント

アイコンのみのボタンには必ず aria-label を付けてください。 スクリーンリーダーはアイコンの視覚的形状を読み上げられないため、aria-label="共有" のように目的を文字で伝える必要があります(WCAG 1.1.1 代替テキスト)。

直し方(コード)

良い例 / 推奨

min-width / min-height で最低 24px(推奨 44px)を確保し、 ボタン間に gap を設けます。

/* ✅ 推奨:タップしやすい 44×44px(最小要件は 24×24px) */
.icon-btn-group {
  display: flex;
  gap: 8px;          /* 隣接するオフセットエリアが重ならない間隔を確保 */
  flex-wrap: wrap;
  align-items: center;
}

.icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;   /* 最小要件は 24px。推奨は 44px(iOS HIG / Material Design 準拠) */
  min-height: 44px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg-subtle);
  color: var(--text);
  cursor: pointer;
}

/* フォーカスリングを消さない */
.icon-btn:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

悪い例 / 避ける

やりがちな違反パターン:

  • サイズが 24px 未満 —— アイコンフォントや SVG だけを padding: 0 のまま並べるとすぐ違反する。min-width / min-height を明示的に指定する。
  • 間隔ゼロで密集 ——gap: 0margin: 0 では隣のボタンのオフセットエリアが重なり、 間隔による例外も使えない。
  • 視覚的には広く見えるがクリック領域は小さい ——font-size や背景を広げても、paddingmin-height を指定しないと クリック領域は広がらない。DevTools でヒットエリアを実測すること。
/* ❌ 違反例:16px は最小要件 24px を下回る */
.icon-btn-group-bad {
  display: flex;
  gap: 2px;          /* ほぼ隙間なし → 間隔による例外も満たさない */
}

.icon-btn-tiny {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;       /* 24px 未満 → WCAG 2.5.8 違反 */
  height: 16px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 3px;
  background: var(--bg-subtle);
  color: var(--text);
  cursor: pointer;
}

例外と間隔の考え方

以下の場合は 2.5.8 の対象外です:

  • インライン本文中のリンク —— 「こちらをご覧ください」のように段落の文章中に溶け込むリンクは免除。 行の高さが自然なターゲット領域になるため。
  • ブラウザ / OS のデフォルト UI そのまま ——<select><input type="file"> など、著者側でスタイルを変更していないネイティブ UI。
  • 必要不可欠な場合 —— サイズが情報として本質的な意味を持つもの(例: 地図上のランドマークを示す 1px のピン位置)。
  • 同じページ上に代替操作がある場合 —— 小さいボタンと同等の機能を持つ、より大きい別の操作手段が同一ページ内に存在する場合。

補足

間隔による達成の計算例:対象を中心とする直径 24px のオフセット円が隣の対象のオフセット円と重ならなければ OK です。 例えば 16×16px のボタンが 2 つ隣り合う場合、中心間距離が 24px 以上必要です。 ボタン幅 16px ÷ 2(片側 8px)× 2 + gap ≥ 24px → gap ≥ 8px で条件を満たします。

チェックリスト

  • ポインタ操作できる全要素(ボタン・リンク・カスタム UI)が 24×24px 以上、または間隔の条件を満たしている
  • アイコンボタンなど小さくなりやすい要素に min-width / min-height: 24px(推奨 44px)を指定している
  • ボタン群の gap または margin が、隣接するオフセットエリアが重ならない値になっている
  • インラインリンク・OS ネイティブ UI・必要不可欠なケース以外には例外を適用していない
  • アイコンのみのボタンに aria-label(または同等の代替テキスト)が付いている
  • フォーカスリングを消していない(outline: none 禁止)
  • アイコン色と背景色のコントラスト比が 3:1 以上(WCAG 1.4.11 非テキストのコントラスト)
  • DevTools のヒットテストや実機でクリック / タップ領域を実測して確認した

原典・規範文書