ToolHub
View All Posts

Hướng Dẫn Thiết Kế Web Dark Mode: Triển Khai và Thực Hành Tốt Nhất

Dark mode đã chuyển từ tính năng thích hợp thành kỳ vọng chính thống. Người dùng ngày càng mong đợi các trang web và ứng dụng tôn trọng tùy chọn giao diện của họ, cho dù họ thích light mode, dark mode hay tự động chuyển đổi dựa trên thời gian trong ngày. Hướng dẫn này bao gồm mọi thứ bạn cần để triển khai dark mode chuyên nghiệp, dễ tiếp cận, hoạt động trên tất cả các thiết bị.

Dark Mode Là Gì?

Dark mode (còn gọi là chủ đề tối hoặc chế độ ban đêm) là giao diện màu sắc sử dụng nền tối với văn bản sáng. Nó đảo ngược bảng màu sáng truyền thống để giảm phát xạ ánh sáng từ màn hình. Ngoài sở thích thẩm mỹ đơn thuần, dark mode còn có những lợi ích thực tế cho người dùng và nhà phát triển.

Dark mode giảm mỏi mắt trong môi trường ánh sáng yếu, tiết kiệm pin trên màn hình OLED (pixel đen thực sự tắt), và có thể giúp người dùng có một số khiếm khuyết thị giác nhất định. Nhiều người dùng chỉ đơn giản thấy nó trông đẹp hơn và bớt gây phân tâm hơn.

Lợi Ích Của Dark Mode

Đối với nhà phát triển, dark mode thể hiện sự chú ý đến trải nghiệm người dùng và khả năng tiếp cận. Nó cũng có thể làm nổi bật các yếu tố thiết kế bằng cách tạo ra độ tương phản cao hơn cho nội dung quan trọng và giảm sự lộn xộn thị giác.

Tại Sao Dark Mode Quan Trọng

Cách đơn giản nhất để triển khai dark mode là sử dụng media query prefers-color-scheme của CSS. Media query này phát hiện cài đặt chủ đề ở cấp hệ điều hành và tự động áp dụng style phù hợp.

Thành PhầnLight ModeDark Mode
Nền trang#FFFFFF#121212
Không dùng đen thuầnNền thẻ#FFFFFF
#1E1E1ENổi nhẹ trên nềnVăn bản chính
#1a1a1a#E0E0E0Độ tương phản cao

Lợi Ích Cho Người Dùng

Sử dụng biến CSS tùy chỉnh (custom properties) là cách hiệu quả nhất để quản lý chủ đề. Định nghĩa tất cả màu sắc dưới dạng biến trong :root, sau đó ghi đè chúng trong media query dark mode. Cách tiếp cận này tập trung hóa việc quản lý màu sắc và làm cho việc bảo trì trở nên đơn giản.

Lợi Ích Cho Nhà Phát Triển

Đối với các trang web hiện có không thể thiết kế lại hoàn toàn, CSS filter: invert() cung cấp một giải pháp dark mode nhanh chóng. Tuy nhiên, nó đảo tất cả màu sắc bao gồm hình ảnh, vì vậy hãy sử dụng nó một cách có chọn lọc và đảo ngược lại hình ảnh để giữ màu gốc của chúng.

Triển Khai Dark Mode CSS

Đối với các trang web cần người dùng chọn thủ công giữa light và dark mode, JavaScript cung cấp các toggle tương tác. Cách tiếp cận này cũng cho phép lưu trữ tùy chọn của người dùng.

prefers-color-scheme

:root {
  --bg: #f8fafc;
  --bg-card: #ffffff;
  --text: #1e293b;
  --text-muted: #64748b;
  --primary: #3b82f6;
  --border: #e2e8f0;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0f172a;
    --bg-card: #1e293b;
    --text: #e2e8f0;
    --text-muted: #94a3b8;
    --primary: #60a5fa;
    --border: #334155;
  }
}

body {
  background: var(--bg);
  color: var(--text);
}

Biến CSS Tùy Chỉnh

