要素のtabindexはゼロより大きくしないでください

ルールID: tabindex
ルールセット: axe-core 4.10
ユーザーへの影響: 深刻
ガイドライン: Deque Best Practice
 

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)

  • Deque Best Practice

    修正方法

    値が 0 より大きい tabindex の使用を避ける主な方法は二つあります。一つ目は、 tabindex の値を 0 に変更することです。これは、ユーザーが要素間をタブ移動する際の順序が変わる可能性があることに注意してください。二つ目は、tabindex を全体的に削除し、意図した順序でユーザーが要素間をタブ移動できるよう、ページの構成を調整することです。

    三つ目として、tabindex を tabindex="-1" に変更し、JavaScript を追加する方法があります。これは JavaScript を使って "-1" を "0" に変更するまで、要素をタブ順序から除外します。

    tabindex="0" あるいは tabindex="-1" + JavaScript を使ってアイテムをタブ順序に含める

    通常の条件では、リンクとフォーム要素のみがタブフォーカスを受け取ることができます。ほとんどの場合、他のアイテム (例えば <p><th><span> など) はタブフローの中に含めないようにしたほうが良いですが、複雑でインタラクティブな JavaScript ウィジェットなどの例外的な状況では、通常タブフォーカスを受け取らないアイテムをタブフローの中に含めることに意味がある場合があります。これを実施するには、2つの方法があります:

    1. tabindex="0"
    2. tabindex="-1" + JavaScript
    アイテムがタブフォーカスを受け取れるようにする方法
    方法 効果
    tabindex="0" アイテムを通常のタブフローに追加する。
    tabindex="-1" + JavaScript JavaScript のメソッドがタブフォーカスを許可し、値を変更する (例:tabindex 値を0もしくは正数に変更する) まで、アイテムを通常のタブフローから除外する

    選択する修正方法に関わらず、最終的なタブ順序がユーザーの観点から合理的なパターンに従っていることを確認してください。タブ順序は見た目の順序ではなく、DOM 内の要素の順序によって決定されることに注意してください。デフォルトのタブ順序 = ソースコードの順序 = スタイルを切った時の順序であることを忘れないようにしましょう。

    注意: 次の CSS スタイルは要素の視覚的な位置を変更できるため、混乱しやすいタブ順序を作る可能性があります:

    • position: absolute;
    • position: relative;
    • float: left;
    • float: right;

    なぜ重要なのか

    0 より大きい値の tabindex を使用すると、解決するのと同じくらいの問題が発生する可能性があります。これは予期せぬタブ順序を作るため、ページの直感性が低下し、特定の要素が完全にスキップされるように見えることがあります。

    (1 かそれ以上の値を持った) tabindex が起こす一部の問題は次の通りです:

    • 予期せぬタブ順序:ユーザーから見ると、tabindex は予期しない方法でデフォルトのタブ順序を変更するため、混乱する可能性があります。
    • アイテム全体がスキップされたように見える:アイテムはタブ順序の中で、一度しか現れません。ユーザーが tabindex のついたアイテムを通り過ぎて web ページの残りの部分に進んだ場合、いずれユーザーは tabindex のついたアイテムの位置に到達しますが、タブ移動の過程でこれらのリンクは、ユーザーが最初のタブサイクルの開始時にタブ移動済みのため、スキップされます。誤ったタブ順序は、ユーザーがアイテムにアクセスできないともどかしく、また、再度それらのリンクにアクセスするには、ページ内の一連のリンク全体を一巡する必要があることを知らないかもしれません。
    • tabindex がついたすべてのアイテムは tabindex がついていないアイテムより先にタブ移動します。最初のアイテムとページ後半のセクションのタブ順序を変更したい場合、変更されたセクションの終わりまでのすべてのアイテムの tabindex 値を設定しなければならなくなります。極端には、ページにリンクが20個あり、それらのリンクの1つの tabindextabindex="100" にすると、たとえページ内にあるリンクの数が 100 個以下の場合でも、ユーザーは最初にそのリンクにタブ移動します。ページの後半にあるセクションのタブ順序を調整する方法は存在しないため、そのセクションの前にあるすべてのリンクに手動でタブ順序を指定する必要があります。

    ルールの説明

    tabindex 属性は、一部の要素が完全にスキップされるように見せる予期しないタブ順序を防ぐため、0 より大きい値を持ってはなりません。

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

    0 より大きい明示的な tabindex 属性が使用されていないことを確認します。

    リソース

    その他のリソース

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

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

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

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

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

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