Bài học hiện đang bằng tiếng Séc. Giao diện đã được dịch – nội dung bài học sẽ sớm có.

← Cấp 2 – Pháp sư

Bài 4 / 8 ⏱ 30 phút

Chế độ tối cho website

Công tắc sáng/tối mà website nhớ cả sau khi bạn đóng trình duyệt.

Cách hoạt động

Chế độ tối là phép thuật gồm hai phần:

  1. CSS chuẩn bị “bộ trang phục” thứ hai – quy tắc chỉ áp dụng khi trang có class dark.
  2. JavaScript thêm hoặc bỏ class đó khi bấm. Và ghi lựa chọn vào bộ nhớ trình duyệt, để ngày mai vẫn còn.

Xem này: bộ trang phục tối trong CSS

Thêm vào cuối style.css:

body.dark {
  background-color: #1c1917;
  color: #f5f0ea;
}

body.dark h1,
body.dark h2 {
  color: #93c5fd;
}

body.dark .card {
  background-color: #292524;
  color: #f5f0ea;
}

Đọc như thế này: “Khi body có class dark, các quy tắc này áp dụng.” Không có class thì không dùng gì cả.

💡

Chỉnh màu cho hợp website – duyệt CSS và nghĩ phiên bản tối cho mọi màu sáng. Quy tắc vẫn vậy: nền tối → chữ sáng.

Xem này: công tắc trong JavaScript

Thêm nút vào header (bên trong <nav>):

<button id="switch">🌙</button>

Và trong script.js:

const switchButton = document.getElementById("switch");

// When the page loads: remember what the visitor picked last time
if (localStorage.getItem("mode") === "dark") {
  document.body.classList.add("dark");
  switchButton.textContent = "☀️";
}

switchButton.addEventListener("click", () => {
  document.body.classList.toggle("dark");

  if (document.body.classList.contains("dark")) {
    localStorage.setItem("mode", "dark");
    switchButton.textContent = "☀️";
  } else {
    localStorage.setItem("mode", "light");
    switchButton.textContent = "🌙";
  }
});

Ba thứ mới:

Đến lượt bạn 💪

  1. Thêm bộ trang phục tối vào style.css – duyệt mọi màu (nền, header, thẻ card, footer, badge) và cho chúng phiên bản tối dưới body.dark.
  2. Thêm nút công tắc vào header trên mọi trang và code vào script.js.
  3. Thử: chuyển sang tối, đóng trình duyệt, mở lại website – phải mở thẳng vào chế độ tối.
Ví dụ bộ trang phục tối đầy đủ hơn (chỉnh màu cho dự án của bạn)
body.dark {
  background-color: #1c1917;
  color: #f5f0ea;
}

body.dark h1,
body.dark h2,
body.dark h3 {
  color: #93c5fd;
}

body.dark header {
  background-color: #0f172a;
}

body.dark .card {
  background-color: #292524;
  color: #f5f0ea;
  box-shadow: none;
}

body.dark footer {
  background-color: #0f172a;
}

body.dark a {
  color: #93c5fd;
}

Tự kiểm tra: Bấm 🌙 website chuyển tối (và biểu tượng đổi thành ☀️), bấm ☀️ sáng lại. Sau khi đóng và mở lại trình duyệt, website nhớ lựa chọn. Đây là tính năng mà nhiều website “người lớn” còn chưa có!

Điều cần nhớ từ bài học này