stylelint-a11yについて調べてわかったこと
メニューのドキュメントアイコンより「Start presentation」クリックでプレゼンテーションが始まります
自己紹介

@ yamanoku
大山奥人
, おおやまみちのく
a.k.a やまのく
得意領域:マークアップ・フロントエンド・UIデザイン
既婚で1児の父と猫🐈🐈🐈の飼い主
どういうルールがあるのかについて調べたので発表
最後に個人的な総括
content-property-no-static-value
> Disallow unaccessible CSS generated content in pseudo-elements
aria-label
属性のコンテンツと空の文字列以外の
CSSが生成した
content
を許可しない
> CSS の生成コンテンツは DOM に含まれません。そのため、アクセシビリティツリーに現れず、支援技術とブラウザーの組み合わせによってはアナウンスされません。
font-size-is-readable
> Disallow font sizes less than 15px
15px以下(11.25pt)を許可しない
ちなみにpx指定にするとブラウザ側のフォントサイズ変更が効かなくなるので相対指定にしましょう
%, em, rem
line-height-is-vertical-rhythmed
>Disallow not vertical rhythmed line-height
px指定の場合、24の倍数にする
整数値指定の場合、1.5以上にする
> 主要な段落コンテンツでは、 line-height の値の最小値が 1.5 になるようにしてください。
> Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
error.css.foo {
line-height: 12px;
}
.foo {
line-height: 1.3;
}
.foo {
line-height: 50px;
}

バーティカルリズム対応には
line-height-step
が有用ではあるが、まだすべてのブラウザでは未対応
media-prefers-reduced-motion
>Require certain styles if the animation or transition in media features
ok.css.bar {
animation-name: skew;
}
@media screen and (prefers-reduced-motion: reduce) {
.bar {
animation: none;
}
}
環境設定 >
アクセシビリティ > ディスプレイ >
視差効果を減らす
をチェック
Windows の設定 > 簡単操作 > Windowsでアニメーションを再生する
をオフ
AndroidはPie(ver. 9)から支援技術(アクセシビリティ)で視差効果減らすのができる
8以前はデベロッパー機能を開放しないといけない
media-prefers-color-scheme
>Require implementation of certain styles for selectors with colors.
色付きのセレクタに特定のスタイルの実装を要求
ok.css.foo {
color: red;
}
@media screen and (prefers-color-scheme: dark) {
.foo {
color: white;
}
}
色指定したときにメディアクエリでの指定をしていないとエラー
error.css.foo {
color: red;
}
@media screen and (prefers-color-scheme: dark) {
.foo {
background-color: black;
}
}
no-display-none
>Disallow content hiding with display: none
property
コンテンツを隠す時に display: none
プロパティを使うのを許可しない
視覚的に隠すときに使用すると、スクリーンリーダーで確認できないため
目次用の見出しとか

使い方を誤るとヤバそう
本当に見せないようにしている時に引っかかるので
visibility: hidden
のチェックもほしい気がする
no-obsolete-attribute
>Disallow obsolete attribute using
廃止された属性の使用を許可しない
一覧
例
error.cssbody[link] {
background-color: pink;
}
a, img[datasrc] {
color: pink;
}
img[align], a[name] {
color: pink;
}
no-obsolete-element
>Disallow obsolete selectors using
廃止されたセレクターの使用を許可しない
一覧
例
error.cssblink {
color: pink;
}
marquee {
font-size: 200%;
}
no-spread-text
>Require width of text in a comfortable range
テキストの幅を45文字より大きく80文字未満にする必要がある
> テキストの長い行を読む際に、現在読んでいる位置を維持することが困難な読字障害や視覚障害のある利用者が、より効率よくコンテンツをを閲覧したり操作したりできるようになる。
> この達成方法はまた、文字サイズの拡大に合わせてカラム幅を広くすることにもなり、それによって、文字サイズが大きくなるに従ってテキストの一部が欠けて読めなくなるような事態も発生しにくくなる。
英字だと80字、日本語40字あたりが良い
国際化、海外展開などを考えるときには有用

ほか言語だとどうなるのかは気になる
中国語、韓国語
アラビア語
no-outline-none
>Disallow outline clearing
アウトライン除去を許可しない
error.scss.foo:focus {
outline: 0;
}
.bar:focus {
outline: none;
}
.baz:focus {
outline: none;
border: transparent;
}
なぜ outline: none;
がいけないか
キーボード操作でフォーカス位置が分からなくなる
現在地がどこか確認できなくなる
no-text-align-justify
>Disallow content with text-align: justify
テキストの両端揃えをしたコンテンツを許可しない
余白 (隙間) の川ができてしまうのを防ぐ
> 認知障害のある利用者の多くは、両端揃え (左右両端を揃えた配置) されたテキストのブロックで重大なトラブルに陥ることがある
selector-pseudo-class-focus
>Require or disallow a pseudo-element to the selectors with :hover
セレクタ疑似要素で :hover
のとき :focus
を追加するか、それのみを禁止する

が思ったこと・考えたこと
> 残念ながら、Webページのアクセシビリティを自動的にチェックできるのは、チェック作業全体の20%前後といわれています。
display: none
自体は悪くない。問題は使い方。
逆に
チェックを通したことによって不利益が生じる人はいないか?
あえて使うとするなら
廃止属性やセレクタのチェッカーとしてはアリ?
レガシー環境での刷新とか
文化を定着させるための1つのツールとしたい
知識として蓄積することは良い
関連