Implementasi Dark Mode dengan CSS variable dan Javascript
Bagian Dari Seri ✦ Implementasi Dark Mode
Mukadimah
Section titled MukadimahSemenjak seluruh sistem operasi desktop dan mobile memiliki dark mode, banyak aplikasi mengikuti tren tersebut dan menyediakan dark mode pada antar muka mereka.
Tidak hanya pada aplikasi native, banyak website juga mengimplementasikan dark mode khususnya blog dan portal berita untuk membantu pengguna membaca secara nyaman dalam kondisi rendah cahaya.
Bahkan sudah ada CSS media query untuk mendeteksi tema dan mengaktifkan styles berdasarkan pengaturan tema yang pengguna setel.
Tapi untuk sekarang kita akan mengimplementasikan dark mode pada website menggunakan CSS variable , data-* attribute dan sedikit javascript untuk mengkontrol tema-nya.
Kenapa tidak menggunakan media query? Karena jika kita menggunakan metode tersebut, kita harus menulis seluruh perubahan di dalam blok media query seperti berikut:
Atau, kita harus menulis dua CSS berbeda untuk tiap tema dasar dan dark mode seperti ini:
Saya merasa kedua metode tersebut kurang praktis. Dengan menggunakan CSS variable, kita hanya perlu mendefinisikan variable untuk tema dasar dan dark mode lalu merubahnya berda sarkan data attribute yang kita setel di tag <html>
.
Tulis struktur HTML dan CSS.
Section titled Tulis%20struktur%20HTML%20dan%20CSS.Ayo kita buat file HTML untuk konten dasar dan tombol sebagai toggle
Sekarang, kita deklarasikan CSS variable kita didalam :root
pseudo-class untuk tema dasar dan kita tambah beberapa styling dasar pada HTML kita.
CSS variable untuk masing-masing tema
Section titled CSS%20variable%20untuk%20masing-masing%20temaSeperti yang bisa kita lihat, kita memasang tiap warna menggunakan variable karena kita akan menimpa tiap nilai variable-nya saat kita mengaktifkan dark mode. Sekarang, kita deklarasikan variable untuk dark mode didalam data attribute [data-theme=”dark”]
.
Untuk tes variable-nya, cobalah hapus atau komen :root
dan ganti nama [data-theme=”dark”]
menjadi :root
untuk sementara.
Kontrol menggunakan Javascript
Section titled Kontrol%20menggunakan%20JavascriptJika sudah puas dengan warna yang kalian pilih, ubah kembali :root
dan [data-theme=”dark”]
seperti sebelumnya dan ayo kita ubah variable-nya secara dinamis menggunakan javascript.
Dan pasang fungsi diatas ke event onclick
tombol yang sudah kita buat sebelumnya.
Next step?
Section titled Next%20step%3FHore! Kita baru saja implementasi dark mode pada website! Tapi, perubahan temanya sangat tiba-tiba, bagaimana caranya jika ingin temanya berubah secara smooth?
Tak usah khawatir, ayo kita tambahkan properti transition
ke setiap selector yang berubah ketika kita merubah tema, jadi perubahannya tidak akan tiba-tiba. Kita juga akan definisikan durasi transition
di variable agar mudah untuk kita ubah.
Website dengan dark mode kita sudah selesai, dan sekarang perubahan temanya-pun berubah dengan smooth.
Di tulisan selanjutnya, saya akan menjelaskan bagaimana untuk memasang tema secara otomatis berdasarkan tema sistem operasi yang pengguna gunakan. Juga, bagaimana cara menyimpan pengaturan tema agar saat pengguna me-refresh website kita, temanya tidak akan kembali ke pengaturan awal.