Menu
Coddy logo textTech

Salvar escolha do tema

Parte da seção JavaScript in Action do Journey de HTML da Coddy. Lição 17 de 27.

Quando os usuários alternam entre os temas claro e escuro, queremos que o site lembre-se de sua escolha.
Para isso, usamos <strong>localStorage</strong> no JavaScript. Ele armazena dados no navegador, e esses dados permanecem mesmo após a página ser atualizada ou o navegador ser fechado.

A lógica é:

  1. Quando o usuário alternar o tema, salve o tema atual no localStorage.
  2. Quando a página carregar, verifique o localStorage e aplique o tema salvo automaticamente.

HTML:

<button id="themeToggle">Toggle Theme</button>

CSS:

body.dark-mode {
  background-color: #222;
  color: #fff;
}

Este código verifica se o usuário salvou anteriormente um tema escuro no localStorage e o aplica quando a página é carregada.

Quando o botão é clicado, ele alterna o modo escuro na página e, em seguida, atualiza o localStorage para que a preferência seja lembrada na próxima visita

const button = document.getElementById("themeToggle");

// Aplica o tema salvo ao carregar a página
if (localStorage.getItem("theme") === "dark") {
  document.body.classList.add("dark-mode");
}

button.addEventListener("click", function () {
  document.body.classList.toggle("dark-mode");

  // Salva a preferência
  if (document.body.classList.contains("dark-mode")) {
    localStorage.setItem("theme", "dark");
  } else {
    localStorage.setItem("theme", "light");
  }
});

Isso garante que a preferência do usuário seja mantida em todas as visitas ao seu site.

challenge icon

Desafio

Fácil

Crie um alternador de tema que lembre a preferência do usuário.

Passos:

  1. Ao carregar a página: Verifique se o usuário selecionou anteriormente o modo escuro
    1. Se "dark" estiver salvo no localStorage, adicione a classe "dark-mode" ao body
  2. Quando o botão de alternância for clicado: Alterne entre os temas claro e escuro
    1. Alterne a classe "dark-mode" no elemento body
    2. Salve o tema atual no localStorage

Experimente você mesmo

<!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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de JavaScript in Action

Pratique por conta própria: Playground de Web