Bu kapsamlı rehber ile web sitenizde karanlık modu uygulayın. Kusursuz bir kullanıcı deneyimi için CSS medya sorguları, JavaScript geçişleri, erişilebilirlik ve en iyi uygulamaları öğrenin.
Karanlık Mod Uygulaması: CSS ve JavaScript ile Kapsamlı Bir Rehber
Karanlık mod, özellikle düşük ışıklı ortamlarda daha rahat bir izleme deneyimi sunarak giderek daha popüler hale geldi. Bu rehber, küresel bir kitle için kusursuz ve erişilebilir bir kullanıcı deneyimi sağlayarak web sitenizde CSS ve JavaScript kullanarak karanlık modu nasıl uygulayacağınıza dair kapsamlı bir genel bakış sunmaktadır.
Neden Karanlık Mod Uygulamalıyız?
Karanlık modu uygulamayı düşünmek için birçok geçerli neden vardır:
- Geliştirilmiş Kullanıcı Deneyimi: Birçok kullanıcı, özellikle gece veya loş ortamlarda gezinirken göz yorgunluğunu azaltan karanlık modu gözleri için daha rahat bulur. Bu, farklı ekran kullanım alışkanlıklarına ve aydınlatma koşullarına sahip küresel bir kitleye hitap eder.
- Erişilebilirlik: Karanlık mod, görme bozukluğu veya ışığa duyarlılığı olan kullanıcılar için erişilebilirliği artırabilir. Yüksek kontrastlı bir seçenek sunarak web sitenizi daha kapsayıcı hale getirirsiniz.
- Pil Ömrü: OLED veya AMOLED ekranlı cihazlarda karanlık mod, güç tüketimini azaltarak pil ömrünü uzatabilir. Bu, özellikle şarj altyapısına sınırlı erişimi olan bölgelerdeki mobil kullanıcılar için önemlidir.
- Modern Tasarım Trendi: Karanlık mod popüler bir tasarım trendidir ve bunu uygulamak web sitenizin daha modern ve çekici görünmesini sağlayabilir. Bu, marka algısını ve kullanıcı katılımını artırır.
Karanlık Modu Uygulama Yöntemleri
Karanlık modu uygulamanın her birinin kendi avantajları ve dezavantajları olan birkaç yaklaşımı vardır. En yaygın yöntemleri inceleyeceğiz:
- CSS Medya Sorguları (
prefers-color-scheme
): Bu yöntem, kullanıcının işletim sistemi ayarlarına göre tercih ettiği renk şemasını otomatik olarak algılar. - JavaScript Geçişi: Bu yöntem, kullanıcıların aydınlık ve karanlık mod arasında geçiş yapmasına olanak tanıyan manuel bir geçiş (örneğin, bir anahtar veya düğme) sağlar.
- Medya Sorguları ve JavaScript'i Birleştirme: Bu yaklaşım, her iki yöntemin faydalarını birleştirerek otomatik algılama sağlarken kullanıcıların sistem tercihini geçersiz kılmasına da olanak tanır.
1. CSS Medya Sorguları ile Karanlık Mod Uygulaması
prefers-color-scheme
CSS medya sorgusu, kullanıcının tercih ettiği renk şemasını algılamanıza ve buna göre farklı stiller uygulamanıza olanak tanır. Bu, sistem tercihlerini zaten ayarlamış olan kullanıcılar için karanlık modu uygulamanın en basit ve verimli yoludur.
Kod Örneği
Aşağıdaki CSS'i stil dosyanıza ekleyin:
/* Varsayılan (Aydınlık) Tema */
body {
background-color: #fff;
color: #000;
}
/* Karanlık Tema */
@media (prefers-color-scheme: dark) {
body {
background-color: #222;
color: #fff;
}
/* Diğer öğeleri gerektiği gibi ayarlayın */
h1, h2, h3 {
color: #ddd;
}
a {
color: #8ab4f8;
}
}
Açıklama:
- İlk CSS bloğu, varsayılan (aydınlık) tema stillerini tanımlar.
@media (prefers-color-scheme: dark)
bloğu, yalnızca kullanıcının sistemi karanlık moda ayarlandığında stiller uygular.@media
bloğu içinde, gövde arka planı ve metin rengi, başlıklar ve bağlantılar gibi çeşitli öğeler için karanlık mod stillerini tanımlayabilirsiniz.
Avantajları
- Otomatik Algılama: Tarayıcı, kullanıcının tercihini otomatik olarak algılayarak kusursuz bir deneyim sağlar.
- Basit Uygulama: Bu yöntem minimum kod gerektirir ve uygulanması kolaydır.
- Performans: CSS medya sorguları tarayıcı tarafından verimli bir şekilde işlenir.
Dezavantajları
- Sınırlı Kontrol: Kullanıcılar web sitenizde aydınlık ve karanlık mod arasında manuel olarak geçiş yapamazlar.
- Sistem Ayarlarına Bağımlılık: Görünüm tamamen kullanıcının sistem ayarlarına bağlıdır, ki kullanıcı bunların farkında olmayabilir veya değiştiremeyebilir.
2. JavaScript Geçişi ile Karanlık Mod Uygulaması
Bir JavaScript geçişi kullanmak, kullanıcılara web sitesinin temasını kontrol etmek için manuel bir anahtar sağlar. Bu, kullanıcılara daha fazla kontrol verir ve sistem tercihlerini geçersiz kılmalarına olanak tanır. Bu yaklaşım, sistem genelinde karanlık mod ayarlarını tutarlı bir şekilde desteklemeyebilecek veya sunmayabilecek çeşitli cihaz ve platformlardaki kullanıcılara hitap etmek için kritik öneme sahiptir.
HTML Yapısı
Öncelikle, HTML'inize bir geçiş öğesi ekleyin:
<label class="switch">
<input type="checkbox" id="darkModeToggle">
<span class="slider round"></span>
</label>
Bu, bir onay kutusu ve bazı özel CSS stilleri kullanarak basit bir geçiş anahtarı oluşturur.
CSS Stili (İsteğe Bağlı)
Geçiş anahtarını CSS kullanarak stillendirebilirsiniz. İşte bir örnek:
.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);
}
/* Yuvarlak sürgüler */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
JavaScript Kodu
Şimdi, geçiş işlevselliğini yönetmek için aşağıdaki JavaScript kodunu ekleyin:
const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;
// Karanlık modu değiştirmek için fonksiyon
function toggleDarkMode() {
body.classList.toggle('dark-mode');
// Kullanıcının tercihini localStorage'da sakla
if (body.classList.contains('dark-mode')) {
localStorage.setItem('darkMode', 'enabled');
} else {
localStorage.setItem('darkMode', 'disabled');
}
}
// Kaydedilmiş tercih için localStorage'ı kontrol et
if (localStorage.getItem('darkMode') === 'enabled') {
body.classList.add('dark-mode');
darkModeToggle.checked = true;
}
// Geçiş anahtarına olay dinleyici ekle
darkModeToggle.addEventListener('change', toggleDarkMode);
Açıklama:
- Kod, geçiş öğesini ve gövde (body) öğesini alır.
toggleDarkMode
fonksiyonu, gövde öğesindekidark-mode
sınıfını değiştirir.- Kod, kullanıcının tercihini saklamak için
localStorage
kullanır, böylece oturumlar arasında kalıcı olur. - Kod, kaydedilen tercihi uygulamak için sayfa yüklendiğinde
localStorage
'ı kontrol eder. - Geçiş anahtarına bir olay dinleyici eklenir, böylece anahtar tıklandığında
toggleDarkMode
fonksiyonu çağrılır.
Karanlık Mod için CSS Stili (sınıf kullanarak)
Karanlık tema stillerini uygulamak için CSS'inizi dark-mode
sınıfını kullanacak şekilde güncelleyin:
/* Varsayılan (Aydınlık) Tema */
body {
background-color: #fff;
color: #000;
}
/* Karanlık 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;
}
Avantajları
- Kullanıcı Kontrolü: Kullanıcılar web sitenizde aydınlık ve karanlık mod arasında manuel olarak geçiş yapabilirler.
- Kalıcılık: Kullanıcının tercihi
localStorage
kullanılarak kaydedilir, böylece oturumlar arasında kalıcı olur.
Dezavantajları
- Daha Karmaşık Uygulama: Bu yöntem, yalnızca CSS medya sorguları kullanmaktan daha fazla kod gerektirir.
- JavaScript Bağımlılığı: Geçiş işlevselliği, kullanıcının tarayıcısında JavaScript'in etkinleştirilmiş olmasına dayanır.
3. Medya Sorguları ve JavaScript'i Birleştirme
En iyi yaklaşım genellikle CSS medya sorgularını ve bir JavaScript geçişini birleştirmektir. Bu, her iki dünyanın da en iyisini sunar: kullanıcının tercih ettiği renk şemasının otomatik olarak algılanması ve aynı zamanda kullanıcıların sistem tercihini manuel olarak geçersiz kılmasına olanak tanır. Bu, sistem genelindeki tema ayarlarının farkında olmayan veya değiştiremeyenler de dahil olmak üzere daha geniş bir kitleye hitap eder.
Kod Örneği
JavaScript Geçişi örneğindeki aynı HTML ve CSS'i kullanın. JavaScript'i sistem tercihini kontrol edecek şekilde değiştirin:
const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;
// Karanlık modu değiştirmek için fonksiyon
function toggleDarkMode() {
body.classList.toggle('dark-mode');
// Kullanıcının tercihini localStorage'da sakla
if (body.classList.contains('dark-mode')) {
localStorage.setItem('darkMode', 'enabled');
} else {
localStorage.setItem('darkMode', 'disabled');
}
}
// Kaydedilmiş tercih için localStorage'ı, ardından sistem tercihini kontrol et
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;
}
// Geçiş anahtarına olay dinleyici ekle
darkModeToggle.addEventListener('change', toggleDarkMode);
Açıklama:
- Kod önce kaydedilmiş bir tercih için
localStorage
'ı kontrol eder. - Eğer
localStorage
'da bir tercih bulunamazsa,window.matchMedia
kullanarak kullanıcının sisteminin karanlık modu tercih edip etmediğini kontrol eder. - Eğer sistem karanlık modu tercih ediyorsa, gövdeye
dark-mode
sınıfı eklenir ve geçiş anahtarı işaretlenir.
Avantajları
- Otomatik Algılama ve Kullanıcı Kontrolü: Hem otomatik algılama hem de manuel kontrol sağlar.
- Kalıcılık: Kullanıcının tercihi
localStorage
kullanılarak kaydedilir.
Dezavantajları
- Biraz Daha Karmaşık: Bu yöntem, her iki yöntemi tek başına kullanmaktan biraz daha karmaşıktır.
- JavaScript Bağımlılığı: JavaScript'in etkinleştirilmiş olmasına dayanır.
Erişilebilirlik Hususları
Karanlık modu uygularken, web sitenizin tüm kullanıcılar için kullanılabilir kalmasını sağlamak amacıyla erişilebilirliği göz önünde bulundurmak çok önemlidir. Unutmayın ki sadece renkleri tersine çevirmek otomatik olarak erişilebilirliği garanti etmez. İşte bazı önemli hususlar:
- Renk Kontrastı: Hem aydınlık hem de karanlık modda metin ve arka plan arasında yeterli renk kontrastı olduğundan emin olun. Renk kombinasyonlarınızın erişilebilirlik standartlarını karşıladığını doğrulamak için WebAIM'in Kontrast Denetleyicisi (webaim.org/resources/contrastchecker/) gibi araçları kullanın. Bu, özellikle az gören kullanıcılar için önemlidir.
- Odak Göstergeleri: Klavye ile gezinen kullanıcıların hangi öğenin o anda odaklanmış olduğunu kolayca görebilmesi için odak göstergelerinin hem aydınlık hem de karanlık modda net bir şekilde göründüğünden emin olun.
- Görseller ve İkonlar: Görsellerin ve ikonların karanlık modda nasıl görüneceğini düşünün. Optimal görünürlük için alternatif versiyonlar sağlamanız veya renklerini ayarlamak için CSS filtreleri kullanmanız gerekebilir.
- Kullanıcı Testi: Herhangi bir erişilebilirlik sorununu belirlemek ve gidermek için karanlık mod uygulamanızı farklı görme bozukluklarına sahip kullanıcılarla test edin.
Karanlık Mod Uygulaması için En İyi Uygulamalar
Web sitenizde karanlık modu uygularken izlemeniz gereken bazı en iyi uygulamalar şunlardır:
- CSS Değişkenlerini (Özel Özellikler) Kullanın: CSS değişkenleri, renkleri ve diğer stilleri merkezi bir konumda tanımlamanıza olanak tanıyarak temanızı yönetmeyi ve güncellemeyi kolaylaştırır.
- Kapsamlı Test Edin: Tutarlılığı sağlamak için karanlık mod uygulamanızı farklı cihazlarda ve tarayıcılarda test edin.
- Anlaşılır Bir Geçiş Sağlayın: Geçiş anahtarını bulmayı ve kullanmayı kolaylaştırın. İşlevini belirtmek için açık ve sezgisel bir ikon kullanın.
- Kullanıcı Tercihlerini Dikkate Alın: Kullanıcının tercihlerine saygı gösterin ve bunları
localStorage
veya çerezler kullanarak kaydedin. - Tutarlılığı Koruyun: Karanlık mod uygulamanızın web sitenizin tamamında tutarlı olduğundan emin olun.
Örnek: Tema için CSS Değişkenleri
CSS değişkenleri, aydınlık ve karanlık mod temaları arasında geçiş yapmayı kolaylaştırır. Değişkenleri :root
sözde sınıfında tanımlayın:
: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;
}
Artık, dark-mode
sınıfı gövdeye eklendiğinde, CSS değişkenleri güncellenir ve stiller otomatik olarak uygulanır.
Sonuç
Karanlık modu uygulamak, web sitenizin kullanıcı deneyimini önemli ölçüde artırabilir, erişilebilirliği iyileştirebilir ve hatta pil ömründen tasarruf sağlayabilir. Bu rehberde özetlenen teknikleri ve en iyi uygulamaları takip ederek, dünya çapındaki kullanıcılarınız için kusursuz ve keyifli bir karanlık mod deneyimi oluşturabilirsiniz.
Web sitenizin, tercihleri veya görsel yetenekleri ne olursa olsun tüm kullanıcılar için kullanılabilir kalmasını sağlamak için erişilebilirliğe öncelik vermeyi ve uygulamanızı kapsamlı bir şekilde test etmeyi unutmayın.
Karanlık modu düşünceli bir şekilde uygulayarak, sadece bir trendi takip etmekle kalmaz, aynı zamanda küresel bir kitle için daha kapsayıcı ve kullanıcı dostu bir web deneyimi yaratırsınız. Kullanıcı deneyimine olan bu adanmışlık, web sitenizin genel performansına ve çekiciliğine büyük ölçüde fayda sağlayabilir.