Menu
CoddyTech

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:

  1. Cuando el usuario cambia el tema, guarda el tema actual en localStorage.
  2. Cuando se carga la página, comprueba localStorage y 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.

challenge icon

Desafío

Fácil

Crea un selector de tema que recuerde la preferencia del usuario.

Pasos:

  1. Al cargar la página: Comprueba si el usuario seleccionó anteriormente el modo oscuro
    1. Si se guardó "dark" en localStorage, añade la clase "dark-mode" al body
  2. Al hacer clic en el botón de alternancia: Cambia entre los temas claro y oscuro
    1. Alterna la clase "dark-mode" en el elemento body
    2. 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>
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Web