例
解説
入力フォームとカスタムスクリプトコントロールにアクセシブルな名前を付けることは、ユーザーがその目的を理解できるようにするために不可欠です。ラベルが提供されると、支援技術によって各コントロールの名前が処理され、ユーザーはそれぞれの目的をすぐに理解できるようになります。
ただし、フォームのレイアウト方法により、ユーザーに入力フィールドの説明ラベルが表示される前にそのフィールドに到達してしまったり、フィールドよりかなり前にラベルが表示されてしまうことはよくあります。ラベルが提供されていない場合は、動的コンテンツを操作したりフォームに入力したりする操作がわかりにくくなることがあります。
HTMLには、ラベルをコントロールに関連付けるための二つのネイティブ要素が用意されています。
-
label
-
label
要素は、個々のコントロールのアクセシブルな名前を識別するために使用します。コントロールとそのラベルを囲むか(例 1を参照)、コントロールのIDを参照するfor
属性を追加できます(例 1を参照)。
-
fieldset
-
fieldset
要素は、関連するコントロールのセットをグループ化するために使用します。子のlegend
要素にはラベルを付与できます。(例 3 を参照)。
これらのネイティブメソッドには二つの短所があります。一つは、単一のラベルしか付けられないこと、もう一つは、ラベルがページの表示部分にある必要があり、テキストがlabel
要素によってキャプチャされることです。より複雑なケースは、次のARIA属性で対応できます。
-
aria-labelledby
-
aria-labelledby
属性は、複数の要素を参照するために使用します。コントロールに完全なコンテキストを与えるために複数の情報が必要な場合に便利です(例 5 を参照)。また、 label
要素を使用できない場合にラベルを識別するのにも使用できます(例 4 を参照)。
-
aria-label
-
aria-label
属性は、他の方法でラベルを付けられない場合に使用します(例 6を参照)。属性の値はコントロールのラベルです。