Newly available 条件付きOK。color-scheme の宣言が前提。主要ブラウザで対応済み。ダークモード実装の新しいベストプラクティスとして注目。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
123
123
120
17.5
123
17.5
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)

基本構文

CSS
:root {
  color-scheme: light dark;

  --bg: light-dark(#ffffff, #1a1a2e);
  --text: light-dark(#1a1a2e, #e0e0e0);
  --border: light-dark(#d1d5db, #374151);
  --accent: light-dark(#2563eb, #60a5fa);
}

body {
  background-color: var(--bg);
  color: var(--text);
}

.card {
  border: 1px solid var(--border);
}

ライブデモ

lightmode stylecard

light-dark() function lightmode stylecard demo.

プレビュー全画面表示

Dark-mode Stylecard

light-dark() function Dark-mode stylecard demo.

プレビュー全画面表示

aksentcol-toggle

light-dark() function aksentcol-toggle demo.

プレビュー全画面表示

実務での使いどころ

  • シンプルなダークモード実装

    メディアクエリを使わずに、カスタムプロパティの定義内でライト/ダーク両方の色を宣言できる。

  • コンポーネント単位の色定義

    コンポーネントごとに独立したライト/ダーク色を light-dark() で定義し、テーマの管理を簡素化する。

注意点

  • color-scheme プロパティが宣言されていないと機能しない。:root に color-scheme: light dark を必ず指定すること。
  • light-dark() は color プロパティ値専用。色以外の値(padding や font-size など)には使えない。

フォールバック戦略

CSS
/* 非対応ブラウザ用フォールバック */
:root {
  --bg: #ffffff;
  --text: #1a1a2e;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1a1a2e;
    --text: #e0e0e0;
  }
}

アクセシビリティ

  • ダークモードの色でも十分なコントラスト比を確保すること。ライトとダークの両方でコントラスト比を検証する。