Wednesday

18-06-2025 Vol 19

Beginner’s Guide on Light/Dark Mode Toggle Using JavaScript (No Frameworks)

Panduan Pemula: Toggle Mode Terang/Gelap Menggunakan JavaScript (Tanpa Framework)

Selamat datang! Dalam panduan ini, kita akan menjelajahi cara membuat toggle mode terang/gelap sederhana namun efektif menggunakan JavaScript murni. Tanpa menggunakan framework atau pustaka eksternal apa pun, kita akan membangun toggle yang dapat digunakan kembali yang meningkatkan pengalaman pengguna situs web Anda. Mode terang/gelap bukan hanya tentang estetika; ini tentang aksesibilitas dan memberi pengguna pilihan. Mari kita mulai!

Daftar Isi

  1. Pendahuluan
    1. Mengapa Mode Terang/Gelap Penting?
    2. Apa yang Akan Kita Bangun?
    3. Prasyarat
  2. Persiapan HTML
    1. Struktur HTML Dasar
    2. Menambahkan Tombol Toggle
  3. Menata dengan CSS
    1. Variabel CSS untuk Tema
    2. Gaya Mode Terang Default
    3. Gaya Mode Gelap
    4. Transisi Halus
  4. Logika JavaScript
    1. Memilih Elemen
    2. Memeriksa Preferensi Pengguna Tersimpan
    3. Fungsi untuk Mengaktifkan/Menonaktifkan Mode
    4. Menyimpan Preferensi Pengguna
    5. Menambahkan Event Listener ke Tombol
  5. Peningkatan Aksesibilitas
    1. Kontras Warna
    2. Atribut ARIA
  6. Praktik Terbaik dan Pertimbangan
    1. Performa
    2. Kode yang Dapat Dipelihara
    3. Kompatibilitas Browser
  7. Penyelesaian Masalah Umum
    1. Toggle Tidak Berfungsi
    2. Gaya Tidak Berubah
    3. Masalah Penyimpanan Lokal
  8. Kesimpulan
    1. Ringkasan
    2. Langkah Selanjutnya

1. Pendahuluan

1.1 Mengapa Mode Terang/Gelap Penting?

Mode terang/gelap telah menjadi fitur yang banyak diminati di situs web modern dan aplikasi web. Berikut adalah beberapa alasan mengapa mode terang/gelap penting:

  • Pengalaman Pengguna: Mode gelap mengurangi ketegangan mata, terutama dalam kondisi minim cahaya. Ini menawarkan pengalaman visual yang lebih nyaman bagi pengguna, yang mengarah pada kepuasan dan keterlibatan yang lebih tinggi.
  • Aksesibilitas: Bagi individu dengan sensitivitas cahaya atau gangguan penglihatan, mode gelap dapat meningkatkan kemampuan membaca dan mengurangi kelelahan visual secara signifikan. Ini membuat konten Anda lebih mudah diakses oleh audiens yang lebih luas.
  • Hemat Daya: Pada perangkat dengan layar OLED atau AMOLED, mode gelap dapat menghemat daya karena piksel yang lebih sedikit menyala, sehingga memperpanjang masa pakai baterai.
  • Estetika: Banyak pengguna lebih menyukai tampilan mode gelap karena alasan estetika. Ini dapat memberikan tampilan yang ramping dan modern ke situs web Anda.

1.2 Apa yang Akan Kita Bangun?

Dalam tutorial ini, kita akan membuat toggle mode terang/gelap menggunakan JavaScript murni, tanpa dependensi eksternal. Kita akan membangun:

  • Struktur HTML dasar untuk tombol toggle dan konten situs web.
  • Gaya CSS menggunakan variabel untuk tema terang dan gelap.
  • Kode JavaScript untuk mengaktifkan/menonaktifkan mode dan menyimpan preferensi pengguna menggunakan penyimpanan lokal.
  • Peningkatan aksesibilitas untuk memastikan bahwa toggle ramah pengguna bagi semua orang.

1.3 Prasyarat

Sebelum kita mulai, pastikan Anda memiliki yang berikut ini:

  • Pengetahuan dasar HTML, CSS, dan JavaScript.
  • Editor kode (misalnya, VS Code, Sublime Text, Atom).
  • Browser web (misalnya, Chrome, Firefox, Safari).

2. Persiapan HTML

2.1 Struktur HTML Dasar

Pertama, buat file HTML (misalnya, index.html) dan tambahkan struktur dasar berikut:

“`html





Mode Terang/Gelap dengan JavaScript

Selamat Datang di Situs Web Saya

Ini adalah beberapa konten di situs web Anda. Tambahkan lebih banyak sesuai kebutuhan.

© 2023 Situs Web Saya




“`

