web-dev-qa-db-ja.com

スクリーンリーダーの情報スパンにラベルを付けることはできますか?

情報スパンがあります。具体的には、評価を表す星でいっぱいのスパン(塗りつぶしまたは塗りつぶしできない星のアイコン)があります。読むテキストがないため、スクリーンリーダーにはまったく表示されませんが、ユーザーにとって情報は重要です。スクリーンリーダーにのみ表示されるラベルを付けることを考えています。 MDN docs から、彼らはそれを言っているので、それは大丈夫のようです

ユーザーインターフェイス内のアイテムのキャプションを表します

また、コントロールに「関連付けられる」可能性があるという言い回しがありますが、関連付けられている必要はありません。 ラベルをfieldsetinputに関連付けることができるので、それは理にかなっていますが、それがスパンのラベル付けにまで及ぶかどうかはわかりません。 (@Jukkaのメモのように、labelではありませんfieldsetに適しています、legendを考えていました)

スクリーンリーダーがスパンを表示して使用するには、同等の情報でスパンにラベルを付けるのに十分ですか?それは悪い習慣ですか?

3
ABMagil

いいえ。label要素はcontrols(フォームフィールド)のラベル付けを目的としており、ユーザーエージェントと支援ソフトウェア。これを使用して他の何かにラベルを付けることは非論理的であり、おそらく有用な目的に役立ちません。無視されるか、ユーザーがコントロールに関連付けられているとユーザーに思わせる方法で実装されます。

正式には、事実上の標準に近いHTML5 CRでは、 label element は「ラベル付け可能な要素」に関連付ける必要があるとしています。これは、たとえばspanはラベル付けできません(そしてfieldsetもラベル付けできません:label要素はラベル付けする必要がありますaコントロール、コントロールのセットではありません)。

MDNサイトは信頼できません。一般に非常に便利ですが、この問題では誤解を招く可能性があります。 label要素は、一般に「ユーザーインターフェイス要素」にラベルを付けるためのものではありません。

星で評価を提示する最もアクセスしやすい方法は、星の数ごとに個別の画像を使用し、その数を単語で表すalt属性を使用することです。 <img alt="Three stars out of five" src=stars3.png>。他にもさまざまなアプローチがあります。いくつかの星のように見えるようにフォーマットしたspan要素を使用する場合、この手法ではおそらく適切なアクセシビリティが提供されません。このような状況で作業する必要がある場合は、その要素でtitle属性を使用して、評価を口頭で表現します。属性は、特定の条件下で一部のソフトウェアによって読み取られます。

3

img /要素の使用に関する@jukkaの意見に異論はありませんが、input /sを使用した別のバージョンがあります http://jsfiddle.net/leaverou/CGP87/light/

0
albert