テーマの選択を保存
CoddyのHTMLジャーニー「JavaScriptの実践」セクションの一部。レッスン 17/27。
ユーザーがライトテーマとダークテーマを切り替えたとき、ウェブサイトに選択を記憶させたいと考えています。
そのために、JavaScriptでlocalStorageを使用します。これはブラウザーにデータを保存し、そのデータはページを再読み込みしたり、ブラウザーを閉じたりした後も残ります。
ロジックは次のとおりです。
- ユーザーがテーマを切り替えたとき、現在のテーマを
localStorageに保存します。 - ページの読み込み時に
localStorageを確認し、保存されているテーマを自動的に適用します。
HTML:
<button id="themeToggle">Toggle Theme</button>
CSS:
body.dark-mode {
background-color: #222;
color: #fff;
}このコードは、ユーザーが以前にダークテーマをlocalStorageに保存していたかどうかを確認し、ページの読み込み時にそれを適用します。
ボタンをクリックすると、ページのダークモードが切り替わり、その後、次回の訪問時にも設定が記憶されるようにlocalStorageが更新されます
const button = document.getElementById("themeToggle");
// ページ読み込み時に保存済みのテーマを適用
if (localStorage.getItem("theme") === "dark") {
document.body.classList.add("dark-mode");
}
button.addEventListener("click", function () {
document.body.classList.toggle("dark-mode");
// 設定を保存
if (document.body.classList.contains("dark-mode")) {
localStorage.setItem("theme", "dark");
} else {
localStorage.setItem("theme", "light");
}
});これにより、サイトへの訪問をまたいでユーザーの設定が維持されます。
チャレンジ
簡単ユーザーの設定を記憶するテーマ切り替え機能を作成します。
手順:
- ページ読み込み時: ユーザーが以前にダークモードを選択していたか確認します
- localStorage に "dark" が保存されている場合、body に "dark-mode" クラスを追加します
- 切り替えボタンがクリックされたとき: ライトテーマとダークテーマを切り替えます
- body 要素の "dark-mode" クラスを切り替えます
- 現在のテーマを localStorage に保存します
自分で試してみよう
<!DOCTYPE html>
<html>
<head>
<title>Theme Preference Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<button id="themeToggle">Toggle Theme</button>
<h1>Saving Theme Preference</h1>
<p>
Try switching between light and dark mode using the button above.
Refresh the page — your choice is remembered thanks to <strong>localStorage</strong>.
</p>
<script src="script.js"></script>
</body>
</html>
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
JavaScriptの実践のすべてのレッスン
自分で練習してみよう: Webプレイグラウンド