← Taso 2 – Velho

Oppitunti 4/8 ⏱ 30 minuuttia

Tumma tila verkkosivullesi

Vaalea/tumma teeman vaihtaja jonka verkkosivu muistaa vaikka suljet selaimen.

Miten se toimii

Tumma tila on loitsu kahdesta osasta:

  1. CSS valmistaa toisen “puvun” – säännöt jotka pätevät vain kun sivulla on luokka dark.
  2. JavaScript lisää tai poistaa luokan klikkauksella. Ja se kirjoittaa valintasi selaimen muistiin, joten se pätee huomennakin.

Näytän sinulle: tumma puku CSS:ssä

Lisää tämä style.css:n loppuun:

body.dark {
  background-color: #1c1917;
  color: #f5f0ea;
}

body.dark h1,
body.dark h2 {
  color: #93c5fd;
}

body.dark .card {
  background-color: #292524;
  color: #f5f0ea;
}

Lue se näin: “Kun body:lla on luokka dark, nämä säännöt pätevät.” Ilman luokkaa mitään tästä ei käytetä.

💡

Säädä värit sopimaan verkkosivuusi – käy CSS:si läpi ja keksi tumma sisar jokaiselle vaalealle värille. Sääntö pysyy samana: tumma tausta → vaalea teksti.

Näytän sinulle: kytkin JavaScriptissä

Lisää painike headeriin (<nav>:n sisään):

<button id="switch">🌙</button>

Ja script.js:ään:

const switchButton = document.getElementById("switch");

// When the page loads: remember what the visitor picked last time
if (localStorage.getItem("mode") === "dark") {
  document.body.classList.add("dark");
  switchButton.textContent = "☀️";
}

switchButton.addEventListener("click", () => {
  document.body.classList.toggle("dark");

  if (document.body.classList.contains("dark")) {
    localStorage.setItem("mode", "dark");
    switchButton.textContent = "☀️";
  } else {
    localStorage.setItem("mode", "light");
    switchButton.textContent = "🌙";
  }
});

Kolme uutta asiaa:

Nyt sinun vuorosi 💪

  1. Lisää tumma puku omaan style.css:ääsi – käy kaikki värisi läpi (tausta, header, kortit, footer, merkit) ja anna niille tummat versiot body.dark:n alla.
  2. Lisää kytkinpainike headeriin jokaiselle sivulle ja koodi script.js:ään.
  3. Kokeile: vaihda tummaan, sulje selain, avaa verkkosivu uudelleen – sen pitäisi avautua suoraan tummaan tilaan.
Esimerkki täydellisemmästä tummasta puvusta (säädä värit projektiisi)
body.dark {
  background-color: #1c1917;
  color: #f5f0ea;
}

body.dark h1,
body.dark h2,
body.dark h3 {
  color: #93c5fd;
}

body.dark header {
  background-color: #0f172a;
}

body.dark .card {
  background-color: #292524;
  color: #f5f0ea;
  box-shadow: none;
}

body.dark footer {
  background-color: #0f172a;
}

body.dark a {
  color: #93c5fd;
}

Tarkista itse: 🌙-klikkaus tummentaa verkkosivun (ja kuvake vaihtuu ☀️:ksi), ☀️-klikkaus vaalentaa taas. Selaimen sulkemisen ja uudelleenavaamisen jälkeen verkkosivu muistaa valintasi. Tämä on ominaisuus jota monilla “aikuisten” verkkosivuilla ei edes ole!

Mitä opit tästä oppitunnista