要素を視覚的に非表示にしつつ、スクリーンリーダーなどの支援技術には認識されるためのパターン
display: none; visibility: hidden;
これらはアクセシビリティツリーから削除されるため、 支援技術に読み上げられなくなってしまう
.visually-hidden
.visually-hidden { border: 0; clip: rect(0 0 0 0); width: 1px; height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; }
「スラッシュ」「ハイフン」「ドット」などと読み上げられてしまう
本来は 2024年7月16日と表記すれば問題ない。 しかし、プロダクトの都合上、現実問題そうはいかない場合もある!
2024年7月16日
<time datetime="2024-07-16" aria-hidden="true">2024/7/16</time> <span class="visually-hidden">2024年7月16日</span>
<button type="button"> <span class="visually-hidden">メニュー</span> <span aria-hidden="true">☰</span> </button>
visually-hidden ではなく aria-label でよくない?
visually-hidden
aria-label
<button type="button" aria-label="メニュー"> <span aria-hidden="true">☰</span> </button>
個人的には visually-hidden のほうが良いと思います
aria-hidden
適切に visually-hidden を使ってアクセシブルな Web を提供しよう