Hrvatski

Implementirajte tamni način rada na svojoj web stranici uz ovaj sveobuhvatni vodič. Naučite o CSS media upitima, JavaScript preklopnicima, pristupačnosti i najboljim praksama.

Implementacija tamnog načina rada: Sveobuhvatan vodič uz CSS i JavaScript

Tamni način rada (dark mode) postao je sve popularniji, nudeći ugodnije iskustvo gledanja, osobito u uvjetima slabog osvjetljenja. Ovaj vodič pruža sveobuhvatan pregled kako implementirati tamni način rada na vašoj web stranici pomoću CSS-a i JavaScripta, osiguravajući besprijekorno i pristupačno korisničko iskustvo za globalnu publiku.

Zašto implementirati tamni način rada?

Postoji nekoliko uvjerljivih razloga za razmatranje implementacije tamnog načina rada:

Metode za implementaciju tamnog načina rada

Postoji nekoliko pristupa implementaciji tamnog načina rada, svaki sa svojim prednostima i nedostacima. Istražit ćemo najčešće metode:

1. Implementacija tamnog načina rada pomoću CSS Media upita

CSS media upit prefers-color-scheme omogućuje vam da detektirate korisnikovu preferiranu shemu boja i primijenite različite stilove u skladu s tim. Ovo je najjednostavniji i najučinkovitiji način implementacije tamnog načina rada za korisnike koji su već postavili svoje sistemske preferencije.

Primjer koda

Dodajte sljedeći CSS u svoju stilsku datoteku:

/* Zadana (Svijetla) tema */
body {
  background-color: #fff;
  color: #000;
}

/* Tamna tema */
@media (prefers-color-scheme: dark) {
  body {
    background-color: #222;
    color: #fff;
  }
  /* Prilagodite ostale elemente prema potrebi */
  h1, h2, h3 {
    color: #ddd;
  }
  a {
    color: #8ab4f8;
  }
}

Objašnjenje:

Prednosti

Nedostaci

2. Implementacija tamnog načina rada pomoću JavaScript preklopnika

Korištenje JavaScript preklopnika pruža korisnicima ručni prekidač za kontrolu teme web stranice. To korisnicima daje veću kontrolu i omogućuje im da nadjačaju svoje sistemske postavke. Ovaj pristup je ključan za opsluživanje korisnika na različitim uređajima i platformama koje možda ne podržavaju ili ne izlažu dosljedno sistemske postavke tamnog načina rada.

HTML struktura

Prvo, dodajte element preklopnika u svoj HTML:

<label class="switch">
  <input type="checkbox" id="darkModeToggle">
  <span class="slider round"></span>
</label>

Ovo stvara jednostavan preklopni prekidač koristeći potvrdni okvir i nešto prilagođenog CSS stila.

CSS stiliziranje (Opcionalno)

Možete stilizirati preklopni prekidač pomoću CSS-a. Evo primjera:

.switch {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  -webkit-transition: .4s;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  -webkit-transition: .4s;
  transition: .4s;
}

input:checked + .slider {
  background-color: #2196F3;
}

input:focus + .slider {
  box-shadow: 0 0 1px #2196F3;
}

input:checked + .slider:before {
  -webkit-transform: translateX(26px);
  -ms-transform: translateX(26px);
  transform: translateX(26px);
}

/* Zaobljeni klizači */
.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}

JavaScript kod

Sada, dodajte sljedeći JavaScript kod za rukovanje funkcionalnošću preklopnika:

const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;

// Funkcija za prebacivanje tamnog načina rada
function toggleDarkMode() {
  body.classList.toggle('dark-mode');

  // Pohranite korisnikove preferencije u localStorage
  if (body.classList.contains('dark-mode')) {
    localStorage.setItem('darkMode', 'enabled');
  } else {
    localStorage.setItem('darkMode', 'disabled');
  }
}

// Provjerite localStorage za spremljene preferencije
if (localStorage.getItem('darkMode') === 'enabled') {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
}

