Mengesan Skema Warna Sistem
Baca pilihan mod gelap OS pengguna dengan prefers-color-scheme dan kemas kini keadaan React apabila pilihan itu berubah.
Mengesan Skema Warna Sistem ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Pertanyaan Media prefers-color-scheme
Pertanyaan media CSS prefers-color-scheme mengesan sama ada pengguna telah mengkonfigurasi sistem pengendalian mereka untuk menggunakan tema warna gelap atau cerah. Ia menerima dua nilai: dark dan light. Keutamaan ini ditetapkan pada peringkat OS dalam tetapan sistem, bukannya dalam pelayar.
Mod Gelap CSS melalui Pertanyaan Media
Anda boleh menggunakan gaya gelap sepenuhnya dalam CSS melalui @media (prefers-color-scheme: dark) { ... }. Dalam blok ini, anda menggantikan warna, latar belakang dan sempadan supaya sesuai dengan palet gelap. Pendekatan ini tidak memerlukan JavaScript dan berfungsi walaupun sebelum React dipasang.
window.matchMedia dalam JavaScript
Dalam JavaScript, window.matchMedia('(prefers-color-scheme: dark)') mengembalikan objek MediaQueryList. Anda boleh menggunakannya untuk membaca keutamaan sistem semasa secara terprogram dalam cangkuk React atau pengendali peristiwa. Ini ialah penghubung antara pertanyaan media CSS dengan logik JS anda.
Membaca Nilai Awal
Objek MediaQueryList mempunyai sifat matches yang mengembalikan nilai boolean. Jika matches ialah true, sistem berada dalam mod gelap; jika false, sistem berada dalam mod cerah. Biasanya, anda membaca nilai ini sekali semasa pemasangan untuk memulakan keadaan tema.
Mendengar Perubahan Sistem
Pengguna boleh mengubah skema warna OS pada bila-bila masa. Untuk bertindak balas secara dinamik, panggil mediaQuery.addEventListener('change', handler), dengan handler menerima MediaQueryListEvent yang dikemas kini. Objek peristiwa itu juga mempunyai boolean matches yang mencerminkan keutamaan baharu.
Membina Cangkuk usePrefersDarkMode
Pendekatan yang kemas ialah membina cangkuk tersuai menggunakan useSyncExternalStore. Cangkuk itu melanggan mediaQuery.addEventListener dan menyediakan fungsi syot kilat yang mengembalikan mediaQuery.matches. Ini memastikan cangkuk sentiasa selaras dengan API pelayar luaran tanpa pengurusan keadaan manual.
Membatalkan Langganan semasa Pembersihan
Apabila komponen anda dinyahpasang, anda mesti membuang pendengar peristiwa untuk mengelakkan kebocoran memori. Dalam pembersihan useEffect, panggil mediaQuery.removeEventListener('change', handler). Dengan useSyncExternalStore, fungsi langganan mesti mengembalikan fungsi pembatalan langganan yang melakukan perkara yang sama.
Keutamaan Sistem berbanding Penggantian Pengguna
Keutamaan sistem ialah perkara yang dilaporkan oleh OS. Namun, pengguna sering mahu menggantikan tema aplikasi secara berasingan, contohnya mengekalkan aplikasi dalam mod cerah semasa OS berada dalam mod gelap. Seni bina anda hendaklah membezakan lalai sistem daripada penggantian pengguna yang jelas dan disimpan dalam localStorage.
Meniru Skema Warna dalam DevTools
Chrome DevTools membolehkan anda meniru keutamaan skema warna tanpa mengubah tetapan OS. Buka DevTools, pergi ke tab Rendering dan cari menu lungsur "Emulate CSS media feature prefers-color-scheme". Ciri ini amat berguna untuk menguji kedua-dua tema dengan cepat semasa pembangunan.
Menghormati Keutamaan Pengguna secara Lalai
Pelaksanaan mod gelap yang baik membaca keutamaan sistem sebagai titik permulaan lalai dan menggunakannya dengan serta-merta. Ini menunjukkan penghormatan terhadap tetapan kebolehcapaian pengguna. Hanya selepas pengguna menukar tema secara jelas dalam aplikasi anda, barulah anda menyimpan dan menggunakan penggantian yang berbeza.
Pertimbangan SSR untuk Keutamaan Sistem
Pada pelayan, window.matchMedia tidak wujud. Jika anda melakukan pemaparan pada pelayan, gunakan pengawal typeof window !== 'undefined' sebelum memanggil matchMedia. Untuk aplikasi SSR, baca keutamaan pengguna daripada kuki atau pengepala HTTP bagi mengelakkan ketidakpadanan hidrasi.
Semakan API matchMedia
Sifat apakah pada objek MediaQueryList yang memberitahu anda sama ada pertanyaan media sedang sepadan?
Ringkasan Pelajaran: Mengesan Skema Warna Sistem
Pertanyaan media prefers-color-scheme mendedahkan keutamaan warna OS dalam CSS dan JavaScript. Gunakan window.matchMedia untuk membaca serta mendengar perubahan, sentiasa bersihkan pendengar peristiwa dan bezakan lalai sistem daripada penggantian pengguna. Peniruan melalui Chrome DevTools mempercepatkan pengujian kedua-dua tema.
Pelajari React dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Soalan Lazim
Adakah pelajaran “Mengesan Skema Warna Sistem” percuma?
Ya — teks penuh “Mengesan Skema Warna Sistem” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengesan Skema Warna Sistem”?
Baca pilihan mod gelap OS pengguna dengan prefers-color-scheme dan kemas kini keadaan React apabila pilihan itu berubah. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Mengesan Skema Warna Sistem” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengesan Skema Warna Sistem
- Pemboleh Ubah CSS untuk Menukar Tema
- Konteks React untuk Keadaan Tema
- Mengekalkan Tema dan Menghalang Kelipan