ダークモード対応の CSS を書く

Recipe ID: front-009

OS の設定(ライトモード/ダークモード)に合わせて自動的に切り替わる CSS の書き方を解説します。
特別な JavaScript は不要で、標準の CSS メディアクエリを使用します。

実装方法

@media (prefers-color-scheme: dark) ブロック内にダークモード用のスタイルを記述します。

:root {
  /* デフォルト(ライトモード)の変数 */
  --bg-color: #ffffff;
  --text-color: #333333;
}

@media (prefers-color-scheme: dark) {
  :root {
    /* ダークモード用の変数 */
    --bg-color: #1a1a1a;
    --text-color: #f5f5f5;
  }
}

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