Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

วิธีสลับโหมดมืด/สว่าง (Dark/Light Mode) ด้วย CSS และ JavaScript

Toggle Dark Mode: เปลี่ยนธีมสีทั้งหน้าด้วย Class บน Body

วิธีมาตรฐานคือ toggle class .dark-mode บน <body> แล้วกำหนดสีพื้นหลัง/ข้อความใน CSS ตาม class นั้น ใช้ JavaScript เพียงฟังก์ชัน toggle class

โค้ดตัวอย่าง

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <style>
    body {
      padding: 25px;
      background-color: white; color: black;
      font-size: 25px; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
      transition: background-color 0.3s, color 0.3s; /* เพิ่ม transition ให้นุ่ม */
    }
    .dark-mode {
      background-color: black; color: white;
    }
    .toggleButton {
      padding: 12px; font-size: 18px; border: 2px solid green; cursor: pointer;
    }
  </style>
</head>
<body>
  <h1>ตัวอย่าง Toggle Dark/Light Mode</h1>
  <button class="toggleButton">สลับโหมดมืด</button>
  <h2>คลิกปุ่มข้างบนเพื่อสลับโหมด</h2>
  <script>
    document.querySelector(".toggleButton").addEventListener("click", toggleDarkMode);
    function toggleDarkMode() {
      document.body.classList.toggle("dark-mode");
    }
  </script>
</body>
</html>

ขยายความสามารถ

  • บันทึก preference: ใช้ localStorage จำสถานะ โหลดตอน refresh
  • ตรวจสอบ system preference: window.matchMedia('(prefers-color-scheme: dark)') ตั้งค่าเริ่มต้นตาม OS
  • CSS Custom Properties: กำหนดสีใน :root แล้วเปลี่ยนค่าตัวแปร – จัดการสีหลายค่าได้ง่าย

ตัวอย่าง CSS Variables

:root {
  --bg: white; --text: black; --accent: #445deb;
}
.dark-mode {
  --bg: black; --text: white; --accent: #8b9cff;
}
body { background: var(--bg); color: var(--text); }
button { background: var(--accent); }

วิธีนี้ scalable ที่สุด สำหรับโปรเจกต์จริง ควรใช้ CSS Variables + localStorage + system preference detection