WAI-ARIA実装時の基本的な考え方や気をつけるポイント、参照するドキュメントを知る
Web Accessibility Initiative Accessible Rich Internet Application
ホストマークアップ言語にないセマンティクス(役割と属性)を追加するための仕様
Accessible Rich Internet Applications (WAI-ARIA) 1.1
※ここでは基本的にホストマークアップ言語はHTMLとしてお話します。
アクセシビリティAPIを通じて適切な
アクセシビリティオブジェクトを支援技術に伝えるため。
HTMLは語彙が貧弱(要素追加するの大変やし)
支援技術はブラウザだけが対象ではない。そのため情報をやりとりする汎用的なAPIが必要
role
aria-*
aria-*
role
役割の追加・上書きをするための属性。次のように分類される。
widget
, structure
, landmark
...button
, slider
, tooltip
...article
, heading
, img
, none
, toolbar
banner
, main
, contentinfo
alert
, log
, marquee
Caution!!!!!!
抽象ロールは使用不可
インスタンス化してはいけないやつ (よくわかってない、俺達は雰囲気で(ry)
aria-*
状態、プロパティを追加する属性
aria-label
aria-controls
aria-expanded
aria-hidden
hidden
状態やプロパティはHTMLのネイティブセマンティクスにあまり無いため、利便性を高めるには重宝する。
checked
, disabled
, hidden
, open
WAI-ARIAのベストプラクティス = WAI-ARIAをなるべく使わない
= HTMLのネイティブセマンティクスを優先して使用する
ウェブ開発者は、表に定義される暗黙のARIAセマンティックスと一致する値にARIA roleおよびaria-属性を設定すべきでない。
デフォルトの役割と重複させたアカンよ
<button role="button">button</button>
※ブラウザのサポート状態やバグ対応のためにあえて重複させるのは 🙆️
<main role="main">main</main>
※IE11は<main>
要素の暗黙のARIAセマンティクスを理解しない
( role="main"
は解釈する)
<img role="img" src="hoge.svg" alt="hoge" />
※iOS VoiceOver は .svg
で終わる img
要素の alt
を読み上げない。
( role="img"
があると読み上げる)
ウェブ開発者は、HTMLにおけるARIA属性の使用に対する文書適合性の表に示されるセマンティックスと矛盾する方法でARIA
role
およびaria-*
属性を使用してはならない。
使っていいrole
は決められてるんよ
次は、button要素でrole=headingを使用する。button要素はheadingロールと衝突するデフォルト特性を持つため、これは許可されない。
<button role="heading">search</button>
HTMLの各要素の暗黙のセマンティクスと使用しても良い role
については、ARIA in HTMLの使用に対する文書適合性要件を参照のこと
覚えられないので eslint-plugin-jsx-a11y とか使うと良いかもね!
HTMLに足りない要素を補い、HTMLに新しいセマンティクスが追加されれば、それを補っていたWAI-ARIAを外す必要がある。
その意味では自転車の補助輪である。
ただWAI-ARIAには、補うだけではなくHTMLの未来を示す役割もあります。
WAI-ARIAの1つの目標はよりセマンティックかつアクセシブルなマークアップの出現を刺激する手助けをすることである
個人的には未来のHTMLを先取りしている気分!
\(^o^)/オワリ