Pastikan untuk membuat file style.css dan script.js di direktori yang sama dengan file HTML Anda. Kita akan menambahkan gaya dan JavaScript kita ke file-file ini masing-masing.

2.2 Menambahkan Tombol Toggle

Selanjutnya, kita perlu menambahkan tombol toggle ke HTML kita. Tombol ini akan memungkinkan pengguna untuk beralih di antara mode terang dan gelap. Tambahkan kode berikut di dalam tag <header>:

“`html

“`

Ini adalah tombol sederhana dengan ID “toggle-mode”. Kita akan menggunakan ID ini untuk memilih tombol ini di JavaScript kita.

3. Menata dengan CSS

3.1 Variabel CSS untuk Tema

Variabel CSS (juga dikenal sebagai properti kustom) memungkinkan kita untuk mendefinisikan nilai yang dapat digunakan kembali di seluruh stylesheet kita. Ini sangat berguna untuk mengelola tema. Buka file style.css Anda dan tambahkan variabel berikut di dalam pseudo-kelas :root:

“`css
:root {
–bg-color: #f9f9f9;
–text-color: #333;
–header-bg-color: #eee;
–footer-bg-color: #eee;
}

body {
background-color: var(–bg-color);
color: var(–text-color);
transition: background-color 0.3s ease, color 0.3s ease;
}

header {
background-color: var(–header-bg-color);
padding: 1rem;
text-align: center;
}

footer {
background-color: var(–footer-bg-color);
padding: 1rem;
text-align: center;
}
“`

Di sini, kita mendefinisikan variabel untuk warna latar belakang, warna teks, warna latar belakang header, dan warna latar belakang footer. Kita kemudian menggunakan variabel-variabel ini untuk gaya badan, header, dan footer.

3.2 Gaya Mode Terang Default

Gaya yang kita tambahkan di atas adalah gaya mode terang default. Ini akan diterapkan saat situs web pertama kali dimuat.

3.3 Gaya Mode Gelap

Sekarang, mari kita tambahkan gaya untuk mode gelap. Kita akan menggunakan kueri media untuk mendeteksi kapan pengguna lebih suka mode gelap dan menerapkan gaya yang sesuai. Tambahkan kode berikut ke file style.css Anda:

“`css
body.dark-mode {
–bg-color: #333;
–text-color: #f9f9f9;
–header-bg-color: #444;
–footer-bg-color: #444;
}
“`

Di sini, kita mendefinisikan variabel baru untuk mode gelap. Kita juga menerapkan gaya-gaya ini ke badan saat kelas .dark-mode ditambahkan. Ini memungkinkan kita untuk beralih di antara tema terang dan gelap dengan menambahkan atau menghapus kelas ini.

3.4 Transisi Halus

Untuk membuat peralihan di antara mode terang dan gelap lebih halus, kita dapat menambahkan transisi ke properti CSS yang berubah. Kita telah melakukan ini di bagian badan CSS:

“`css
body {
background-color: var(–bg-color);
color: var(–text-color);
transition: background-color 0.3s ease, color 0.3s ease;
}
“`

Ini akan membuat perubahan warna latar belakang dan warna teks berlangsung selama 0,3 detik dengan fungsi waktu ease, menciptakan transisi yang lebih menyenangkan secara visual.

4. Logika JavaScript

4.1 Memilih Elemen

Sekarang, mari kita tambahkan logika JavaScript untuk mengaktifkan/menonaktifkan mode terang/gelap. Buka file script.js Anda dan tambahkan kode berikut:

“`javascript
const toggleModeButton = document.getElementById(‘toggle-mode’);
const body = document.body;
“`

Di sini, kita memilih tombol toggle dan elemen badan menggunakan ID masing-masing. Kita akan menggunakan elemen-elemen ini untuk mengaktifkan/menonaktifkan mode gelap dan mengubah gaya halaman.

4.2 Memeriksa Preferensi Pengguna Tersimpan

Sebelum kita menambahkan logika untuk mengaktifkan/menonaktifkan mode, kita harus memeriksa apakah pengguna telah menyimpan preferensi. Kita dapat melakukan ini menggunakan penyimpanan lokal. Tambahkan kode berikut ke file script.js Anda:

“`javascript
const darkMode = localStorage.getItem(‘darkMode’);

if (darkMode === ‘enabled’) {
body.classList.add(‘dark-mode’);
}
“`

Di sini, kita mengambil nilai darkMode dari penyimpanan lokal. Jika nilainya adalah 'enabled', kita menambahkan kelas .dark-mode ke badan, menerapkan gaya mode gelap. Ini memastikan bahwa preferensi pengguna dipertahankan di seluruh sesi.

4.3 Fungsi untuk Mengaktifkan/Menonaktifkan Mode

