Implementasi Dark Mode Mudah: Tampilan Gelap Menawan dengan Tailwind CSS (Part 9)

Rifqi An Rifqi An
Maret 05, 2026


Implementasi Dark Mode Mudah: Tampilan Gelap Menawan dengan Tailwind CSS (Part 9)

Pernah gak sih, lagi asyik ngoding sampai larut malam, tiba-tiba mata pedih karena layar putih menyilaukan? Atau pas buka aplikasi di HP, kaget karena silau padahal lagi di tempat gelap? Nah, itu dia salah satu derita kita para programmer atau pengguna aplikasi! Tapi tenang, di seri Belajar Tailwind CSS yang kesembilan ini, kita bakal kupas tuntas cara bikin Dark Mode yang bukan cuma estetik, tapi juga ramah mata dan siap bikin aplikasi kalian makin profesional! Siap-siap, karena Tailwind CSS bakal jadi penyelamat kita!

Daftar Isi

Kenapa Dark Mode Penting? (Bukan Cuma Gaya-gayaan!)

Dulu, Dark Mode mungkin cuma dianggap fitur pelengkap atau gaya-gayaan. Tapi sekarang? Jadi fitur wajib, bro! Selain bikin tampilan jadi lebih cool dan modern, ada beberapa alasan kenapa Dark Mode itu penting banget:

  • Mata Lebih Santai: Ini sih yang paling utama. Cahaya terang di malam hari itu bisa bikin mata cepat lelah. Dengan Dark Mode, mata kita bisa bernapas lega.
  • Hemat Baterai: Khusus buat layar OLED/AMOLED, piksel hitam itu artinya piksel mati. Artinya, konsumsi daya bisa jauh lebih rendah. Lumayan kan, buat nambah durasi ngopi sambil ngoding?
  • Fokus Lebih Baik: Kontras teks putih di latar belakang gelap seringkali bikin tulisan lebih menonjol, jadi kita bisa lebih fokus pada konten.
  • Estetika & Branding: Aplikasi yang punya Dark Mode kelihatan lebih profesional dan modern. Ini juga bisa jadi bagian dari identitas brand lho!

Jadi, bukan cuma gaya-gayaan. Ini soal kenyamanan, efisiensi, dan profesionalisme!

Persiapan Tempur: Setting Awal Tailwind CSS untuk Dark Mode

Oke, biar gak bertele-tele, langsung aja kita siapkan amunisi. Pastikan kalian sudah instal Tailwind CSS ya (kalau belum, bisa intip seri sebelumnya!). Kunci utama untuk mengaktifkan Dark Mode di Tailwind ada di file konfigurasi kita, yaitu tailwind.config.js. Ada dua cara utama untuk mengaktifkannya:

  • darkMode: 'media': Tailwind akan otomatis mengikuti preferensi sistem operasi pengguna. Kalau OS-nya disetel Dark Mode, web kita juga otomatis Dark Mode. Gak perlu intervensi JavaScript. Simpel!
  • darkMode: 'class': Ini lebih fleksibel. Tailwind akan mencari kelas .dark di elemen induk (biasanya <html>). Kita bisa tambahkan atau hapus kelas ini menggunakan JavaScript untuk mengaktifkan/menonaktifkan Dark Mode secara manual.

Biasanya, kita pakai 'class' kalau mau ada toggle manual. Kalau cuma mau otomatis, pakai 'media'. Tapi di tutorial ini, kita bakal coba keduanya supaya kalian paham! Mari kita ubah file tailwind.config.js kalian:


