aria-hidden要素にはフォーカス可能な要素が含まれていません

ルールID: aria-hidden-focus
ルールセット: axe-core 4.10
ユーザーへの影響: 深刻
ガイドライン: WCAG 2.1 (A), WCAG 2.0 (A), WCAG 2.2 (A), Trusted Tester, EN 301 549
 

Need accessibility training?

Deque University offers an extensive curriculum of self-guided online courses for every skillset and experience level.

Compliance Data & Impact

User Impact

深刻
Minor
Critical

Disabilities Affected

  • 視覚障害
  • ロービジョン
  • 視聴覚障害
  • 運動障害

Standard(s)

  • WCAG 2.1 (A)
  • WCAG 2.0 (A)
  • WCAG 2.2 (A)
  • Trusted Tester
  • EN 301 549

WCAG 達成基準 [WCAG 2.1 (A)]

  • 4.1.2: 必須: Name, Role, Value

WCAG 達成基準 [WCAG 2.0 (A)]

  • 4.1.2: 必須: Name, Role, Value

WCAG 達成基準 [WCAG 2.2 (A)]

  • 4.1.2: 必須: Name, Role, Value

Trusted Tester Guidelines

  • 6.A: 必須: The purpose of each link or button can be determined from any combination of the link/button text, accessible name, accessible description, and/or programmatically determined link/button context.

EN 301 549 Guidelines

  • 9.4.1.2: 必須: Name, Role, Value

修正方法

各属性内の値を正しいスペリングにし、有効な値に一致させることで問題を修正します。適切な ARIA ロール、ステート、プロパティを使用しましょう。

次の例は aria-hidden="true" 要素にフォーカス可能な要素を含めないというルールに合格します:

  • デフォルトではフォーカス可能ではないコンテンツ。

    <p aria-hidden="true">Some text</p>
  • CSS で非表示にされたコンテンツ。

    <div aria-hidden="true">
        <a href="/" style="display:none">Link</a>
    </div>
  • tabindex を用いてフォーカス不可能にしたコンテンツ。

    <div aria-hidden="true">
    	<button tabindex="-1">Some button</button>
    </div>
  • disabled を用いてフォーカス不可能にしたコンテンツ。

    <input disabled aria-hidden="true" />
  • 一度先祖で true に設定された aria-hidden は、リセットできません。

    <div aria-hidden="true">
        <div aria-hidden="false">
            <button tabindex="-1">Some button</button>
        </div>
    </div>

次の例は aria-hidden="true" 要素にフォーカス可能な要素を含めないというルールに失敗します:

  • スクリーン外のフォーカス可能なリンク。

    <div aria-hidden="true">
    	<a href="/" style="position:absolute; top:-999em">Link</a>
    </div>
  • 間違って無効化されたフォーカス可能なフォーム欄。

    <div aria-hidden="true">
    	<input aria-disabled="true" />
    </div>
  • 一度先祖で true に設定された aria-hidden は、リセットできません。

    <div aria-hidden="true">
        <div aria-hidden="false">
            <button>Some button</button>
        </div>
    </div>
  • tabindex でフォーカス可能にしたコンテンツ。

    <p tabindex="0" aria-hidden="true">Some text</p>
  • フォーカス可能な summary 要素。

    <details aria-hidden="true">
        <summary>Some button</summary>
        <p>Some details</p>
    </details>

なぜ重要なのか

要素の aria-hidden="true" 属性を使用すると、要素とすべての子ノードをアクセシビリティ API から取り除き、スクリーン・リーダーや他の支援技術にとって完全にアクセシブルでなくします。冗長または無関係なコンテンツを取り除くことで支援技術のユーザーの体験を向上することを意図しているのであれば、見えるよう描画されたコンテンツを支援技術から隠すために細心の注意をはらって aria-hidden を使用しても良いでしょう。aria-hidden が可視のコンテンツをスクリーン・リーダーから隠すために使用されている場合、同一または同等の意味かつ機能は支援技術に提示しなければなりません。

注記: aria-hidden="true" を使用して隠された要素の子孫であるコンテンツに aria-hidden="false" 使用しても、コンテンツはアクセシビリティ API に公開されず、スクリーン・リーダーや他の支援技術にとってアクセシブルになりません。

このルールは aria-hidden="true" 属性のついたあらゆる要素に適用されます。

aria-hidden="true" を要素に追加することで、コンテンツ制作者は支援技術が要素を無視することを保証します。これはアイコンフォントなど、支援技術に読まれるべきではない web ページの装飾的な部分を隠すために使用できます。

aria-hidden="true" がついたフォーカス可能な要素は読み上げ順序の一部からは無視されますが、フォーカス順序の一部ではあるため、可視なのか、隠されているのかという状態を不明瞭にします。

ルールの説明

このルールは aria-hidden 要素にフォーカス可能な要素が存在しないことを確認します。

仕組みについて (簡単に言うと)

すべてのユーザーインターフェースコンポーネント (フォーム要素、リンクそしてスクリプトにより生成されたコンポーネントを含むが、これに限らない) には、名前 (name) と役割 (role) がプログラムで解釈可能であり、ユーザーにより設定可能なステート、プロパティ、そして値は、プログラムでも設定可能であり、そしてこれらのアイテムへの変更の通知は支援技術を含むユーザーエージェントに提供されます。

リソース

その他のリソース

その他リソースもあわせてご参照ください。

axe 4.10 ルールの一覧 を参照する

この情報は役に立ちましたか?

すでにフィードバックをいただきました、ありがとうございます。.

あなたの回答は次のとおりです。

この情報は役に立ちましたか?
フィードバックが提出された日付/時刻: