Open8
a11y由来のスタイリング考察
aria属性 や role属性 を用いたスタリング実例は、まだあまり聞くことがありません。例えば CSS Modules の場合次の様な指定が可能であり、a11yとスタイリングを両立できるため、アプローチとして良さそうと考えています。
.text {
color: #000;
}
.text[aria-invalid=true] {
color: #f00; /* エラーの表現とか */
}
.menu[aria-expanded=false] {
display: none; /* メニューの開閉表現とか */
}
.menu[aria-expanded=true] {
display: block; /* メニューの開閉表現とか */
}
実例や、属性と表現の組み合わせ例など。自由に投稿いただけると嬉しいです。
メニュー開閉箇所について、aria-expanded
自体は
「要素、または要素が制御する別のグループ化要素が、現在展開されるまたは折りたたまれるかどうかを示す。」ステート
なのでそのもの自体に display: block
や display: none
をつけるのは誤りみたいです。
(参考:aria-expandedのよくある間違い / masuP.net)
<button type="button" aria-expanded="false" aria-controls="section1">開く</button>
<section id="section1" aria-hidden="true">
コンテンツ
</section>
として使う形なので、上のスタイルを適応するとボタン部分が消えちゃう感じになります。
[aria-hidden=true] {
display: none;
}
もありそうです。hiddenと同じ感じで
.is-current
等で表現していたものはこちらが良さそう。page のほか、step / location はよく使いそう。
.nav li a[aria-current="page"] {
...
}
span[role=checkbox][aria-checked=true] {
...
}
button[aria-pressed=true] {
...
}
チェックボックスやトグルボタンの状態変化のスタイル付与とかに使えそう