Edge の新しいページカラー設定と background-colorborder 使用時のアクセシビリティ

Edge 130 において、新しいアクセシビリティ機能としてページ色をカスタマイズする設定が追加されたようです[1]

Enhance your web experience with Page colors(YouTube)

ページ色は「夕暮れ(Dusk)」「砂漠(Desert)」「黒(Night Sky)」「白(White)」の4種類から選ぶことができます。本来ダークモードなどというものはサイト側が独自に対応するのではなくブラウザ側が機能を持つべきだと考えているので、こういった機能が搭載され、どんなサイトでもユーザーが任意に設定できるようになる流れは歓迎するところです。

さて、Web 制作者として注意しておかなくてはならないのは、この機能を使用すると background-color が事実上無効な状態になることです。

例えばナビゲーションリンクにおける現在地表示を背景色の有無だけで区別していると、このブラウザ設定をしたユーザーは視覚的な区別ができなくなってしまいます。

<style>
	/* 好ましくないスタイル設定 */
	.gnav {
		display: block flex;

		& > li {
			display: block flow;

			& > a {
				--gnav-bgcolor: #fff;
				--gnav-color: #000;

				display: block flow;
				background-color: var(--gnav-bgcolor);
				padding: 1em;
				color: var(--gnav-color);

				&[aria-current] {
					--gnav-bgcolor: #ccc;
				}
			}
		}
	}
</style>

<nav aria-label="サイト">
	<ul class="gnav">
		<li><a href="/products">製品情報</a></li>
		<li><a href="/company" aria-current="true">会社概要</a></li>
		<li><a href="/recruit">採用情報</a></li>
	</ul>
</nav>

これはなにも Edge 130 で新たに発生する問題というわけではなく、昔からどのブラウザでも印刷時に起こっていた既知の事象です。なので印刷対応で行っているテクニックをそのまま採用することで自動的にこの対策にもなります。

/* 背景が表示されない環境では枠線を表示する設定 */
.gnav {
	display: block flex;

	& > li {
		display: block flow;

		& > a {
			--gnav-border-width: 1px; /* ← 追加 */
			--gnav-bgcolor: #fff;
			--gnav-color: #000;

			display: block flow;
			border: var(--gnav-border-width) solid var(--gnav-bgcolor); /* ← 追加 */
			background-color: var(--gnav-bgcolor);
			padding: calc(1em - var(--gnav-border-width)); /* ← 変更 */
			color: var(--gnav-color);

			&[aria-current] {
				--gnav-bgcolor: #ccc;
			}
		}
	}
}

逆に言えば、今になって問題を認識し、慌てて CSS の修正に追われるようなサイトはそもそも印刷を含めたアクセシビリティの考慮がなされていなかったということなので、対処療法的なコード修正で済ませるのではなく、本質的なアクセシビリティへの意識を顧みる必要があるでしょう。

一方で印刷対応では問題なかったことが新たに発覚する事例も存在します。私が見つけたものだと border-color: transparent を指定して視覚的には枠線が見えないようにしていても、このブラウザ設定で強制的に表示されてしまうというものがありました。たとえ印刷対応が充分になされているサイトであっても、対応が必要なケースは存在するかもしれませんね。

脚注

  • 1.

    Linux 版は Edge 132 以降でサポートされる模様。 ↩ 戻る