≪ Today I learned.
RSS購読
    公開日
    タグ
    Accessibility , HTML
    著者
    ダーシノ

    Canvas要素のアクセシビリティ対応

    Canvas要素の内容はスクリーンリーダーに読み上げられないため、なんらかの対策が必要。

    Canvas要素のアクセシビリティ対応

    1. Canvas要素には代替テキストをつける
    1. フォールバックコンテンツを含める
    2. 背景を塗りつぶし、ハイコントラストモードに対応する
    <canvas role="img" aria-labelledby="title desc">
      <!-- canvas要素内にフォールバックコンテンツを含める -->
      <h2 id="title">◯◯のグラフ</h2>
      <p id="desc">過去3ヶ月間のxx利用料の推移を表したグラフです。</p>
      <dl>
        <dt>7月のxx利用料</dt>
        <dd>12,345円</dd>
        <dt>6月のxx利用料</dt>
        <dd>12,345円</dd>
        <dt>5月のxx利用料</dt>
        <dd>12,345円</dd>
      </dl>
    </canvas>

    デモ

    ※canvasのコンテンツは表示されないが、フォールバックコンテンツを含めているのでアクセシビリティツリーに登録される

    ◯◯のグラフ

    過去3ヶ月間のxx利用料の推移を表したグラフです。

    7月のxx利用料
    12,345円
    6月のxx利用料
    12,345円
    5月のxx利用料
    12,345円

    Canvas要素にフォールバックコンテンツを追加した場合のアクセシビリティツリー

    Canvasの代わりにSVGを使う

    SVG自体がマシンリーダブルなので、特に手を加えなくてもaria属性を使うことでアクセシブルになる。

    <svg class="chart" width="420" height="150" aria-labelledby="title desc" role="img">
      <title id="title">A bar chart showing information</title>
      <desc id="desc">4 apples; 8 bananas; 15 kiwis; 16 oranges; 23 lemons</desc>
      <g class="bar">
        <rect width="40" height="19"></rect>
        <text x="45" y="9.5" dy=".35em">4 apples</text>
      </g>
      ...
    </svg>
    A bar chart showing information4 apples; 8 bananas; 15 kiwis; 16 oranges; 23 lemons4 apples8 bananas15 kiwis16 oranges23 lemons