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

チェックマークが読み上げられず空欄と同じになってしまう比較表

料金プランの比較表で機能の有無を aria-hidden の付いたチェックと×印だけで示しているため、「あり」のセルも空のセルと同じになってしまう

WCAG 2.2
SC 1.1.1A
必須とする規格
JIS X 8341-3
問題あり <svg aria-hidden="true">
アクセシビリティの問題を示した図: 全盲:このプランで使えるの?
01

問題

チェックのセルも×印のセルも空のセルも読み上げに違いがなく、スクリーンリーダーの利用者には、どのプランにその機能があるのか分からない

02

試してみる

Tabキーでセルを順に移動し、見えている内容と読み上げを比べてみましょう

  • 問題1: Tabキーを押すたびに、スクリーンリーダーで次のセルへ移ったときの内容を表示します。チェックにも×印にも、読み上げる内容がありません。

  • 問題2: ×印をなくし、そのセルは空にしています。チェックのセルも空のセルも、同じように読み上げる内容がありません。

  • 修正を適用します。 「シングルサインオン」の行をたどると、「チェックにだけ名前を付ける」では読み上げる内容のないセルが残ります。

問題あり 修正できますか?

機能StarterTeamBusiness
プロジェクト数無制限
共有フォルダー
シングルサインオン

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

(Tabでセルへ移動)

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

03

修正方法

印のセルにも空のセルにも言葉を入れる

修正前

アイコンライブラリーに隠されたチェックと×印

<table class="plans">  <thead>    <tr>      <th scope="col">機能</th>      <th scope="col">Starter</th>      <th scope="col">Team</th>      <th scope="col">Business</th>    </tr>  </thead>  <tbody>    <tr>      <th scope="row">共有フォルダー</th>      <td>        <svg class="no" aria-hidden="true" viewBox="0 0 24 24">…</svg>      </td>      <td>        <svg class="yes" aria-hidden="true" viewBox="0 0 24 24">…</svg>      </td>      <td>        <svg class="yes" aria-hidden="true" viewBox="0 0 24 24">…</svg>      </td>    </tr>    …  </tbody></table>
問題点2点

見出しは正しく、各セルにプランと機能が対応しています。問題は各セルの中身です。

  • チェックは支援技術から隠され、セルにはほかに何もないため、「あり」が伝わりません。
  • ×印も隠されているため「なし」も伝わらず、2つのセルが同じになります。
修正後

各セルに隠したテキストを入れる

<table class="plans">  <thead>    <tr>      <th scope="col">機能</th>      <th scope="col">Starter</th>      <th scope="col">Team</th>      <th scope="col">Business</th>    </tr>  </thead>  <tbody>    <tr>      <th scope="row">共有フォルダー</th>      <td>        <svg class="no" aria-hidden="true" viewBox="0 0 24 24">…</svg>        <span class="visually-hidden">なし</span>      </td>      <td>        <svg class="yes" aria-hidden="true" viewBox="0 0 24 24">…</svg>        <span class="visually-hidden">あり</span>      </td>      <td>        <svg class="yes" aria-hidden="true" viewBox="0 0 24 24">…</svg>        <span class="visually-hidden">あり</span>      </td>    </tr>    …  </tbody></table>
修正の手順3ステップ
  1. アイコンはライブラリーの出力どおり、隠したままにします。値は言葉で伝わるので、アイコンは読まれなくてかまいません。
  2. 各セルに、値を言葉で書いた「あり」か「なし」の span を足し、CSSで見えなくします。この言葉がセルのテキストになり、スクリーンリーダーで表を読むときにも、ブラウザーでページを翻訳するときにも使われます。
  3. 空のセルがある表では、空のセルにも同じように「なし」を入れます。画面上は空のままで、「なし」と伝わるようになります。

どちらの修正前も直り、1.1.1を満たします。表の見た目は変わりません。画面上の値は印か空欄のままなので、チェックを「あり」と受け取らない人は、推測するしかありません。