Selanjutnya, kita akan membuat fungsi untuk mengaktifkan/menonaktifkan mode gelap. Tambahkan kode berikut ke file script.js Anda:

“`javascript
function toggleDarkMode() {
body.classList.toggle(‘dark-mode’);
}
“`

Fungsi ini mengaktifkan/menonaktifkan kelas .dark-mode pada badan. Ini berarti bahwa jika kelas ada, itu akan dihapus, dan jika tidak ada, itu akan ditambahkan. Ini memberi kita fungsionalitas toggle.

4.4 Menyimpan Preferensi Pengguna

Kita juga perlu menyimpan preferensi pengguna ke penyimpanan lokal. Tambahkan kode berikut ke file script.js Anda:

“`javascript
function toggleDarkMode() {
body.classList.toggle(‘dark-mode’);

if (body.classList.contains(‘dark-mode’)) {
localStorage.setItem(‘darkMode’, ‘enabled’);
} else {
localStorage.setItem(‘darkMode’, ‘disabled’);
}
}
“`

Di sini, kita memeriksa apakah badan memiliki kelas .dark-mode. Jika iya, kita menyimpan 'enabled' ke penyimpanan lokal. Jika tidak, kita menyimpan 'disabled'. Ini memastikan bahwa preferensi pengguna disimpan dan dimuat pada kunjungan selanjutnya.

4.5 Menambahkan Event Listener ke Tombol

Terakhir, kita perlu menambahkan event listener ke tombol toggle. Tambahkan kode berikut ke file script.js Anda:

“`javascript
toggleModeButton.addEventListener(‘click’, toggleDarkMode);
“`

Ini menambahkan event listener klik ke tombol toggle. Saat tombol diklik, fungsi toggleDarkMode akan dipanggil, mengaktifkan/menonaktifkan mode gelap dan menyimpan preferensi pengguna.

Kode JavaScript lengkap harus terlihat seperti ini:

“`javascript
const toggleModeButton = document.getElementById(‘toggle-mode’);
const body = document.body;

const darkMode = localStorage.getItem(‘darkMode’);

if (darkMode === ‘enabled’) {
body.classList.add(‘dark-mode’);
}

function toggleDarkMode() {
body.classList.toggle(‘dark-mode’);

if (body.classList.contains(‘dark-mode’)) {
localStorage.setItem(‘darkMode’, ‘enabled’);
} else {
localStorage.setItem(‘darkMode’, ‘disabled’);
}
}

toggleModeButton.addEventListener(‘click’, toggleDarkMode);
“`

5. Peningkatan Aksesibilitas

5.1 Kontras Warna

Saat menerapkan mode terang/gelap, penting untuk memastikan bahwa kontras warna memadai untuk semua pengguna. Kontras yang buruk dapat membuat teks sulit dibaca, terutama bagi individu dengan gangguan penglihatan.

Gunakan penganalisis kontras warna untuk memeriksa apakah kontras warna Anda memenuhi standar aksesibilitas. Situs web seperti WebAIM Contrast Checker dapat membantu Anda mengevaluasi kontras warna Anda dan membuat penyesuaian yang diperlukan.

5.2 Atribut ARIA

Atribut Accessible Rich Internet Applications (ARIA) meningkatkan aksesibilitas dengan memberikan informasi tambahan tentang elemen HTML ke teknologi bantu, seperti pembaca layar. Untuk tombol toggle kita, kita dapat menambahkan atribut ARIA untuk menunjukkan status saat ini dari mode terang/gelap.

Modifikasi tombol HTML Anda seperti berikut:

“`html

“`

Atribut aria-pressed menunjukkan apakah tombol ditekan atau tidak. Kita akan memperbarui atribut ini menggunakan JavaScript saat mode diaktifkan/dinonaktifkan. Modifikasi fungsi toggleDarkMode Anda seperti berikut:

“`javascript
function toggleDarkMode() {
body.classList.toggle(‘dark-mode’);

if (body.classList.contains(‘dark-mode’)) {
localStorage.setItem(‘darkMode’, ‘enabled’);
toggleModeButton.setAttribute(‘aria-pressed’, ‘true’);
toggleModeButton.textContent = ‘Aktifkan Mode Terang’; // Update button text
} else {
localStorage.setItem(‘darkMode’, ‘disabled’);
toggleModeButton.setAttribute(‘aria-pressed’, ‘false’);
toggleModeButton.textContent = ‘Aktifkan Mode Gelap’; // Update button text
}
}
“`

Kita juga menambahkan logika untuk memperbarui teks tombol berdasarkan mode saat ini.

6. Praktik Terbaik dan Pertimbangan

6.1 Performa

