Wdrażaj tryb ciemny na swojej stronie internetowej dzięki temu kompleksowemu przewodnikowi. Dowiedz się o zapytaniach CSS media, przełącznikach JavaScript, kwestiach dostępności i najlepszych praktykach.
Implementacja trybu ciemnego: Kompleksowy przewodnik z CSS i JavaScript
Tryb ciemny staje się coraz bardziej popularny, oferując bardziej komfortowe wrażenia wizualne, szczególnie w słabo oświetlonych środowiskach. Ten przewodnik zawiera kompleksowy przegląd tego, jak wdrożyć tryb ciemny na swojej stronie internetowej za pomocą CSS i JavaScript, zapewniając bezproblemowe i dostępne doświadczenie użytkownika dla globalnej publiczności.
Dlaczego warto wdrożyć tryb ciemny?
Istnieje kilka przekonujących powodów, dla których warto rozważyć wdrożenie trybu ciemnego:
- Ulepszone doświadczenie użytkownika: Wielu użytkowników uważa, że tryb ciemny jest bardziej przyjazny dla oczu, redukując zmęczenie wzroku, szczególnie podczas przeglądania w nocy lub w słabo oświetlonych środowiskach. Jest to skierowane do globalnej publiczności o zróżnicowanych nawykach korzystania z ekranu i warunkach oświetleniowych.
- Dostępność: Tryb ciemny może poprawić dostępność dla użytkowników z wadami wzroku lub wrażliwością na światło. Zapewniając opcję o wysokim kontraście, sprawiasz, że Twoja strona internetowa jest bardziej inkluzywna.
- Żywotność baterii: Na urządzeniach z ekranami OLED lub AMOLED tryb ciemny może zmniejszyć zużycie energii, wydłużając żywotność baterii. Jest to szczególnie istotne dla użytkowników mobilnych w obszarach z ograniczonym dostępem do infrastruktury ładowania.
- Nowoczesny trend w projektowaniu: Tryb ciemny to popularny trend w projektowaniu, a jego wdrożenie może sprawić, że Twoja strona internetowa będzie wyglądać bardziej nowocześnie i atrakcyjnie. Zwiększa to postrzeganie marki i zaangażowanie użytkowników.
Metody wdrażania trybu ciemnego
Istnieje kilka podejść do wdrażania trybu ciemnego, z których każde ma swoje zalety i wady. Przyjrzymy się najpopularniejszym metodom:
- Zapytania CSS media (
prefers-color-scheme
): Ta metoda automatycznie wykrywa preferowany schemat kolorów użytkownika na podstawie ustawień jego systemu operacyjnego. - Przełącznik JavaScript: Ta metoda zapewnia ręczny przełącznik (np. przełącznik lub przycisk), który pozwala użytkownikom przełączać się między trybem jasnym i ciemnym.
- Połączenie zapytań media i JavaScript: To podejście łączy zalety obu metod, zapewniając automatyczne wykrywanie, a także umożliwiając użytkownikom zastąpienie preferencji systemowych.
1. Wdrażanie trybu ciemnego za pomocą zapytań CSS media
Zapytanie CSS media prefers-color-scheme
umożliwia wykrycie preferowanego schematu kolorów użytkownika i odpowiednie zastosowanie różnych stylów. Jest to najprostszy i najwydajniejszy sposób wdrożenia trybu ciemnego dla użytkowników, którzy już ustawili swoje preferencje systemowe.
Przykład kodu
Dodaj następujący kod CSS do swojego arkusza stylów:
/* Domyślny (Jasny) motyw */
body {
background-color: #fff;
color: #000;
}
/* Ciemny motyw */
@media (prefers-color-scheme: dark) {
body {
background-color: #222;
color: #fff;
}
/* Dostosuj inne elementy w razie potrzeby */
h1, h2, h3 {
color: #ddd;
}
a {
color: #8ab4f8;
}
}
Wyjaśnienie:
- Pierwszy blok CSS definiuje domyślne (jasne) style motywu.
- Blok
@media (prefers-color-scheme: dark)
stosuje style tylko wtedy, gdy system użytkownika jest ustawiony na tryb ciemny. - W bloku
@media
możesz zdefiniować style trybu ciemnego dla różnych elementów, takich jak tło i kolor tekstu, nagłówki i linki.
Zalety
- Automatyczne wykrywanie: Przeglądarka automatycznie wykrywa preferencje użytkownika, zapewniając bezproblemowe wrażenia.
- Prosta implementacja: Ta metoda wymaga minimalnego kodu i jest łatwa do wdrożenia.
- Wydajność: Zapytania CSS media są wydajnie obsługiwane przez przeglądarkę.
Wady
- Ograniczona kontrola: Użytkownicy nie mogą ręcznie przełączać się między trybem jasnym i ciemnym w obrębie Twojej witryny.
- Zależność od ustawień systemowych: Wygląd zależy wyłącznie od ustawień systemowych użytkownika, których może on nie być świadomy lub których nie jest w stanie zmienić.
2. Wdrażanie trybu ciemnego za pomocą przełącznika JavaScript
Użycie przełącznika JavaScript zapewnia użytkownikom ręczny przełącznik do kontrolowania motywu witryny. Daje to użytkownikom większą kontrolę i pozwala im zastąpić preferencje systemowe. To podejście ma kluczowe znaczenie dla obsługi użytkowników na różnych urządzeniach i platformach, które mogą nie obsługiwać spójnie ani nie ujawniać ustawień trybu ciemnego w całym systemie.
Struktura HTML
Najpierw dodaj element przełącznika do swojego kodu HTML:
<label class="switch">
<input type="checkbox" id="darkModeToggle">
<span class="slider round"></span>
</label>
Powoduje to utworzenie prostego przełącznika za pomocą pola wyboru i niestandardowego stylu CSS.
Stylizacja CSS (opcjonalna)
Możesz wystylizować przełącznik za pomocą CSS. Oto przykład:
.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);
}
/* Zaokrąglone suwaki */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
Kod JavaScript
Teraz dodaj następujący kod JavaScript, aby obsłużyć funkcjonalność przełączania:
const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;
// Funkcja przełączania trybu ciemnego
function toggleDarkMode() {
body.classList.toggle('dark-mode');
// Zapisz preferencje użytkownika w localStorage
if (body.classList.contains('dark-mode')) {
localStorage.setItem('darkMode', 'enabled');
} else {
localStorage.setItem('darkMode', 'disabled');
}
}
// Sprawdź localStorage pod kątem zapamiętanych preferencji
if (localStorage.getItem('darkMode') === 'enabled') {
body.classList.add('dark-mode');
darkModeToggle.checked = true;
}
// Dodaj detektor zdarzeń do przełącznika
darkModeToggle.addEventListener('change', toggleDarkMode);
Wyjaśnienie:
- Kod pobiera element przełącznika i element body.
- Funkcja
toggleDarkMode
przełącza klasędark-mode
w elemencie body. - Kod używa
localStorage
do przechowywania preferencji użytkownika, dzięki czemu jest on zachowywany w sesjach. - Kod sprawdza
localStorage
podczas ładowania strony, aby zastosować zapamiętane preferencje. - Do przełącznika dodawany jest detektor zdarzeń, dzięki czemu funkcja
toggleDarkMode
jest wywoływana po kliknięciu przełącznika.
Stylizacja CSS dla trybu ciemnego (z użyciem klasy)
Zaktualizuj swój kod CSS, aby użyć klasy dark-mode
do zastosowania stylów motywu ciemnego:
/* Domyślny (Jasny) motyw */
body {
background-color: #fff;
color: #000;
}
/* Ciemny motyw */
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;
}
Zalety
- Kontrola użytkownika: Użytkownicy mogą ręcznie przełączać się między trybem jasnym i ciemnym w obrębie Twojej witryny.
- Trwałość: Preferencje użytkownika są zapisywane za pomocą
localStorage
, dzięki czemu są zachowywane w sesjach.
Wady
- Bardziej złożona implementacja: Ta metoda wymaga więcej kodu niż użycie samych zapytań CSS media.
- Zależność od JavaScript: Funkcja przełączania zależy od włączenia JavaScript w przeglądarce użytkownika.
3. Połączenie zapytań media i JavaScript
Najlepszym podejściem jest często połączenie zapytań CSS media i przełącznika JavaScript. Zapewnia to to, co najlepsze z obu światów: automatyczne wykrywanie preferowanego schematu kolorów użytkownika, a jednocześnie umożliwia użytkownikom ręczne zastępowanie preferencji systemowych. Jest to skierowane do szerszej grupy odbiorców, w tym osób, które mogą nie być świadome lub nie być w stanie zmienić ustawień motywu w całym systemie.
Przykład kodu
Użyj tego samego kodu HTML i CSS z przykładu przełącznika JavaScript. Zmodyfikuj kod JavaScript, aby sprawdzić preferencje systemu:
const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;
// Funkcja przełączania trybu ciemnego
function toggleDarkMode() {
body.classList.toggle('dark-mode');
// Zapisz preferencje użytkownika w localStorage
if (body.classList.contains('dark-mode')) {
localStorage.setItem('darkMode', 'enabled');
} else {
localStorage.setItem('darkMode', 'disabled');
}
}
// Sprawdź localStorage pod kątem zapamiętanych preferencji, a następnie preferencji systemowych
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;
}
// Dodaj detektor zdarzeń do przełącznika
darkModeToggle.addEventListener('change', toggleDarkMode);
Wyjaśnienie:
- Kod najpierw sprawdza
localStorage
pod kątem zapisanych preferencji. - Jeśli w
localStorage
nie znaleziono żadnych preferencji, sprawdza, czy system użytkownika preferuje tryb ciemny za pomocąwindow.matchMedia
. - Jeśli system preferuje tryb ciemny, do elementu body dodawana jest klasa
dark-mode
, a przełącznik jest zaznaczony.
Zalety
- Automatyczne wykrywanie i kontrola użytkownika: Zapewnia zarówno automatyczne wykrywanie, jak i ręczne sterowanie.
- Trwałość: Preferencje użytkownika są zapisywane za pomocą
localStorage
.
Wady
- Nieco bardziej złożone: Ta metoda jest nieco bardziej złożona niż użycie którejkolwiek z metod osobno.
- Zależność od JavaScript: Opiera się na włączonym JavaScript.
Kwestie dostępności
Podczas wdrażania trybu ciemnego kluczowe jest uwzględnienie kwestii dostępności, aby zapewnić, że Twoja witryna pozostanie użyteczna dla wszystkich użytkowników. Pamiętaj, że samo odwrócenie kolorów nie gwarantuje automatycznie dostępności. Oto kilka kluczowych kwestii:
- Kontrast kolorów: Zapewnij wystarczający kontrast kolorów między tekstem a tłem zarówno w trybie jasnym, jak i ciemnym. Używaj narzędzi takich jak WebAIM's Contrast Checker (webaim.org/resources/contrastchecker/), aby sprawdzić, czy Twoje kombinacje kolorów spełniają standardy dostępności. Jest to szczególnie ważne dla użytkowników słabowidzących.
- Wskaźniki fokusu: Upewnij się, że wskaźniki fokusu są wyraźnie widoczne zarówno w trybie jasnym, jak i ciemnym, aby użytkownicy nawigujący za pomocą klawiatury mogli łatwo zobaczyć, który element jest aktualnie w fokusie.
- Obrazy i ikony: Rozważ, jak obrazy i ikony będą wyglądać w trybie ciemnym. Być może trzeba będzie udostępnić alternatywne wersje lub użyć filtrów CSS, aby dostosować ich kolory w celu uzyskania optymalnej widoczności.
- Testowanie użytkowników: Przetestuj wdrożenie trybu ciemnego z użytkownikami z różnymi wadami wzroku, aby zidentyfikować i rozwiązać wszelkie problemy z dostępnością.
Najlepsze praktyki wdrażania trybu ciemnego
Oto kilka najlepszych praktyk, których należy przestrzegać podczas wdrażania trybu ciemnego na swojej stronie internetowej:
- Używaj zmiennych CSS (właściwości niestandardowe): Zmienne CSS pozwalają zdefiniować kolory i inne style w centralnej lokalizacji, co ułatwia zarządzanie motywem i jego aktualizację.
- Dokładnie testuj: Przetestuj wdrożenie trybu ciemnego na różnych urządzeniach i przeglądarkach, aby zapewnić spójność.
- Zapewnij wyraźny przełącznik: Ułatw znalezienie i użycie przełącznika. Użyj wyraźnej i intuicyjnej ikony, aby wskazać jego funkcję.
- Uwzględnij preferencje użytkowników: Szanuj preferencje użytkownika i zapisuj je za pomocą
localStorage
lub plików cookie. - Utrzymuj spójność: Upewnij się, że wdrożenie trybu ciemnego jest spójne w całej Twojej witrynie.
Przykład: zmienne CSS do motywów
Zmienne CSS ułatwiają przełączanie między motywami jasnymi i ciemnymi. Zdefiniuj zmienne w pseudoklasie :root
:
: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;
}
Teraz, po dodaniu klasy dark-mode
do elementu body, zmienne CSS są aktualizowane, a style są automatycznie stosowane.
Wnioski
Wdrożenie trybu ciemnego może znacznie poprawić wrażenia użytkownika ze swojej strony internetowej, poprawić dostępność, a nawet zaoszczędzić żywotność baterii. Postępując zgodnie z technikami i najlepszymi praktykami opisanymi w tym przewodniku, możesz stworzyć bezproblemową i przyjemną obsługę trybu ciemnego dla swoich użytkowników na całym świecie.
Pamiętaj, aby dać pierwszeństwo dostępności i dokładnie przetestować implementację, aby zapewnić, że Twoja strona internetowa pozostanie użyteczna dla wszystkich użytkowników, niezależnie od ich preferencji lub zdolności wizualnych.
Dzięki przemyślanemu wdrożeniu trybu ciemnego nie tylko podążasz za trendem, ale także tworzysz bardziej inkluzywne i przyjazne dla użytkownika wrażenia w sieci dla globalnej publiczności. To poświęcenie dla doświadczenia użytkownika może przynieść korzyści ogólnej wydajności i atrakcyjności Twojej strony internetowej.