情報スパンがあります。具体的には、評価を表す星でいっぱいのスパン(塗りつぶしまたは塗りつぶしできない星のアイコン)があります。読むテキストがないため、スクリーンリーダーにはまったく表示されませんが、ユーザーにとって情報は重要です。スクリーンリーダーにのみ表示されるラベルを付けることを考えています。 MDN docs から、彼らはそれを言っているので、それは大丈夫のようです
ユーザーインターフェイス内のアイテムのキャプションを表します
また、コントロールに「関連付けられる」可能性があるという言い回しがありますが、関連付けられている必要はありません。 ラベルを (@Jukkaのメモのように、fieldset
とinput
に関連付けることができるので、それは理にかなっていますが、それがスパンのラベル付けにまで及ぶかどうかはわかりません。label
はではありませんfieldset
に適しています、legend
を考えていました)
スクリーンリーダーがスパンを表示して使用するには、同等の情報でスパンにラベルを付けるのに十分ですか?それは悪い習慣ですか?
いいえ。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
属性を使用して、評価を口頭で表現します。属性は、特定の条件下で一部のソフトウェアによって読み取られます。
img /
要素の使用に関する@jukkaの意見に異論はありませんが、input /
sを使用した別のバージョンがあります http://jsfiddle.net/leaverou/CGP87/light/