要素のタブインデックスは0より大きくすべきではありません

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

Start building more accessible experiences

Axe DevTools Pro helps dev teams find and fix up to 80% of accessibility issues while coding. No experience required. Get started with your free trial today.

Compliance Data & Impact

User Impact


Minor
Critical

Disabilities Affected

  • 盲目
  • 盲ろう者
  • 運動・器用さ

Standard(s)

  • Deque Best Practice

    修正方法

    0より大きい値を持つ tabindex の使用を回避するには、主に2つの方法があります。最初の方法は、 tabindex を0に変更することです。これにより、ユーザーが要素間をタブ移動する順序が変わる可能性があることに注意してください。2番目の方法は、 tabindex を完全に削除し、ページの構造を変更して、ユーザーが要素間をタブ移動したときに、当初希望した順序で要素に到達できるようにすることです。

    3番目の方法は、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 を使用すると、解決される問題と同じだけ問題が発生する可能性があります。ページの直感性が低下し、特定の要素が完全にスキップされているように見える場合があり、予期しないタブ順序が作成されます。

    tabindex (値が1以上) によって発生する問題の一部を以下に示します。

    • 予期しないタブ順序: tabindex は既定のタブ順序を予期しない方法で変更し、ユーザーの方向感覚が失われる可能性があります。
    • 項目が完全にスキップされているように見える場合があります: 項目はタブ順序に1回だけ表示されます。ユーザーが tabindex 項目をタブキーで過ぎてWebページの残りの部分に進むと、ある時点でユーザーは tabindex 項目の場所に到達しますが、タブ プロセスではこれらのリンクはスキップされます。これは、ユーザーがサイクルの始めにすでにこれらのリンクをタブで通過しているためです。タブの順序が間違っていると、ユーザーが項目にアクセスするのが困難になり、それらのリンクに再度アクセスするにはページ上のリンク セット全体を循環する必要があることに気付かない可能性があります。
    • すべての tabindex 項目は、tabindex以外の項目の前にタブ移動されます。最初の項目と、ページ内の後のセクションのタブ順序を変更する場合は、変更されたセクションの最後までのすべての項目に tabindex 値を設定する必要があります。少し極端な例ですが、ページに20個のリンクがあり、そのうちの1つのリンクの tabindextabindex="100" に設定すると、ページ上のリンクが100個未満であっても、ユーザーは最初にそのリンクにタブ移動します。そのセクションの前のすべてのリンクのタブ順序を手動で設定しない限り、ページの後のセクションのタブ順序を変更する方法はありません。

    ルールの説明

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

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

    tabindex 0より大きい明示的な属性が決して使用されないようにします

    リソース

    その他のリソース

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

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

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

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

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

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