テック技報最新号へ →
CSS

ダークテーマでは color-scheme も指定してフォーム部品・スクロールバーを暗くする

背景や文字色を暗くするだけではブラウザ標準の input・select・チェックボックス・スクロールバーは明るいままなので、color-scheme: dark(システム追従なら light dark)でブラウザにも「暗いページ」だと伝える。

@aviralj02 · 2026-10-18
#ダークモード#color-scheme#フォーム#スクロールバー#light-dark

どんな時に使う?

  • [data-theme="dark"] のようなクラス/属性でダークモードを切り替えていて、テキスト入力欄やセレクトだけ白く浮いてしまう時
  • スクロールバー、日付ピッカー、オートフィルの背景など、CSS で直接スタイルしにくい「ブラウザが描く部分」までまとめて暗くしたい時

コード

css
/* テーマを手動で切り替える場合: ダークテーマ側で宣言 */
[data-theme="dark"] {
  color-scheme: dark;
}
[data-theme="light"] {
  color-scheme: light;
}

/* OS の設定に追従するだけなら1行で両対応 */
:root {
  color-scheme: light dark;
}
  • color-scheme は「このページ(要素)はどの配色で描いてよいか」をブラウザに伝えるプロパティ。dark を含めると、フォーム部品・スクロールバー・Canvas などのシステムカラー、既定の背景色と文字色がダーク用に切り替わる。
  • light dark と並べると、ユーザーの OS 設定(prefers-color-scheme)に合わせてブラウザが選ぶ。
  • 要素単位でも指定できるので、ページ全体はライトのまま「この黒いパネルの中だけダーク」もできる。
  • 自前の色も同じ切り替えに乗せたい時は、color-scheme を指定したうえで color: light-dark(#111, #eee); のように light-dark() 関数を使うと、メディアクエリを書かずに済む。

注意点・対応状況

出典

X の元の投稿を開く