本文へ移動
easeweb
ご相談
トピックを検索

名前がない、または読まれてしまうSVGアイコン

注文一覧は各注文の状況を名前のないインラインSVGだけで示し、見出しの飾りのアイコンは title 要素のファイル名が読み上げられます。

WCAG 2.2
SC 1.1.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
状況が読まれない。
アクセシビリティの問題を示した図。
01

問題

スクリーンリーダー利用者が、注文が届いたかどうかを知ることができず、代わりにアイコンのファイル名を聞かされます。

02

試してみる

見えている内容と、スクリーンリーダーの読み上げを比べてください。

下の欄に、スクリーンリーダーの読み上げが上から順に出ます。どの注文が届き、どの支払いが失敗したか分かりますか?

問題あり 直してみませんか?

icon-package ご注文履歴

  • 注文1042 10月3日
  • 注文1043 10月6日
  • 注文1044 10月8日

スクリーンリーダーの読み上げ:

  1. icon-package ご注文履歴、見出し
  2. リスト、3項目
  3. 注文1042、10月3日、画像
  4. 注文1043、10月6日、画像
  5. 注文1044、10月8日、画像

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

意味のあるSVGにはすべて名前を付け、意味のないSVGはすべて aria-hidden="true" で隠します。

  1. 1インラインSVGは、名前を付けるか隠すかのどちらかにし、どちらでもない状態にしない。
  2. 2形ではなく、ここでのアイコンの意味を、aria-label か、隠したアイコンの隣の見えるテキストで伝える。
  3. 3飾りのアイコンは aria-hidden="true" で隠し、付いてきた title を取り除く。

これだけでは不十分です。 スクリーンリーダー利用者には1.1.1を満たしますが、画面上の状況はアイコンのままです。トラックや感嘆符の意味が分からない見える人は、推測するしかありません。

修正前 名前のない状況アイコンと、title の付いた飾りのアイコン
<h2>  <svg viewBox="0 0 24 24"><title>icon-package</title>…</svg>  ご注文履歴</h2><ul class="orders">  <li>    注文1042 <span class="date">10月3日</span>    <svg role="img" viewBox="0 0 24 24" class="ok">…</svg>  </li>  <li>    注文1043 <span class="date">10月6日</span>    <svg role="img" viewBox="0 0 24 24" class="info">…</svg>  </li>  <li>    注文1044 <span class="date">10月8日</span>    <svg role="img" viewBox="0 0 24 24" class="error">…</svg>  </li></ul>
修正後

状況のアイコンに名前を付ける

<h2>  <svg viewBox="0 0 24 24" aria-hidden="true">…</svg>  ご注文履歴</h2><ul class="orders">  <li>    注文1042 <span class="date">10月3日</span>    <svg role="img" aria-label="配達済み" viewBox="0 0 24 24" class="ok">…</svg>  </li>  <li>    注文1043 <span class="date">10月6日</span>    <svg role="img" aria-label="配送中" viewBox="0 0 24 24" class="info">…</svg>  </li>  <li>    注文1044 <span class="date">10月8日</span>    <svg role="img" aria-label="支払い失敗" viewBox="0 0 24 24" class="error">…</svg>  </li></ul>

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

マウスを使わない4つの確認

確認方法: スクリーンリーダー、強制配色

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。アイコンセットや共通のアイコンコンポーネントを変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。パス、クラス名、SVGの中の … は仮のものです。名前の付いたSVGの読み上げ方はスクリーンリーダーによって少しずつ違い、名前のないSVGを読むものもあるため、利用者が使う支援技術で確認してください。アイコンが飾りかどうかは周りのテキストがすでに何を伝えているかで決まり、ページを知る人にしか判断できません。実際に使用する支援技術で、操作全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方