強制カラーモードが無効です — 有効にするとデモの効果が確認できます ✓ 強制カラーモードが有効です — デモの効果を確認できます

強制カラーモードの有効化手順

このデモはOSレベルで強制カラーモードを有効にするか、Chrome DevTools でエミュレートして確認します。

Chrome DevTools

  1. + + I で DevTools を開く
  2. + + PEmulate CSS media feature forced-colorsまたはCSS forced-colorsをエミュレートするを実行する

ページリロードなしで即座に切り替わります

Case 1

ラジオボタンの選択状態

ラジオボタンをCSSで装飾した際に、選択状態が可視化されないことがあります。

❌ Bad
プランを選択

選択状態をbackground-colorの変化だけで表現していると、強制カラーモードで全てが同じ ButtonFace色になり、どれが選択されているかわからなくなります。

✅ Good
プランを選択

選択状態に border: 2px solid transparent を追加するだけで、強制カラーモードで ButtonText 色の境界線が現れ、選択状態が明確になります。

Case 2

ドロワーの境界線

ドロワーの境界を box-shadow だけで表現すると、強制カラーモードで影が消えて境界がわからなくなることがあります。

❌ Bad

box-shadowは強制カラーモードで無効化されます。ドロワーの境界線が視覚的に認識しにくくなります。

✅ Good

border-left: 1px solid transparent を追加すると、強制カラーモード時に currentColor の境界線が現れ、ドロワーとページの境界が明確になります。

Case 3

ボタンの優先度表現

ボタンの優先度(プライマリ・セカンダリ)を色だけで表現すると、強制カラーモードで意図しない見た目になり、ユーザーにとってどのアクションが重要かわからなくなります。

❌ Bad

アクション選択

強制カラーモードでは2つのボタンの強弱の区別がつかなくなります。

色の違いだけでボタンの優先度を伝えています。強制カラーモードでは プライマリの背景色が ButtonFace で統一され、ボタンの形がわからなくなり、優先度が低く見えてしまいます。

✅ Good

アクション選択

強制カラーモードでもプライマリボタンを識別できます

プライマリボタンに border: 5px double transparent を追加することで、強制カラーモードで ButtonText 色のダブルボーダーが現れ、ボタンの強調が視覚的に際立ちます。

Case 4

アイコン付きボタン

ボタンのアイコン色によっては、強制カラーモードでアイコンが見えづらくなってしまうことがあります。

❌ Bad

強制カラーモードでは背景画像として埋め込んだ矢印アイコンが消えます。

SVGの色が fill や stroke で指定されている場合、強制カラーモードで背景色と同化してアイコンが見えなくなることがあります。

✅ Good

インライン SVG に currentColor を使うことで、強制カラーモードでもアイコンが ButtonText 色で表示されます。

インライン SVG で stroke='currentColor' を使うことで、強制カラーモードでも ButtonText 色が継承され、アイコンが常に表示されます。