// tailwind.config.js
module.exports = {
  // Kita aktifkan kedua mode, biar fleksibel!
  // 'media' akan mengikuti preferensi sistem, 'class' memungkinkan toggle manual
  darkMode: ['media', 'class'], 
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

Dengan darkMode: ['media', 'class'], Tailwind jadi super fleksibel. Ia akan pertama-tama memeriksa preferensi sistem, tapi kalau ada kelas dark di elemen <html>, itu yang akan diutamakan. Keren, kan?

Mode Otomatis (Preferensi Sistem): Biar Otak Gak Mikir

Ini adalah cara termudah dan paling minim usaha. Cukup set darkMode: 'media' (atau biarkan jika sudah array seperti di atas), lalu gunakan modifier dark: di kelas Tailwind kalian. Contoh:


<div class="bg-white text-gray-900 dark:bg-gray-800 dark:text-gray-100 p-4 rounded-lg shadow-md">
  <h3 class="text-lg font-bold dark:text-blue-300">Halo, Dunia Gelap!</h3>
  <p>Konten ini akan otomatis menyesuaikan dengan preferensi Dark Mode sistem operasi Anda. Mantap!</p>
</div>

Gampang banget, kan? Kalau OS kalian Dark Mode, otomatis bg-white jadi bg-gray-800 dan text-gray-900 jadi text-gray-100. Teks judul juga jadi text-blue-300. Kalian gak perlu ngapa-ngapain lagi setelah ini. Tailwind CSS yang akan urus sisanya.

Toggle Manual: Sakelar On/Off Ala Programmer

Kalau kita mau pengguna bisa pilih sendiri, mau Dark Mode atau Light Mode, nah ini saatnya kita pakai darkMode: 'class'. Caranya adalah dengan menambahkan atau menghapus kelas dark di elemen <html> kita. Ini biasanya dibantu sama sedikit JavaScript.

Misalnya, kalau elemen <html> punya kelas dark:


<html class="dark">
  <!-- Konten Dark Mode -->
</html>

Tailwind akan mengaktifkan semua utility class dengan prefiks dark:. Kalau kelas dark ini dihapus, dia akan kembali ke Light Mode. Ini sangat powerful karena kita punya kendali penuh!

Struktur HTML & Styling Dasar

Oke, mari kita buat struktur HTML dasar yang akan kita aplikasikan Dark Mode-nya. Kita akan membuat sebuah card sederhana dan sebuah tombol untuk toggle Dark Mode-nya.


<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Dark Mode dengan Tailwind CSS (Part 9)</title>
  <!-- Pastikan CSS Tailwind kalian sudah ter-link di sini -->
  <link href="/dist/output.css" rel="stylesheet">
  <!-- Kalian bisa pakai link ini kalau pakai CDN (TIDAK disarankan untuk produksi!) -->
  <!-- <script src="https://cdn.tailwindcss.com"></script> -->
</head>
<body class="bg-gray-100 text-gray-900 dark:bg-gray-900 dark:text-gray-50 min-h-screen flex items-center justify-center p-4">

  <div class="bg-white dark:bg-gray-800 p-8 rounded-xl shadow-lg w-full max-w-md transition-colors duration-300">
    <h2 class="text-3xl font-bold mb-4 text-center dark:text-blue-400">Implementasi Dark Mode</h2>
    
    <p class="text-gray-700 dark:text-gray-300 mb-6 text-center">
      Ini adalah konten yang akan berubah warnanya saat Dark Mode diaktifkan. Keren, kan?
    </p>

    <div class="flex justify-center mb-6">
      <button id="darkModeToggle" 
              class="bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded-full transition-colors duration-300 
                     dark:bg-purple-600 dark:hover:bg-purple-700">
        Toggle Dark Mode
      </button>
    </div>

    <div class="border-t pt-4 border-gray-200 dark:border-gray-700">
      <h3 class="text-xl font-semibold mb-2 dark:text-orange-300">Detail Info:</h3>
      <ul class="list-disc list-inside text-gray-600 dark:text-gray-400">
        <li>Fitur ini ramah mata untuk sesi <em>ngoding</em> malam.</li>
        <li>Hemat baterai di layar OLED.</li>
        <li>Desain jadi makin <em>ciamik</em>!</li>
      </ul>
    </div>
  </div>

  <script src="./script.js"></script> <!-- Kita akan buat file script.js ini -->
</body>
</html>

Perhatikan di elemen <body> dan div card kita. Ada kelas seperti dark:bg-gray-900 atau dark:text-gray-50. Itu artinya, kalau elemen <html> punya kelas dark, maka bg-gray-100 akan diganti jadi bg-gray-900, dan seterusnya. Canggih!

Sedikit JavaScript untuk Toggle

Nah, sekarang giliran JavaScript untuk menghidupkan tombol toggle kita. Buat file baru bernama script.js di folder yang sama dengan index.html kalian, lalu copas kode ini:


// script.js

const darkModeToggle = document.getElementById('darkModeToggle');
const htmlElement = document.documentElement; // Ini adalah elemen <html>

// Fungsi untuk memeriksa preferensi Dark Mode dari local storage atau sistem
function initDarkMode() {
  const isDarkMode = localStorage.getItem('darkMode');
  if (isDarkMode === 'true') {
    htmlElement.classList.add('dark');
  } else if (isDarkMode === null && window.matchMedia('(prefers-color-scheme: dark)').matches) {
    // Jika belum ada di local storage, tapi sistemnya Dark Mode
    htmlElement.classList.add('dark');
  }
}

// Panggil fungsi inisialisasi saat script dimuat
initDarkMode();

darkModeToggle.addEventListener('click', () => {
  if (htmlElement.classList.contains('dark')) {
    htmlElement.classList.remove('dark');
    localStorage.setItem('darkMode', 'false'); // Simpan preferensi pengguna
  } else {
    htmlElement.classList.add('dark');
    localStorage.setItem('darkMode', 'true'); // Simpan preferensi pengguna
  }
});

// Optional: Dengarkan perubahan preferensi sistem secara real-time
// Kalau pengguna ganti setting Dark Mode di OS-nya pas lagi buka web kita
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
  if (!localStorage.getItem('darkMode')) { // Hanya kalau belum ada preferensi manual
    if (event.matches) {
      htmlElement.classList.add('dark');
    } else {
      htmlElement.classList.remove('dark');
    }
  }
});

