概要

CSSforced-color-adjustプロパティは、ブラウザやOSが提供する強制的なカラーモード(例:高コントラストモード)を調整するためのプロパティです。ユーザーが視覚補助設定として高コントラストモードを有効にしている場合、ウェブページのカラースキームが強制的に変更されることがありますが、forced-color-adjustを使用することで、この調整を無効にしたり適用したりできます。これにより、デザインの一貫性を保ちつつ、ユーザーのアクセシビリティニーズに対応することが可能です。

forced-color-adjustの基本構文

selector {
  forced-color-adjust: value;
}
  • valueには以下の値が設定できます:
    • auto
      デフォルトの設定で、ブラウザやOSの強制カラーモードの影響を受けます。
    • none
      強制カラーモードの影響を無視し、指定されたCSSスタイルをそのまま適用します。

使用例

基本的な使用例 - 高コントラストモードの影響を受けないようにする

以下の例では、forced-color-adjustを使って、特定の要素が高コントラストモードの影響を受けないように設定しています。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <title>forced-color-adjustの使用例</title>
    <style>
      body {
        background-color: white;
        color: black;
      }
      .header {
        background-color: blue;
        color: white;
        padding: 10px;
      }
      .header-forced-adjust {
        forced-color-adjust: none; /* 高コントラストモードの影響を無視 */
      }
    </style>
  </head>
  <body>
    <div class="header">通常のヘッダー - 高コントラストモードで色が変わる</div>
    <div class="header header-forced-adjust">
      強制カラーモード調整無効化されたヘッダー
    </div>
    <p>
      このページでは、`CSS`の<strong>forced-color-adjust</strong>プロパティを使用して、特定の要素のカラースタイルを強制カラーモードから保護しています。
    </p>
  </body>
</html>

解説

  • .header
    通常のスタイルで、システムの高コントラストモードが有効な場合、色が変更される可能性があります。
  • .header-forced-adjust
    forced-color-adjust: none;を指定することで、システムの高コントラストモードの影響を受けず、指定されたスタイルを保持します。 この設定により、デザイン上重要な要素の色がシステム設定によって予期せず変更されることを防ぎます。

応用例 - 特定のコンテンツのみ調整する

デザインの一貫性を保ちながら、ユーザーの視覚補助設定も尊重するには、forced-color-adjustを適用する範囲を限定することが有効です。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <title>部分的なカラーモード調整例</title>
    <style>
      body {
        background-color: black;
        color: white;
      }
      .important-text {
        background-color: yellow;
        color: black;
      }
      .protected {
        forced-color-adjust: none; /* カラーモードの影響を受けない */
      }
      .non-protected {
        forced-color-adjust: auto; /* カラーモードの影響を受ける */
      }
    </style>
  </head>
  <body>
    <p class="important-text protected">
      このテキストはカラーモードの影響を受けません。
    </p>
    <p class="important-text non-protected">
      このテキストはシステムのカラーモードの影響を受けます。
    </p>
  </body>
</html>

解説

  • .protectedクラスが付与されたテキストは、forced-color-adjust: none;により、システムによる色変更の影響を受けず、デザインされた色のまま表示されます。
  • .non-protectedクラスは、システムのカラーモード設定に従うため、ユーザーの設定によって色が変更される可能性があります。

forced-color-adjustの注意点

  • アクセシビリティの配慮
    forced-color-adjust: none;を設定することで、ユーザーの視覚補助設定を無視することになるため、アクセシビリティへの配慮が必要です。ユーザーが必要とする高コントラスト表示が無効になることで、見にくくなったり、情報が正しく伝わらない可能性があります。
  • 適用範囲の制御
    デザイン全体にforced-color-adjust: none;を適用するのではなく、デザイン的に重要な要素のみに限定することが望ましいです。アクセシビリティとデザインのバランスを取りながら、慎重に使用しましょう。
  • ブラウザのサポート
    forced-color-adjustの対応状況はブラウザによって異なります。最新のブラウザでは広くサポートされていますが、古いブラウザでは動作しない場合もありますので、対応状況を確認して使用してください。

まとめ

forced-color-adjustプロパティを使用することで、ウェブサイトの特定の要素が高コントラストモードなどの強制的なカラーモードの影響を受けないように調整できます。このプロパティはデザインの一貫性を保つための有用なツールですが、アクセシビリティの観点から慎重に使用することが求められます。適切な場面で活用し、ユーザーの視覚補助設定を尊重しながら最適なデザインを提供しましょう。