CSS辞書

light-dark()

レスポンシブ・関数

ライトモード用とダークモード用の2色を1行で指定できるCSS関数です。メディアクエリで変数を二重定義する従来のダークモード実装を大幅に簡潔にできます。使用にはcolor-scheme: light darkの指定が必須です。

構文

Syntax
light-dark(<light-color>, <dark-color>)

コード例

1

:root { color-scheme: light dark; } body { color: light-dark(#333, #eee); background: light-dark(#fff, #1a1a1a); }

ライト/ダーク両対応の文字色・背景色を1行ずつで定義

2

:root { color-scheme: light dark; --surface: light-dark(#f8f9fa, #202124); --text: light-dark(#212529, #e8eaed); } .card { background: var(--surface); color: var(--text); }

CSS変数と組み合わせてテーマトークンを定義

💡 TIPS

手動のテーマ切替ボタンと共存させる場合は、htmlにcolor-scheme: lightまたはdarkを上書きすればlight-dark()の結果も追従します。@media (prefers-color-scheme)による二重定義より保守が圧倒的に楽です。

⚠️ よくある間違い

color-scheme: light darkの指定を忘れると常にライト側の色が使われます。また色以外の値(サイズや画像URL)には使えません。色以外を切り替えたい場合は従来のメディアクエリやクラス切替を使います。

🤖 AIがよく間違えるポイント

AIはダークモード実装に「@media (prefers-color-scheme: dark)で変数を再定義する」冗長パターンを提案しがちですが、2024年以降はlight-dark()で1行に集約できます。AIが生成したlight-dark()が効かない場合、ほぼ確実にcolor-scheme: light darkの指定漏れです。また色以外の値に使おうとする誤生成にも注意してください。

💬 AIへの頼み方

このサイトのダークモード対応を、@mediaの二重定義ではなくlight-dark()とcolor-schemeで書き直して

ライト/ダーク対応のデザイントークン(背景・文字・ボーダー各3階調)をlight-dark()とCSS変数で設計して

手動テーマ切替ボタン(ライト/ダーク/システム準拠の3択)をlight-dark()ベースのCSSと最小限のJSで実装して

そのままAIチャットに貼り付けて使える依頼文の例です。ページ上部の「AI用にコピー」でこのページ全体をコンテキストとして渡せます。

関連プロパティ

ブラウザサポート

Baseline 新しく利用可能2024年5月〜)
Chrome
123+
Firefox
120+
Safari
17.5+
Edge
123+