aria-label を使ったら怒られた
div に alia-label
を指定したら Markuplint でエラーが発生した。
<markuplint> error: ロール「generic」では、ARIAプロパティ「aria-label」は許可されていません (wai-aria)
aria-label について
要素が読み上げに適切な名前を持っていない場合に使える。
aria-label
属性は対話型要素にラベル付けする文字列値を定義します。
と書いてあるので、対話型要素ではない div に使うのは間違いということのようだ。
ちゃんと仕様を見てみる。
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
が使える。
正確にはこれは aria-labelledby
に対応する。
alia-label
に対応するのは aria-description
だが、これは WAI-ARIA 1.3 という草案の仕様のため使用するには早い。
ということで div
や span
などの generic
role を持つ要素は aria-describedby
を使おう。