私は最近、prefers-color-scheme メディア機能と light-dark() color 関数を組み合わせて、Bear ブログにライト/ダーク モードの切り替えを実装しました。
これが私がやった方法です。
ステップ 1: CSS のセットアップ
CSS は、light-dark() color 関数など、過去数年間でいくつかの優れた新機能を追加しました。この関数を使用すると、任意の要素に 2 つの色 (ライト モード用とダーク モード用) を指定できます。
たとえば、ライト モードでは背景を白、ダーク モードでは黒にしたい場合は、次のように設定します。
body {
background-color: light-dark(#fff, #000);
}
このアプローチを、明るいモードと暗いモードで異なる色のニーズを持つすべての要素に適用しました。
ステップ 2: HTML を追加する
テーマの切り替えには、スイッチ、ラジオ ボタン、ドロップダウン メニューではなく、単一のアイコンを使用しました。ページは、反対のモードに切り替えるためのアイコンのみが表示された状態で読み込まれます。デフォルトのテーマがダークであるため、ダークモードのアイコンは最初は非表示で、ライトモードに切り替えるアイコンが表示されます。
onclick イベントは switchMode() 関数を呼び出します。この関数は、明るいテーマと暗いテーマの切り替えを処理します (詳細は後ほど)。 HTML の設定は次のとおりです:
<a id="preferdark" onclick="switchMode('dark')" style="display: none;">
<!-- Icon for switching to dark mode. -->
</a>
<a id="preferlight" onclick="switchMode('light')">
<!-- Icon for switching to light mode. -->
</a>
ステップ 3: JavaScript の作成
JavaScript は 2 つの主要なタスクを処理します:
- ユーザーがアイコンをクリックすると、ライト モードとダーク モードが切り替わります。
- ユーザーのテーマ設定を localStorage に保存し、今後のアクセス時に自動的にロードします。
JavaScript は 2 つの部分に分割されています。
のコードです。ページの読み込み時にテーマを設定し、