Fiszka: light / dark mode w CSS
Automatyczne odwracanie kolorów strony
1. Najlepsza metoda
CSS variables + klasa .dark
Najczyściej robi się to tak, że definiujesz kolory w :root, a dla trybu ciemnego
nadpisujesz je w body.dark. Wtedy cała strona zmienia się jednym kliknięciem.
:root {
--bg: #ffffff;
--text: #000000;
}
body.dark {
--bg: #000000;
--text: #ffffff;
}
body {
background: var(--bg);
color: var(--text);
}
2. Jak to działa praktycznie
Jasny tryb
Ustawiasz białe tło, czarny tekst, jasne karty i delikatne obramowania.
Ciemny tryb
Podmieniasz tylko wartości zmiennych. Cała reszta styli zostaje taka sama.
Największa zaleta
Jedna struktura HTML, jeden CSS, a dwa wyglądy strony bez przepisywania wszystkiego.
3. Kod dla Twojego projektu
Wersja bazowa
:root {
--bg: #ffffff;
--text: #000000;
--card: #ffffff;
--line: #dddddd;
}
body.dark {
--bg: #0f1115;
--text: #eef2f7;
--card: #171a21;
--line: #2d3442;
}
body {
background: var(--bg);
color: var(--text);
}
.card {
background: var(--card);
border: 1px solid var(--line);
}
4. Przycisk słoneczko / księżyc
JavaScript
const btn = document.getElementById('themeToggle');
btn.addEventListener('click', () => {
document.body.classList.toggle('dark');
});
Tyle wystarczy, żeby przełączać motyw. U mnie na górze tej strony to właśnie działa.
5. Automatyczne dopasowanie do systemu
prefers-color-scheme
Możesz też sprawdzać, czy użytkownik ma w systemie ustawiony ciemny motyw i automatycznie go włączyć.
@media (prefers-color-scheme: dark) {
body {
}
}
6. Metoda brutalna: negatyw strony
filter: invert(1)
html {
filter: invert(1);
}
Technicznie działa, ale odwraca też zdjęcia, logo i inne grafiki. Dlatego zwykle się tego nie używa.
7. Mała demonstracja
Białe tło, czarny tekst, spokojny wygląd, dobry do czytania i dokumentacji.
Ciemne tło, jasny tekst, często wygodny w panelach, edytorach i narzędziach roboczych.