Kode JavaScript di atas lumayan komplit! Dia akan:

  1. Mengecek apakah ada preferensi Dark Mode di Local Storage (ini buat ngingat pilihan pengguna).
  2. Kalau belum ada di Local Storage, dia akan ngecek preferensi Dark Mode di sistem operasi.
  3. Saat tombol diklik, dia akan menambahkan atau menghapus kelas dark di elemen <html>, dan juga menyimpan preferensi ke Local Storage.
  4. Bahkan dia bisa mendengarkan perubahan preferensi sistem secara real-time! Ciamik, kan?

Jadi, meskipun kita pakai darkMode: ['media', 'class'], preferensi manual yang disimpan di Local Storage akan diutamakan. Pengguna puas, programmer bahagia!

Pengujian: Pastikan Gak Ada Bug Hitam!

Setelah semua kode terpasang, sekarang saatnya pengujian. Buka file index.html kalian di browser. Coba klik tombol "Toggle Dark Mode". Apakah tampilannya berubah sesuai ekspektasi? Pastikan semua elemen yang kalian set dengan prefiks dark: benar-benar berubah warnanya. Coba juga:

  • Buka di incognito mode (untuk cek preferensi awal sistem).
  • Coba ganti Dark Mode di pengaturan OS/HP kalian (jika kalian belum pernah toggle manual).
  • Refresh halaman setelah mengganti preferensi.

Kalau ada bug, jangan panik! Pastikan kalian sudah menjalankan perintah npx tailwindcss -i ./src/input.css -o ./dist/output.css --watch (atau sejenisnya, tergantung setup kalian) agar Tailwind CSS meng-compile perubahan ke file CSS kalian. Seringkali masalah muncul karena CSS-nya belum ter-update.

Latihan: Misi Rahasia Dark Mode

Oke para developer, misi kalian selanjutnya adalah:
Bayangkan kalian kerja di sebuah startup yang jual kopi. Bos kalian baru saja pulang dari acara "Web Design Summit" dan tiba-tiba bilang, "Kita butuh Dark Mode di halaman produk kita! Katanya bisa bikin kopi kelihatan lebih elegan di malam hari. Implementasikan dalam satu jam ya, saya tunggu sambil ngopi."

Maka, tugas kalian adalah:

  1. Buat satu komponen baru, misalnya sebuah "Product Card" untuk produk kopi.
  2. Di dalam Product Card itu, tampilkan nama kopi (misal: "Kopi Arabica Moka"), harga, dan deskripsi singkat.
  3. Pastikan Product Card ini punya animasi transisi warna yang halus saat Dark Mode diaktifkan/dinonaktifkan (clue: transition-colors duration-300).
  4. Integrasikan dengan toggle Dark Mode yang sudah kita buat sebelumnya.
  5. Gunakan palet warna yang membuat kopi terlihat "elegan" di Dark Mode (misal: dark:text-amber-200 atau dark:bg-stone-700). Jangan lupa, di Light Mode warnanya harus tetap ceria!

Selamat mengerjakan, semoga deadline satu jam kalian sukses dan bos kalian makin kagum! Jangan lupa, kalau error, coba copas kode kalian ke ChatGPT atau Stack Overflow. Itu sudah jadi budaya kita, kan? Hehehe.

Sampai jumpa di Part 10, di mana kita akan bahas topik Tailwind CSS yang lain yang gak kalah seru!

Bagikan Artikel Ini