Sistem Renk Şemasını Algılama
Kullanıcının OS karanlık mod tercihini prefers-color-scheme ile okuyup değiştiğinde React durumunu güncelleyin
Sistem Renk Şemasını Algılama, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
prefers-color-scheme Medya Sorgusu
prefers-color-scheme CSS medya sorgusu, kullanıcının işletim sistemini koyu veya açık renk teması kullanacak şekilde yapılandırıp yapılandırmadığını algılar. İki değer kabul eder: dark ve light. Bu tercih tarayıcıda değil, sistem ayarlarında işletim sistemi düzeyinde belirlenir.
Medya Sorgusuyla CSS Koyu Modu
@media (prefers-color-scheme: dark) { ... } kullanarak koyu stilleri yalnızca CSS ile uygulayabilirsiniz. Bu bloğun içinde renkleri, arka planları ve kenarlıkları koyu bir palete uyacak şekilde geçersiz kılarsınız. Bu yaklaşım JavaScript gerektirmez ve React bağlanmadan önce bile çalışır.
JavaScript'te window.matchMedia
JavaScript'te window.matchMedia('(prefers-color-scheme: dark)') bir MediaQueryList nesnesi döndürür. Bunu React kancaları veya olay işleyicileri içinde mevcut sistem tercihini programlı olarak okumak için kullanabilirsiniz. Bu, CSS medya sorguları ile JS mantığınız arasındaki köprüdür.
İlk Değeri Okuma
MediaQueryList nesnesinde boole değer döndüren bir matches özelliği bulunur. matches değeri true ise sistem koyu moddadır; false ise açık moddadır. Tema durumunuzu başlatmak için bu değeri genellikle bağlanma sırasında bir kez okursunuz.
Sistem Değişikliklerini Dinleme
Kullanıcılar işletim sistemlerinin renk şemasını istedikleri zaman değiştirebilir. Dinamik olarak yanıt vermek için, güncellenmiş MediaQueryListEvent nesnesini alan handler ile mediaQuery.addEventListener('change', handler) çağrısını yapın. Olay nesnesinde yeni tercihi yansıtan bir matches boole değeri de bulunur.
usePrefersDarkMode Kancasını Oluşturma
Temiz bir yaklaşım, useSyncExternalStore kullanarak özel bir kanca oluşturmaktır. Kanca, mediaQuery.addEventListener öğesine abone olur ve mediaQuery.matches döndüren bir anlık görüntü işlevi sağlar. Böylece kanca, elle durum yönetimi gerektirmeden harici tarayıcı API'siyle eşzamanlı kalır.
Temizleme Sırasında Abonelikten Çıkma
Bileşeniniz bağlantısını kaldırdığında bellek sızıntılarını önlemek için olay dinleyicisini kaldırmanız gerekir. Bir useEffect temizleme işlevinde mediaQuery.removeEventListener('change', handler) çağrısını yapın. useSyncExternalStore ile abone olma işlevi, aynı işlemi yapan abonelikten çıkma işlevini döndürmelidir.
Sistem Tercihi ve Kullanıcı Geçersiz Kılması
Sistem tercihi, işletim sisteminin bildirdiği tercihtir. Ancak kullanıcılar çoğu zaman uygulama temasını bağımsız olarak geçersiz kılmak ister; örneğin işletim sistemi koyu moddayken uygulamayı açık tutmak isteyebilir. Mimariniz, sistem varsayılanını localStorage içinde saklanan açık bir kullanıcı geçersiz kılmasından ayırmalıdır.
DevTools'ta Renk Şemasını Taklit Etme
Chrome DevTools, işletim sistemi ayarlarınızı değiştirmeden renk şeması tercihlerini taklit etmenizi sağlar. DevTools'u açın, Oluşturma sekmesine gidin ve "CSS medya özelliği renk şeması tercihini taklit et" açılır menüsünü bulun. Bu özellik, geliştirme sırasında her iki temayı hızlıca test etmek için son derece değerlidir.
Varsayılan Olarak Kullanıcı Tercihine Uyma
İyi bir koyu mod uygulaması, başlangıç noktası olarak sistem tercihini okur ve bunu hemen uygular. Böylece kullanıcının erişilebilirlik ayarına saygı gösterilir. Yalnızca kullanıcı uygulamanızda temayı açıkça değiştirdikten sonra farklı bir geçersiz kılma değerini saklamalı ve kullanmalısınız.
Sistem Tercihi için SSR Hususu
Sunucuda window.matchMedia mevcut değildir. Sunucuda işleme yapıyorsanız matchMedia çağrısından önce typeof window !== 'undefined' ile kontrol edin. SSR uygulamalarında, hidrasyon uyumsuzluklarını önlemek için kullanıcı tercihini bunun yerine bir çerezden veya HTTP üstbilgisinden okuyun.
matchMedia API Denetimi
Bir MediaQueryList nesnesinin hangi özelliği medya sorgusunun şu anda eşleşip eşleşmediğini belirtir?
Ders Özeti: Sistem Renk Şemasını Algılama
prefers-color-scheme medya sorgusu, işletim sisteminin renk tercihini hem CSS hem de JavaScript'te kullanıma sunar. Değişiklikleri okumak ve dinlemek için window.matchMedia kullanın, olay dinleyicilerini her zaman temizleyin ve sistem varsayılanlarını kullanıcı geçersiz kılmalarından ayırın. Chrome DevTools taklidi, her iki temayı test etmeyi hızlandırır.
Sıkça Sorulan Sorular
“Sistem Renk Şemasını Algılama” dersi ücretsiz mi?
Evet — “Sistem Renk Şemasını Algılama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Sistem Renk Şemasını Algılama” dersinde ne öğreneceğim?
Kullanıcının OS karanlık mod tercihini prefers-color-scheme ile okuyup değiştiğinde React durumunu güncelleyin React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Sistem Renk Şemasını Algılama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sistem Renk Şemasını Algılama
- Tema Değiştirme için CSS Değişkenleri
- Tema Durumu için React Context
- Temayı Kalıcı Kılma ve Parlamayı Önleme