ダークモードトグル(永続化つき)

インタラクション Medium #js #css #theme #localStorage #dark-mode

ボタンクリックで明暗テーマを切替、localStorage で次回訪問時も状態を保持する完全実装のダークモードトグル。

▶ プレビュー

解説

ダークモードトグル(永続化つき)は、インタラクションカテゴリの「ダークモード」に分類される実装パターンです。CSS と JavaScript の組み合わせで構成され、難易度は中級レベル。

ボタンクリックで明暗テーマを切替、localStorage で次回訪問時も状態を保持する完全実装のダークモードトグル。

仕組み

下記コードタブから HTML / CSS / JS をそれぞれ確認・コピーできます。プレビュー領域では実際の動作をその場で確認可能です。

CSS プロパティだけで完結しているため、フレームワーク非依存・軽量に組み込めます。React / Vue / Astro / 静的 HTML どれにも持ち込み可能です。

JavaScript 部分は vanilla(プレーン)JS で書かれており、jQuery / React / Vue いずれの環境にも持ち込めます。

注意点 / カスタマイズ時のポイント

クラス名は BEM 命名で prefix を付けてあるため、既存サイトに貼り付けても CSS が衝突しにくくなっています。色や余白は CSS カスタムプロパティに切り出してデザインシステム化することも可能です。

使用例・適したシーン

  • ブログ・記事サイト
  • ダッシュボード
  • コードドキュメント

よくある質問

このスニペットは商用利用できますか?
はい。moatway がオリジナルで制作したスニペットは商用・個人問わず自由にご利用いただけます。クレジット表記も不要です。
そのまま貼り付ければ動きますか?
はい。HTML / CSS / JS タブのコードをそれぞれ自分のファイルにコピーして貼り付ければ動きます。クラス名が他の CSS と衝突しないよう、必要に応じてリネームしてください。
ブラウザ対応は?
最新 2 世代の Chrome / Safari / Firefox / Edge で動作確認しています。Internet Explorer はサポート対象外です。
jQuery でも書けますか?
この実装は vanilla JavaScript で書いています。jQuery が必要であれば document.querySelector$() に置き換える程度で動作しますが、近年は jQuery を使わない方が軽量で推奨されます。
追加日:2026-05-11
← すべてのスニペットへ戻る