Odkryj moc zapytań medialnych CSS i właściwości niestandardowych, aby tworzyć automatyczne jasne i ciemne motywy, które dostosowują się do preferencji użytkownika, poprawiając dostępność i atrakcyjność wizualną dla globalnej publiczności.
Funkcja CSS light-dark(): Automatyczne dostosowywanie motywu dla globalnej sieci
W dzisiejszym globalnie połączonym świecie strony internetowe muszą być dostępne i atrakcyjne wizualnie dla użytkowników o różnym pochodzeniu i preferencjach. Jednym z najskuteczniejszych sposobów na osiągnięcie tego jest automatyczna adaptacja motywu, a w szczególności oferowanie zarówno jasnych, jak i ciemnych motywów, które dostosowują się do ustawień systemowych użytkownika. Ten wpis na blogu poprowadzi Cię przez proces implementacji tej funkcjonalności przy użyciu zapytań medialnych CSS i właściwości niestandardowych, zapewniając płynne i komfortowe przeglądanie dla Twojej międzynarodowej publiczności.
Dlaczego warto wdrażać automatyczne jasne i ciemne motywy?
Istnieje kilka istotnych powodów, dla których warto włączyć automatyczną adaptację motywu do swoich projektów internetowych:
- Poprawione doświadczenie użytkownika (UX): Użytkownicy często mają silne preferencje co do jasnych lub ciemnych motywów. Uszanowanie ich ustawień systemowych pozwala im przeglądać Twoją stronę w sposób, który jest dla nich naturalny i komfortowy. Jest to szczególnie ważne dla użytkowników spędzających długie godziny przed ekranem, ponieważ ciemne motywy mogą zmniejszać zmęczenie oczu w warunkach słabego oświetlenia.
- Lepsza dostępność: Jasne i ciemne motywy mogą znacznie poprawić dostępność dla użytkowników z wadami wzroku. Tryby o wysokim kontraście mogą ułatwić czytanie tekstu, podczas gdy ciemne motywy mogą zredukować odblaski i poprawić czytelność dla użytkowników z nadwrażliwością na światło.
- Nowoczesne projektowanie stron internetowych: Wdrożenie jasnych i ciemnych motywów świadczy o zaangażowaniu w nowoczesne zasady projektowania stron internetowych i podejście zorientowane na użytkownika. Pokazuje to, że zależy Ci na zapewnieniu dopracowanego i elastycznego doświadczenia.
- Zmniejszone zmęczenie oczu: Szczególnie istotne dla użytkowników w regionach, gdzie praca przed komputerem trwa wiele godzin (np. w wielu krajach azjatyckich). Ciemny motyw złagodzi obciążenie ich oczu.
- Oszczędność baterii: Na urządzeniach z ekranami OLED ciemne motywy mogą oszczędzać energię baterii, zmniejszając ilość emitowanego światła. Jest to istotne dla użytkowników na całym świecie, zwłaszcza tych korzystających z urządzeń mobilnych o ograniczonej pojemności baterii.
Jak zaimplementować automatyczną adaptację motywu za pomocą CSS
Podstawą automatycznej adaptacji motywu jest zapytanie medialne prefers-color-scheme
. To zapytanie medialne CSS pozwala wykryć preferowany przez użytkownika schemat kolorów (jasny lub ciemny) i zastosować odpowiednie style.
Krok 1: Zdefiniuj właściwości niestandardowe (zmienne CSS)
Zacznij od zdefiniowania właściwości niestandardowych (zmiennych CSS) do przechowywania wartości kolorów dla Twoich jasnych i ciemnych motywów. Ułatwia to przełączanie między motywami poprzez prostą aktualizację wartości zmiennych.
:root {
--background-color: #ffffff; /* Tło jasnego motywu */
--text-color: #000000; /* Tekst jasnego motywu */
--link-color: #007bff; /* Link jasnego motywu */
--button-background-color: #f0f0f0;
--button-text-color: #000;
}
@media (prefers-color-scheme: dark) {
:root {
--background-color: #121212; /* Tło ciemnego motywu */
--text-color: #ffffff; /* Tekst ciemnego motywu */
--link-color: #66b3ff; /* Link ciemnego motywu */
--button-background-color: #333;
--button-text-color: #fff;
}
}
W tym przykładzie definiujemy zmienne dla koloru tła, koloru tekstu, koloru linku i kolorów przycisków. Selektor :root
stosuje te zmienne do całego dokumentu. Następnie zapytanie medialne @media (prefers-color-scheme: dark)
nadpisuje te zmienne wartościami dla ciemnego motywu, gdy użytkownik ustawił swój system w trybie ciemnym.
Krok 2: Zastosuj właściwości niestandardowe w swoich stylach
Następnie zastosuj te właściwości niestandardowe w swoich stylach CSS, aby kontrolować wygląd elementów Twojej strony internetowej.
body {
background-color: var(--background-color);
color: var(--text-color);
transition: background-color 0.3s, color 0.3s; /* Płynne przejście */
}
a {
color: var(--link-color);
}
button {
background-color: var(--button-background-color);
color: var(--button-text-color);
border: none;
padding: 10px 20px;
cursor: pointer;
}
Tutaj używamy funkcji var()
, aby uzyskać dostęp do wartości naszych właściwości niestandardowych. Dodaliśmy również właściwość transition
do elementu body
, aby stworzyć płynne przejście między motywami.
Krok 3: Testowanie i dopracowywanie
Dokładnie przetestuj swoją implementację w różnych przeglądarkach i systemach operacyjnych. Nowoczesne przeglądarki, takie jak Chrome, Firefox, Safari i Edge, w pełni obsługują zapytanie medialne prefers-color-scheme
. Możesz przełączać się między trybem jasnym i ciemnym w ustawieniach systemu operacyjnego, aby zobaczyć zmiany odzwierciedlone na Twojej stronie internetowej.
Zaawansowane techniki i uwagi
Udostępnienie ręcznego przełącznika motywów
Chociaż automatyczna adaptacja motywu to świetny punkt wyjścia, niektórzy użytkownicy mogą preferować ręczne nadpisanie ustawień systemowych. Możesz udostępnić ręczny przełącznik motywów za pomocą JavaScriptu i local storage.
HTML:
JavaScript:
const themeToggle = document.getElementById('theme-toggle');
const body = document.body;
let currentTheme = localStorage.getItem('theme') || 'auto'; // Domyślnie auto
function setTheme(theme) {
if (theme === 'dark') {
body.classList.add('dark-theme');
body.classList.remove('light-theme');
} else if (theme === 'light') {
body.classList.add('light-theme');
body.classList.remove('dark-theme');
} else {
body.classList.remove('light-theme', 'dark-theme');
}
localStorage.setItem('theme', theme);
currentTheme = theme;
}
// Zastosuj początkowy motyw przy ładowaniu strony
if (currentTheme === 'dark') {
setTheme('dark');
} else if (currentTheme === 'light') {
setTheme('light');
} else {
//Jeśli ustawiono na auto, pozwól, aby zdecydowało prefers-color-scheme
}
themeToggle.addEventListener('click', () => {
if (currentTheme === 'auto'){
setTheme('light');
} else if (currentTheme === 'light') {
setTheme('dark');
} else {
setTheme('auto');
}
});
CSS: Dodaj poniższy CSS razem z poprzednim. Zwróć uwagę na ręczne nadpisanie:
body.light-theme {
--background-color: #ffffff; /* Tło jasnego motywu */
--text-color: #000000; /* Tekst jasnego motywu */
--link-color: #007bff; /* Link jasnego motywu */
--button-background-color: #f0f0f0;
--button-text-color: #000;
}
body.dark-theme {
--background-color: #121212; /* Tło ciemnego motywu */
--text-color: #ffffff; /* Tekst ciemnego motywu */
--link-color: #66b3ff; /* Link ciemnego motywu */
--button-background-color: #333;
--button-text-color: #fff;
}
Ten fragment kodu dodaje przycisk, który pozwala użytkownikom przełączać się między motywami jasnym, ciemnym i automatycznym. Wybrany motyw jest przechowywany w local storage, dzięki czemu jest zapamiętywany po ponownym załadowaniu strony.
Obsługa obrazów i plików SVG
Niektóre obrazy i pliki SVG mogą nie wyglądać dobrze zarówno w jasnym, jak i ciemnym motywie. Możesz użyć zapytań medialnych CSS, aby warunkowo wyświetlać różne wersje tych zasobów.
img.light-mode {
display: block;
}
img.dark-mode {
display: none;
}
@media (prefers-color-scheme: dark) {
img.light-mode {
display: none;
}
img.dark-mode {
display: block;
}
}
Ten fragment kodu pokazuje jeden obraz (z klasą light-mode
) w trybie jasnym i inny obraz (z klasą dark-mode
) w trybie ciemnym.
Uwagi dotyczące palety kolorów dla międzynarodowej publiczności
Wybierając palety kolorów dla swoich jasnych i ciemnych motywów, pamiętaj o skojarzeniach kulturowych i kwestiach dostępności. Oto kilka ogólnych wytycznych:
- Kontrast: Zapewnij wystarczający kontrast między kolorami tekstu i tła, aby spełnić standardy dostępności (WCAG). Użyj narzędzi takich jak WebAIM's Contrast Checker, aby zweryfikować współczynniki kontrastu.
- Daltonizm: Weź pod uwagę wpływ wyboru kolorów na użytkowników z daltonizmem. Użyj narzędzi takich jak Symulator Daltonizmu, aby zobaczyć swoją stronę tak, jak widzą ją osoby z różnymi rodzajami daltonizmu.
- Skojarzenia kulturowe: Bądź świadomy, że kolory mogą mieć różne skojarzenia kulturowe w różnych częściach świata. Na przykład, w niektórych kulturach biel jest często kojarzona z czystością i żałobą, podczas gdy czerwień kojarzy się ze szczęściem i dobrobytem w innych. Zbadaj skojarzenia kulturowe, aby uniknąć niezamierzonego obrażania lub wprowadzania w błąd.
- Neutralne palety: W razie wątpliwości wybieraj neutralne palety kolorów, które są mniej podatne na błędną interpretację lub bycie obraźliwymi. Szarości, beże i stonowane odcienie mogą być bezpiecznym i wszechstronnym wyborem.
- Testy z użytkownikami: Przeprowadź testy z udziałem zróżnicowanej grupy uczestników, aby zebrać opinie na temat wyboru kolorów i upewnić się, że są one pozytywnie odbierane przez Twoją docelową publiczność.
- Lokalizacja: Tam, gdzie to możliwe, rozważ użycie zlokalizowanych palet kolorów, które są dostosowane do preferencji kulturowych określonych regionów lub krajów. Może to obejmować dostosowanie odcieni, nasycenia i jasności kolorów, aby dopasować je do lokalnych gustów.
Uwagi dotyczące wydajności
Chociaż implementacja automatycznej adaptacji motywu jest stosunkowo prosta, ważne jest, aby wziąć pod uwagę potencjalny wpływ na wydajność. Unikaj używania zbyt skomplikowanych selektorów CSS lub animacji, które mogą spowolnić renderowanie. Upewnij się również, że Twoje właściwości niestandardowe są zdefiniowane wydajnie, aby zminimalizować narzut związany z wyszukiwaniem zmiennych.
Oto kilka najlepszych praktyk optymalizacji wydajności:
- Utrzymuj proste selektory CSS: Unikaj używania zbyt szczegółowych lub zagnieżdżonych selektorów CSS, ponieważ mogą one wydłużyć czas potrzebny przeglądarce na dopasowanie stylów do elementów.
- Używaj właściwości niestandardowych CSS z umiarem: Chociaż właściwości niestandardowe są potężne, ich nadmierne użycie może wpłynąć na wydajność. Używaj ich strategicznie dla często zmieniających się wartości lub wartości, które są współdzielone przez wiele elementów.
- Minimalizuj niepotrzebne animacje: Animacje mogą dodać stronie atrakcyjności wizualnej, ale mogą również wpłynąć na wydajność, jeśli nie zostaną starannie zaimplementowane. Używaj przejść i animacji CSS oszczędnie i optymalizuj je pod kątem płynnego renderowania.
- Testuj na prawdziwych urządzeniach: Zawsze testuj swoją stronę na prawdziwych urządzeniach o różnych warunkach sieciowych i możliwościach sprzętowych, aby zidentyfikować potencjalne wąskie gardła wydajności. Użyj narzędzi deweloperskich przeglądarki, aby profilować wydajność swojej strony i zidentyfikować obszary do poprawy.
Najlepsze praktyki w zakresie dostępności
Upewnij się, że Twoje jasne i ciemne motywy spełniają wytyczne dotyczące dostępności, takie jak WCAG (Web Content Accessibility Guidelines). Obejmuje to zapewnienie wystarczającego kontrastu kolorów, używanie semantycznego HTML i zapewnienie, że wszystkie interaktywne elementy są dostępne z klawiatury.
Oto kilka szczegółowych najlepszych praktyk w zakresie dostępności, których należy przestrzegać:
- Wystarczający kontrast kolorów: Upewnij się, że współczynnik kontrastu między kolorami tekstu a tła spełnia standardy WCAG 2.1 AA (4.5:1 dla normalnego tekstu, 3:1 dla dużego tekstu). Użyj narzędzi takich jak WebAIM's Contrast Checker, aby zweryfikować współczynniki kontrastu.
- Semantyczny HTML: Używaj semantycznych elementów HTML (np.
<header>
,<nav>
,<article>
,<aside>
,<footer>
), aby logicznie strukturyzować treść. Pomaga to czytnikom ekranu i innym technologiom wspomagającym zrozumieć treść i skutecznie nawigować po stronie. - Dostępność z klawiatury: Upewnij się, że wszystkie interaktywne elementy (np. linki, przyciski, pola formularzy) są dostępne z klawiatury. Użyj atrybutu
tabindex
, aby kontrolować kolejność fokusu i zapewnić wizualne wskazówki, który element ma fokus. - Atrybuty ARIA: Używaj atrybutów ARIA (Accessible Rich Internet Applications), aby dostarczyć dodatkowych informacji o strukturze i funkcjonalności Twojej aplikacji internetowej technologiom wspomagającym. Na przykład, użyj
aria-label
, aby podać opisową etykietę dla elementu, lubaria-hidden
, aby ukryć element przed czytnikami ekranu. - Testowanie z technologiami wspomagającymi: Testuj swoją stronę za pomocą czytników ekranu i innych technologii wspomagających, aby zidentyfikować potencjalne problemy z dostępnością. Użyj narzędzi takich jak NVDA (NonVisual Desktop Access) lub VoiceOver, aby doświadczyć swojej strony tak, jak użytkownik z wadą wzroku.
- Zapewnij tekst alternatywny dla obrazów: Użyj atrybutu
alt
, aby podać opisowy tekst alternatywny dla wszystkich obrazów. Ten tekst zostanie wyświetlony, jeśli obraz nie może zostać załadowany, a także zostanie odczytany przez czytniki ekranu.
Przykłady z różnych regionów
Rozważ te przykłady, jak jasne i ciemne motywy mogą być dostosowane do zróżnicowanej globalnej publiczności:
- Azja Wschodnia: W wielu kulturach Azji Wschodniej biel jest kojarzona z żałobą. Projektując ciemny motyw dla tych regionów, unikaj używania nadmiernej ilości białego tekstu na czarnym tle. Zamiast tego wybierz tekst w odcieniu złamanej bieli lub jasnoszary.
- Bliski Wschód: W niektórych kulturach Bliskiego Wschodu często preferowane są jasne kolory. Projektując jasny motyw, rozważ użycie żywych kolorów akcentujących, aby dodać wizualnego zainteresowania. Upewnij się jednak, że wybór kolorów nie kłóci się z wrażliwością kulturową.
- Europa: W Europie często preferowane są minimalistyczne projekty. Projektując zarówno jasne, jak i ciemne motywy, wybieraj czyste układy, prostą typografię i subtelne palety kolorów.
- Ameryka Łacińska: W Ameryce Łacińskiej często doceniane są odważne i wyraziste projekty. Projektując zarówno jasne, jak i ciemne motywy, rozważ użycie fantazyjnej typografii, żywych kolorów i dynamicznych animacji.
- Afryka: Ze względu na zróżnicowane prędkości internetu i możliwości urządzeń, priorytetem powinna być wydajność i dostępność. Używaj prostszych elementów projektowych i testuj na wolniejszych połączeniach.
Podsumowanie
Implementacja automatycznych jasnych i ciemnych motywów to kluczowy krok w kierunku stworzenia bardziej dostępnego i przyjaznego dla użytkownika doświadczenia internetowego dla globalnej publiczności. Wykorzystując zapytania medialne CSS i właściwości niestandardowe, możesz łatwo dostosować wygląd swojej strony do preferencji użytkownika, zmniejszyć zmęczenie oczu i poprawić dostępność dla użytkowników z wadami wzroku. Pamiętaj, aby uwzględnić skojarzenia kulturowe, wytyczne dotyczące dostępności i względy wydajności, aby zapewnić płynne i inkluzywne doświadczenie przeglądania dla wszystkich.
Stosując te techniki, demonstrujesz zaangażowanie w nowoczesne zasady projektowania stron internetowych i zaspokajasz różnorodne potrzeby swojej międzynarodowej publiczności, czyniąc swoją stronę internetową przyjaznym i komfortowym miejscem dla wszystkich.