// Dodajte event listener na preklopnik
darkModeToggle.addEventListener('change', toggleDarkMode);

Objašnjenje:

CSS stiliziranje za tamni način rada (pomoću klase)

Ažurirajte svoj CSS da koristi klasu dark-mode za primjenu stilova tamne teme:

/* Zadana (Svijetla) tema */
body {
  background-color: #fff;
  color: #000;
}

/* Tamna tema */
body.dark-mode {
  background-color: #222;
  color: #fff;
}

body.dark-mode h1, body.dark-mode h2, body.dark-mode h3 {
  color: #ddd;
}

body.dark-mode a {
  color: #8ab4f8;
}

Prednosti

Nedostaci

3. Kombiniranje Media upita i JavaScripta

Najbolji pristup često je kombiniranje CSS media upita i JavaScript preklopnika. To pruža najbolje od oba svijeta: automatsku detekciju korisnikove preferirane sheme boja, istovremeno omogućavajući korisnicima da ručno nadjačaju sistemske postavke. To odgovara široj publici, uključujući one koji možda nisu svjesni ili ne mogu promijeniti svoje postavke teme na razini sustava.

Primjer koda

Koristite isti HTML i CSS iz primjera s JavaScript preklopnikom. Izmijenite JavaScript da provjerava sistemske postavke:

const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;

// Funkcija za prebacivanje tamnog načina rada
function toggleDarkMode() {
  body.classList.toggle('dark-mode');

  // Pohranite korisnikove preferencije u localStorage
  if (body.classList.contains('dark-mode')) {
    localStorage.setItem('darkMode', 'enabled');
  } else {
    localStorage.setItem('darkMode', 'disabled');
  }
}

// Provjerite localStorage za spremljene preferencije, zatim sistemske preferencije
if (localStorage.getItem('darkMode') === 'enabled') {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
} else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
}

// Dodajte event listener na preklopnik
darkModeToggle.addEventListener('change', toggleDarkMode);

Objašnjenje:

Prednosti

Nedostaci

Razmatranja o pristupačnosti

Pri implementaciji tamnog načina rada, ključno je uzeti u obzir pristupačnost kako bi se osiguralo da vaša web stranica ostane upotrebljiva za sve korisnike. Zapamtite da jednostavno invertiranje boja ne jamči automatski pristupačnost. Evo nekoliko ključnih razmatranja:

Najbolje prakse za implementaciju tamnog načina rada

Evo nekoliko najboljih praksi koje treba slijediti pri implementaciji tamnog načina rada na vašoj web stranici:

Primjer: Korištenje CSS varijabli za teme

CSS varijable olakšavaju prebacivanje između tema svijetlog i tamnog načina rada. Definirajte varijable u :root pseudo-klasi:

:root {
  --bg-color: #fff;
  --text-color: #000;
  --link-color: #007bff;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

a {
  color: var(--link-color);
}

body.dark-mode {
  --bg-color: #222;
  --text-color: #fff;
  --link-color: #8ab4f8;
}

Sada, kada se klasa dark-mode doda na tijelo stranice, CSS varijable se ažuriraju, a stilovi se automatski primjenjuju.

Zaključak

Implementacija tamnog načina rada može značajno poboljšati korisničko iskustvo vaše web stranice, poboljšati pristupačnost pa čak i uštedjeti trajanje baterije. Slijedeći tehnike i najbolje prakse navedene u ovom vodiču, možete stvoriti besprijekorno i ugodno iskustvo tamnog načina rada za svoje korisnike diljem svijeta.

Ne zaboravite dati prioritet pristupačnosti i temeljito testirati svoju implementaciju kako biste osigurali da vaša web stranica ostane upotrebljiva za sve korisnike, bez obzira na njihove preferencije ili vizualne sposobnosti.

Promišljenom implementacijom tamnog načina rada ne samo da pratite trend, već stvarate i inkluzivnije i korisnički prihvatljivije web iskustvo za globalnu publiku. Ova posvećenost korisničkom iskustvu može uvelike koristiti ukupnim performansama i privlačnosti vaše web stranice.