Cara Menambah Mod Gelap ke Laman Web atau Apl Anda (Tanpa Kilatan Putih)
Untuk menambah mod gelap, takrifkan warna anda sebagai token yang dinamakan (latar belakang, teks, permukaan, sempadan, aksen) dan bukannya nilai yang dikodkan keras, berikan setiap token nilai cerah dan gelap, dan tukar antara keduanya dengan ciri media prefers-color-scheme supaya laman mengikut tetapan sistem pelawat. Jika anda mahukan suis manual juga, simpan pilihan dalam pelayar dan gunakannya dengan skrip sebaris kecil dalam kepala halaman supaya tiada kilatan putih semasa dimuatkan. Kemudian semak kontras, imej dan carta dalam kedua-dua tema. Dalam pembina apl AI, satu prompt yang jelas boleh melakukan kebanyakan kerja ini; bahagian semakan ialah tempat kualiti datang.
Dua pendekatan
| Pendekatan | Cara ia berfungsi | Sesuai untuk | Pertukaran |
|---|---|---|---|
| Ikut sistem | Ciri media CSS prefers-color-scheme memilih cerah atau gelap | Laman mudah, tiada UI tambahan | Pelawat tidak boleh memilih berbeza daripada tetapan peranti mereka |
| Suis + lalai sistem | Bermula daripada tetapan sistem; suis Cerah / Gelap / Sistem menggantikannya dan diingati | Apl yang kerap digunakan orang | Sedikit JavaScript, dan masalah kilatan semasa dimuatkan yang perlu diselesaikan |
Kebanyakan apl berprestasi terbaik dengan pilihan kedua: hormati sistem secara lalai, dan benarkan orang menggantikannya.
Mulakan dengan token warna
Mod gelap menyakitkan apabila warna tersebar dalam kod sebagai white, #333 dan gray-100. Ia mudah apabila setiap warna datang daripada set kecil token yang dinamakan:
| Token | Cerah | Gelap |
|---|---|---|
background | hampir putih | kelabu sangat gelap |
surface (kad, menu) | putih | kelabu gelap yang sedikit lebih cerah |
text | hampir hitam | putih pudar |
text-muted | kelabu sederhana | kelabu sederhana yang lebih cerah |
border | kelabu cerah | kelabu gelap dengan sedikit kontras |
accent | warna jenama anda | selalunya versi yang lebih cerah atau kurang tepu |
Setiap komponen menggunakan nama token. Menukar tema kemudian bermakna menggantikan satu set nilai, bukan menyunting setiap komponen.
Tip untuk palet gelap:
- Elakkan hitam tulen dan putih tulen untuk kawasan yang besar; kelabu sangat gelap dan putih pudar lebih mudah dibaca.
- Tunjukkan kedalaman dengan permukaan yang lebih cerah, bukan bayang — bayang hampir tidak kelihatan pada latar belakang gelap.
- Kurangkan sedikit ketepuan warna jenama yang terang; ia boleh bersinar secara tidak selesa pada latar belakang gelap.
- Pastikan kontras boleh dibaca. Tahap AA WCAG memerlukan sekurang-kurangnya 4.5:1 kontras untuk teks biasa. Teks kelabu yang pudar sering gagal ujian ini dalam tema gelap.
Dengan Tailwind CSS
Tailwind ialah alat gaya lalai dalam banyak apl yang dibina dengan AI. Menurut dokumentasi mod gelap Tailwind, varian dark: menggunakan prefers-color-scheme secara lalai, jadi kelas seperti bg-white dark:bg-gray-900 mengikut tetapan sistem tanpa kerja tambahan.
Untuk suis manual dalam Tailwind v4, dokumentasi menunjukkan pertukaran varian kepada kelas pada elemen induk:
@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));
Kemudian apl menambah atau membuang kelas dark pada elemen akar. Dokumentasi juga mencadangkan skrip sebaris dalam kepala yang menggunakan pilihan yang disimpan (atau tetapan sistem) sebelum halaman dilukis — dan inilah tepatnya cara mengelakkan kilatan.
Mengelakkan kilatan putih
Kilatan berlaku kerana halaman dilukis dalam mod cerah, kemudian JavaScript dimuatkan, membaca pilihan yang disimpan, dan bertukar kepada gelap. Penyelesaiannya:
- Letakkan skrip sebaris kecil dalam kepala halaman yang membaca tema yang disimpan dan menetapkan kelas pada elemen akar sebelum apa-apa dilukis.
- Tetapkan sifat CSS
color-schemeuntuk setiap tema supaya bahagian yang dilukis pelayar (bar tatal, kawalan borang) sepadan. - Berikan halaman warna latar belakang yang jelas dalam kedua-dua tema.
- Jika apl dipaparkan di pelayan, pastikan pelayan dan pelayar bersetuju tentang tema awal, atau halaman mungkin dipaparkan semula dan berkelip.
Contoh prompt
Persediaan lengkap:
Tambahkan mod gelap. Mula-mula gantikan warna yang dikodkan keras dengan token tema (latar belakang, permukaan, teks, teks lut, sempadan, aksen) dengan nilai cerah dan gelap. Lalai kepada tetapan sistem pelawat. Tambah suis tema dalam pengepala dengan pilihan Cerah, Gelap dan Sistem, ingat pilihan dalam localStorage, dan gunakannya dengan skrip sebaris dalam kepala supaya tiada kilatan putih semasa dimuatkan. Tetapkan color-scheme untuk setiap tema. Kekalkan reka bentuk cerah semasa dengan tepat seperti sekarang.
Membetulkan apa yang tinggal:
Semak setiap halaman dalam mod gelap dan betulkan: teks dengan kontras rendah (sasarkan sekurang-kurangnya 4.5:1), latar belakang putih yang dikodkan keras, sempadan yang hilang, carta dengan teks gelap pada latar belakang gelap, dan logo yang lenyap. Jangan ubah tema cerah.
Imej dan carta:
Gunakan versi logo yang cerah dalam mod gelap. Jadikan paksi carta, garisan grid dan label menggunakan token tema. Berikan tangkapan skrin sempadan halus dalam mod gelap supaya ia tidak sebati dengan latar belakang.
Langkah demi langkah
- Audit warna. Cari warna yang dikodkan keras dan gantikannya dengan token. Inilah sebahagian besar kerjanya.
- Takrifkan nilai gelap untuk setiap token.
- Ikut sistem dengan
prefers-color-scheme(atau lalaidark:Tailwind). - Tambah suis jika anda mahukannya: Cerah, Gelap, Sistem. Simpan pilihan dalam pelayar; untuk apl yang memerlukan log masuk, anda juga boleh menyimpannya pada profil pengguna.
- Elakkan kilatan dengan skrip kepala sebaris dan
color-scheme. - Semak bahagian yang rumit: logo, ikon, imej dengan latar belakang putih, carta, blok kod, peta, benam, e-mel.
- Uji kedua-dua tema pada desktop dan telefon, dengan sistem ditetapkan kepada cerah dan gelap, dan selepas muat semula keras.
Kesilapan biasa
- Membalikkan segalanya. Penapis yang membalikkan warna merosakkan foto dan warna jenama.
- Warna yang dikodkan keras ditinggalkan. Satu kad putih dalam halaman gelap menonjol serta-merta.
- Teks kelabu kontras rendah. Kelihatan bergaya, tetapi gagal dari segi kebolehbacaan.
- Kilatan putih semasa dimuatkan. Terutamanya ketara pada telefon pada waktu malam.
- Terlupa benam pihak ketiga. Peta, video dan widget mungkin kekal cerah; semak sama ada ia mempunyai pilihan gelap.
- Suis dengan dua keadaan sahaja. Sebaik seseorang mengkliknya, mereka tidak boleh kembali mengikut sistem.
- Merosakkan tema cerah. Nyatakan dengan jelas dalam prompt anda bahawa reka bentuk cerah patut kekal sama.
Senarai semak
- Semua warna datang daripada token tema
- Ikut tetapan sistem secara lalai
- Suis pilihan dengan Cerah, Gelap dan Sistem, diingati
- Tiada kilatan putih semasa dimuatkan atau dimuat semula
-
color-schemeditetapkan supaya kawalan borang dan bar tatal sepadan - Kontras teks sekurang-kurangnya 4.5:1 dalam kedua-dua tema
- Logo, imej, carta dan benam disemak dalam mod gelap
- Tema cerah tidak berubah
- Diuji pada desktop dan telefon
Mod gelap dengan Mythex
Apl yang dibina di Mythex menggunakan Vite, React, TypeScript dan Tailwind secara lalai, jadi pendekatan Tailwind di atas terus terpakai: tampal prompt persediaan lengkap ke dalam sembang, kemudian semak Pratonton dalam kedua-dua tema dan pada saiz telefon. Panduan reka bentuk Mythex ialah menamakan apa yang hendak diubah dan apa yang hendak dikekalkan, dan ini penting di sini — nyatakan bahawa tema cerah mesti kekal seperti sedia ada. Lihat Prompt reka bentuk dan UI, dan undur dengan checkpoint jika satu pas tersilap.
Untuk lebih lanjut tentang mendapatkan rupa yang betul, lihat cara mereka bentuk apl yang kelihatan menarik dengan AI dan cara menulis prompt untuk pembina apl AI.
Soalan lazim
Bagaimana saya membuat laman web saya mengikut tetapan mod gelap peranti?
Gunakan ciri media CSS prefers-color-scheme, yang memberitahu anda sama ada sistem pelawat ditetapkan kepada cerah atau gelap. Varian dark: Tailwind menggunakannya secara lalai.
Mengapa laman saya berkelip putih sebelum bertukar kepada mod gelap?
Tema yang disimpan digunakan oleh JavaScript selepas halaman sudah dilukis. Betulkannya dengan skrip sebaris kecil dalam kepala halaman yang menetapkan kelas tema sebelum apa-apa dipaparkan, dan tetapkan warna latar belakang yang jelas untuk kedua-dua tema.
Adakah mod gelap sepatutnya hitam pekat?
Biasanya tidak. Kelabu yang sangat gelap lebih mudah untuk mata semasa membaca lama dan membolehkan anda menunjukkan kedalaman dengan permukaan yang sedikit lebih cerah. Hitam pekat mungkin sesuai untuk reka bentuk yang memberi tumpuan kepada OLED atau banyak media.
Adakah saya memerlukan suis mod gelap jika saya mengikut tetapan sistem?
Tidak semestinya. Mengikut sistem ialah lalai yang baik, tetapi suis dengan pilihan Cerah, Gelap dan Sistem membantu orang yang mahu laman anda berbeza daripada tetapan peranti mereka.