ひびのログ

日々ではないけどログを出力していくブログ

aria-label は div や span に指定できない

aria-label を使ったら怒られた

div に alia-label を指定したら Markuplint でエラーが発生した。

<markuplint> error: ロール「generic」では、ARIAプロパティ「aria-label」は許可されていません (wai-aria)

aria-label について

developer.mozilla.org

要素が読み上げに適切な名前を持っていない場合に使える。

aria-label 属性は対話型要素にラベル付けする文字列値を定義します。

と書いてあるので、対話型要素ではない div に使うのは間違いということのようだ。

ちゃんと仕様を見てみる。

www.w3.org

All elements of the base markup except for the following roles: caption, code, deletion, emphasis, generic, insertion, paragraph, presentation, strong, subscript, superscript
(意訳:ここに挙げたもの以外の要素全部に付けられる)

となっているので、対話型要素とは限らないことが分かった。

いずれにしろ div は generic role なので使用できない。

どうすればいい?

じゃあアクセシブル名はどうやってつけたらいいのかというと、aria-describedby が使える。

developer.mozilla.org

正確にはこれは aria-labelledby に対応する。
alia-label に対応するのは aria-description だが、これは WAI-ARIA 1.3 という草案の仕様のため使用するには早い。

ということで divspan などの generic role を持つ要素は aria-describedby を使おう。