フォーカスの種類
2019年はフォーカス関連の仕様が整理されました(注1)。HTML仕様ではフォーカスを受け取るかどうかが次のように整理されています。 フォーカス可能は理論上フォーカス可能であることを指します。フォーカス可能な要素は少なくともJavaScriptのfocus()メソッドでフォーカスを移動することができます。フォーカス可能でなければ、何をしてもフォーカスは移動しません。前述の無効なフォームコントロールは、そもそもフォーカス可能ではないのです(注2)。
逐次フォーカス可能はTabキーを押した場合にフォーカスが移動することを指します。フォームコントロールやリンクは基本的には逐次フォーカス可能です。div要素などの逐次フォーカス可能でない要素もtabindex属性に0を指定すると逐次フォーカス可能になります(Tabキーを押すとフォーカスが移動します)。逆に、逐次フォーカス可能であってもtabindex属性に-1を指定すると逐次フォーカス可能ではなくなります(Tabキーを押してもフォーカスは移動しません)。なお、逐次フォーカス可能な要素はフォーカス可能です。 クリックフォーカス可能は要素をクリックするとフォーカスが移動することを指します。フォームコントロールやリンクは基本的にはクリックフォーカス可能です。div要素などのクリックフォーカス可能でない要素もtabindex属性に-1を指定するとクリックフォーカス可能になりますし、0を指定してもクリックフォーカス可能になります。tabindex="-1"は要素をクリックフォーカス可能にする指定であるため、フォームコントロールやリンクにtabindex="-1"を指定してもクリックフォーカス可能なままです(クリックするとフォーカスが移動します)。tabindex属性を使ってフォームコントロールやリンクをクリックフォーカス不可能にすることはできません。なお、クリックフォーカス可能な要素はフォーカス可能です。