Kode yang kita tulis relatif ringan dan seharusnya tidak berdampak signifikan pada performa. Namun, jika Anda bekerja dengan situs web yang besar dan kompleks, penting untuk mempertimbangkan implikasi kinerja dari mengaktifkan/menonaktifkan gaya.

Berikut adalah beberapa tips untuk mengoptimalkan kinerja:

  • Minimalkan Reflow: Mengubah gaya dapat memicu reflow, yang dapat mahal. Batasi jumlah perubahan gaya yang Anda buat saat mengaktifkan/menonaktifkan mode.
  • Gunakan Transisi CSS: Transisi CSS lebih efisien daripada animasi JavaScript. Gunakan transisi untuk animasi halus jika memungkinkan.
  • Muat Aset dengan Malas: Jika Anda memiliki gambar atau aset lain yang hanya digunakan dalam mode tertentu, muat dengan malas untuk meningkatkan waktu pemuatan awal.

6.2 Kode yang Dapat Dipelihara

Untuk memastikan bahwa kode Anda dapat dipelihara dan mudah dipahami, ikuti praktik terbaik berikut:

  • Gunakan Variabel yang Bermakna: Gunakan nama variabel yang deskriptif untuk membuat kode Anda lebih mudah dibaca.
  • Tambahkan Komentar: Jelaskan kode Anda dengan komentar untuk menjelaskan mengapa Anda melakukan hal-hal tertentu.
  • Modularisasi Kode: Pecah kode Anda menjadi fungsi yang lebih kecil dan dapat digunakan kembali untuk membuatnya lebih mudah untuk diuji dan dipelihara.
  • Konsisten: Ikuti gaya pengkodean yang konsisten di seluruh proyek Anda.

6.3 Kompatibilitas Browser

Kode yang kita tulis kompatibel dengan sebagian besar browser modern. Namun, penting untuk menguji kode Anda di browser yang berbeda untuk memastikan bahwa ia berfungsi seperti yang diharapkan.

Pertimbangkan untuk menggunakan alat seperti BrowserStack atau Saucelabs untuk menguji kode Anda di berbagai browser dan perangkat.

7. Penyelesaian Masalah Umum

7.1 Toggle Tidak Berfungsi

Jika toggle tidak berfungsi, periksa hal-hal berikut:

  • Pastikan bahwa Anda telah menautkan file script.js ke file HTML Anda dengan benar.
  • Pastikan bahwa Anda telah memilih elemen yang benar di JavaScript Anda.
  • Periksa konsol browser Anda untuk kesalahan JavaScript.

7.2 Gaya Tidak Berubah

Jika gaya tidak berubah saat Anda mengaktifkan/menonaktifkan mode, periksa hal-hal berikut:

  • Pastikan bahwa Anda telah menautkan file style.css ke file HTML Anda dengan benar.
  • Pastikan bahwa Anda telah mendefinisikan variabel CSS yang benar.
  • Pastikan bahwa Anda telah menambahkan kelas .dark-mode ke badan saat mode gelap diaktifkan.

7.3 Masalah Penyimpanan Lokal

Jika Anda mengalami masalah dengan penyimpanan lokal, periksa hal-hal berikut:

  • Pastikan bahwa Anda menggunakan sintaks yang benar untuk mengakses penyimpanan lokal.
  • Pastikan bahwa penyimpanan lokal diaktifkan di browser Anda.
  • Periksa apakah Anda telah mencapai batasan penyimpanan lokal.

8. Kesimpulan

8.1 Ringkasan

Dalam tutorial ini, kita telah mempelajari cara membuat toggle mode terang/gelap menggunakan JavaScript murni, tanpa dependensi eksternal. Kita telah membahas langkah-langkah berikut:

  • Menyiapkan struktur HTML.
  • Menata halaman dengan CSS menggunakan variabel untuk tema.
  • Menambahkan logika JavaScript untuk mengaktifkan/menonaktifkan mode dan menyimpan preferensi pengguna.
  • Meningkatkan aksesibilitas dengan kontras warna dan atribut ARIA.
  • Membahas praktik terbaik dan pertimbangan untuk performa, pemeliharaan, dan kompatibilitas browser.

8.2 Langkah Selanjutnya

Sekarang setelah Anda memiliki toggle mode terang/gelap dasar, Anda dapat mengembangkannya lebih lanjut dengan fitur-fitur berikut:

  • Menambahkan lebih banyak opsi tema (misalnya, tema biru).
  • Memungkinkan pengguna untuk menyesuaikan warna.
  • Mendeteksi preferensi tema sistem pengguna dan menerapkan tema yang sesuai secara otomatis.

Terima kasih telah membaca! Saya harap Anda menemukan tutorial ini bermanfaat. Jangan ragu untuk bereksperimen dengan kode dan membuat toggle mode terang/gelap Anda sendiri.

Selamat coding!

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *