Guardar la elección del tema
Parte de la sección JavaScript en Acción del Journey de HTML de Coddy. Lección 17 de 27.
Cuando los usuarios cambian entre los temas claro y oscuro, queremos que el sitio web recuerde su elección.
Para ello, usamos localStorage en JavaScript. Almacena datos en el navegador, y estos datos permanecen incluso después de actualizar la página o cerrar el navegador.
La lógica es:
- Cuando el usuario cambia el tema, guarda el tema actual en
localStorage. - Cuando se carga la página, comprueba
localStoragey aplica automáticamente el tema guardado.
HTML:
<button id="themeToggle">Toggle Theme</button>
CSS:
body.dark-mode {
background-color: #222;
color: #fff;
}Este código comprueba si el usuario guardó previamente un tema oscuro en localStorage y lo aplica cuando se carga la página.
Cuando se hace clic en el botón, activa o desactiva el modo oscuro en la página y después actualiza localStorage para que la preferencia se recuerde en la próxima visita
const button = document.getElementById("themeToggle");
// Aplica el tema guardado al cargar la página
if (localStorage.getItem("theme") === "dark") {
document.body.classList.add("dark-mode");
}
button.addEventListener("click", function () {
document.body.classList.toggle("dark-mode");
// Guarda la preferencia
if (document.body.classList.contains("dark-mode")) {
localStorage.setItem("theme", "dark");
} else {
localStorage.setItem("theme", "light");
}
});Esto garantiza que se mantenga la preferencia del usuario entre visitas a tu sitio.
Desafío
FácilCrea un selector de tema que recuerde la preferencia del usuario.
Pasos:
- Al cargar la página: Comprueba si el usuario seleccionó anteriormente el modo oscuro
- Si se guardó "dark" en localStorage, añade la clase "dark-mode" al body
- Al hacer clic en el botón de alternancia: Cambia entre los temas claro y oscuro
- Alterna la clase "dark-mode" en el elemento body
- Guarda el tema actual en localStorage
Pruébalo tú mismo
<!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>
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de JavaScript en Acción
1Interactividad/Componentes de UI
PestañasAcordeón (expandir/contraer)Modal (abrir/cerrar)Menú desplegable7Animaciones y efectos
Transiciones CSSAnimar elementos al desplazarseAnimaciones al hacer clic en botonesPractica por tu cuenta: Playground de Web