Lưu trữ tùy chọn chủ đề của người dùng trong localStorage để nó tồn tại qua các phiên. Điều này tôn trọng lựa chọn của người dùng và ngăn chặn việc đặt lại về mặc định khi họ điều hướng hoặc quay lại.

function toggleTheme() {
  const current = document.documentElement.dataset.theme;
  const next = current === 'dark' ? 'light' : 'dark';
  document.documentElement.dataset.theme = next;
  localStorage.setItem('theme', next);
}

// On page load
const saved = localStorage.getItem('theme');
if (saved) {
  document.documentElement.dataset.theme = saved;
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
  document.documentElement.dataset.theme = 'dark';
}

kiểm tra localStorage trước khi trang hiển thị.

[data-theme="dark"] {
  --bg: #0f172a;
  --bg-card: #1e293b;
  --text: #e2e8f0;
}

Tôn Trọng Tùy Chọn Hệ Thống

Chọn màu dark mode đòi hỏi suy nghĩ cẩn thận. Không chỉ đơn giản là đảo ngược màu sắc — màu dark mode hiệu quả duy trì phân cấp thị giác, khả năng đọc và nhận diện thương hiệu trong khi giảm mỏi mắt.

Chuyển Đổi Chủ Đề Bằng JavaScript

Sử dụng màu xám đậm (#121212 hoặc #1a1a1a) thay vì đen thuần khiết (#000000) cho nền. Màu đen thuần khiết tạo ra độ tương phản quá mức với văn bản trắng, gây mỏi mắt. Màu tối với một chút sắc thái tạo ra trải nghiệm đọc thoải mái hơn.

[data-theme="dark"] img {
  filter: brightness(0.9);
}

[data-theme="dark"] .logo-dark {
  display: inline-block;
}

[data-theme="dark"] .logo-light {
  display: none;
}

Các Mẫu Màu Dark Mode

Màu sắc thương hiệu cần điều chỉnh cho dark mode. Màu sắc bão hòa trông rực rỡ trên nền sáng có thể trông quá gay gắt trên nền tối. Sử dụng phiên bản khử bão hòa hoặc sáng hơn của màu thương hiệu cho dark mode.

Các Lỗi Dark Mode Thường Gặp

Đổ bóng hoạt động khác nhau trong dark mode. Thay vì đổ bóng tối, sử dụng đổ bóng sáng hoặc viền để tạo độ sâu. Box-shadow với màu sáng thay vì tối tạo ra hiệu ứng nổi tinh tế.

Kiểm Tra Độ Tương Phản

Dark Mode và Khả Năng Tiếp Cận

Chiến Lược Đảo Màu

Hình ảnh có nền trắng có thể trông chói mắt trong dark mode. Giảm độ sáng của hình ảnh bằng CSS filter: brightness(0.8) hoặc sử dụng hình ảnh dark mode riêng biệt. Logo thường cần phiên bản dark mode.

Toggle Thủ Công

Đảm bảo văn bản duy trì độ tương phản WCAG AA ít nhất 4.5:1 trong dark mode. Văn bản màu xám nhạt trên nền tối thường không đạt yêu cầu. Kiểm tra tất cả các kết hợp màu bằng công cụ kiểm tra độ tương phản.

Lưu Trữ Tùy Chọn

Màu đen thuần khiết (#000) tạo ra độ tương phản khắc nghiệt làm tăng mỏi mắt. Sử dụng màu xám rất đậm với một chút sắc thái thay thế. Material Design khuyến nghị #121212 làm màu nền dark mode.

Tránh Flash Nội Dung

Không đảo hình ảnh khi sử dụng bộ lọc CSS cho dark mode. Hình ảnh có màu sắc sẽ trông không tự nhiên khi bị đảo. Áp dụng filter: invert() cho văn bản và nền nhưng đảo ngược lại cho hình ảnh.

Màu Nền và Màu Chữ

Focus indicator phải vẫn nhìn thấy được trong dark mode. Vòng focus mặc định của trình duyệt có thể không đủ tương phản trên nền tối. Thiết kế focus indicator tùy chỉnh hoạt động trong cả hai chủ đề.