この方法を選ぶ理由:まずHTMLの要素を使う

混同しやすいもの
04

デザインの案

比較表は、軽い見た目のまま「あり」と「なし」を伝えられる

どのプランにどの機能があるかを6通りに描きました。4つは見た目にかかわらずスクリーンリーダーが読める言葉で伝え、2つは目で見ることに頼っています。

デザインファイルで

  • セルの種類ごとの言葉を、印だけを描く場合でもデザインファイルに書く(「あり」「なし」など)。
  • 「なし」のセルは空欄にせず、読めるものを入れる。
  • 値を伝える印のコントラスト比を横に書く(3:1以上)。言葉は4.5:1以上にする。
  • スマートフォンの幅でも表を描き、列が狭くなったときに言葉をどこに置くかを示す。

合格

  • 機能StarterTeamBusiness
    シングルサインオンなしなしあり
    言葉を入れた淡いピル 「あり」は淡い緑のピルに入れ(7.74:1)、「なし」は灰色の文字にします(白に対して7.56:1)。色でも一覧できるうえ、色や印が見えなくても言葉で伝わります。印より幅をとるので、言葉は短くします。
  • 機能StarterTeamBusiness
    メンバー5人50人無制限
    シングルサインオンなしなしあり
    セルに値そのものを書く 「5人」「50人」「無制限」は、チェックを3つ並べるより多くを伝え、もともとテキストなので名前を付ける必要もありません。上限のある機能に向いています。「なし」も空欄にせず、言葉で書きます。
  • 機能StarterTeamBusiness
    シングルサインオン なし なし あり
    塗りつぶしのバッジと、枠だけのダッシュ 印の軽い見た目を残します。チェックは緑の円に白で(#1e7b34と白で5.33:1)、ダッシュは細い枠線の中に描きます。色だけでなく形と太さでも違いが分かり、各セルには、画面には出さずにスクリーンリーダーが読む言葉も入れます。
  • Team

    あり

    • 共有フォルダー

    なし

    • シングルサインオン
    プランごとの2つのリスト 表にせず、プランごとに「あり」と「なし」の見出しの下に機能を並べます。言葉は見出しで一度示すだけで、各行に印は要りません。スマートフォンに向いていますが、プランを横に並べて比べにくくなります。

不合格

  • 機能StarterTeamBusiness
    シングルサインオン
    緑と赤のドットWCAG 1.1.1 整って見え、見える人にはすぐ読み取れます。しかしドットには言葉がないのでセルに読むものがなく、2色のコントラスト比も1.24:1しかないため、色の違いだけで区別することになります。
  • Team

    • 共有フォルダー
    • シングルサインオン
    含まれない機能を薄くするWCAG 1.4.3 料金カードでよく見る形で、プランにない機能を薄い灰色にします(白に対して1.87:1)。読みやすいとはいえない薄さです。さらに薄さだけが手がかりなので、スクリーンリーダーは含まれる機能と同じように読みます。
05

修正の確認

4項目、マウス不要

確認方法: スクリーンリーダー、拡大表示

4件中0件を確認済み

OS、ブラウザー、支援技術のバージョン、ビルド、日付、各手順の実際の結果を記録してください。アイコンライブラリーやそのバージョン、共有しているセルのコンポーネントが変わるたびに繰り返します。

制限

このサンプルは、どの表でも同じ結果になることを保証するものではありません。空のセルで何と言うか、セルの中の画像をどう読むかはスクリーンリーダーによって違うので、利用者が使う支援技術で確認してください。セルの言葉が役に立つのは、セルに見出しもあるときだけです。「あり」と読まれても、プランと機能が分からなければ意味がありません。div で描いた比較表や、見出しを太字にしただけの比較表はそこで問題になります。見出しが太字だけのデータ表を参照してください。表の外のアイコンに名前を付けることと飾りのアイコンを隠すことは名前がない、または読まれてしまうSVGアイコン、ボタンの中のアイコンは名前がないアイコンだけのボタンで扱っています。

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

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る