Đăng nhập

Bài 25: Biến CSS (CSS Variables) và tổ chức chuyên nghiệp

Khi bạn xây dựng một giao diện lớn, việc dùng lại màu sắc, font-size, khoảng cách là điều chắc chắn. Nếu không có cách tổ chức hợp lý, bạn sẽ phải chỉnh “thủ công” hàng chục nơi nếu chỉ muốn đổi một màu.

CSS Variables (biến CSS) là cách hiện đại để giúp:

  • Tái sử dụng giá trị trong toàn bộ file CSS
  • Dễ đổi theme, màu sắc, kích thước
  • Tổ chức hệ thống thiết kế chuyên nghiệp hơn

1. Khai báo biến trong CSS

Biến được khai báo bằng cú pháp --tên-biến, thường đặt trong :root để dùng toàn cục:

:root {
  --primary-color: #3498db;
  --font-size-base: 16px;
  --spacing: 12px;
}

2. Sử dụng biến

Dùng var(--tên-biến):

body {
  font-size: var(--font-size-base);
  color: var(--primary-color);
  padding: var(--spacing);
}

3. Thay đổi biến theo theme (ví dụ: Dark Mode)

:root {
  --bg-color: white;
  --text-color: black;
}

[data-theme="dark"] {
  --bg-color: #121212;
  --text-color: #f1f1f1;
}

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

→ Khi bạn đổi data-theme="dark" vào thẻ <html>, toàn bộ website sẽ tự chuyển sang nền tối.


4. Đặt fallback (giá trị dự phòng)

h1 {
  color: var(--title-color, #333); /* nếu --title-color chưa khai báo thì dùng #333 */
}

5. Ứng dụng trong hệ thống thiết kế

:root {
  --color-primary: #1abc9c;
  --color-secondary: #f39c12;

  --font-title: 24px;
  --font-text: 16px;

  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 32px;
}
.button {
  background: var(--color-primary);
  padding: var(--space-md) var(--space-lg);
  font-size: var(--font-text);
}

→ Nếu bạn muốn đổi theme, chỉ cần đổi biến ở :root.


6. Biến cục bộ (chỉ trong 1 phần tử)

.card {
  --card-bg: #fff;
  background: var(--card-bg);
}

.card:hover {
  --card-bg: #f0f0f0;
}

→ Biến này chỉ áp dụng trong .card, không ảnh hưởng toàn site.


7. Ưu điểm của CSS Variables

Ưu điểmLợi ích thực tế
Tái sử dụngKhông cần lặp lại cùng một màu nhiều lần
Dễ bảo trìĐổi một lần – hiệu lực toàn bộ giao diện
Hỗ trợ theme độngDùng cho Light/Dark mode dễ dàng
Kết hợp với JavaScriptCó thể đọc và đổi biến CSS bằng JS

8. Lưu ý

  • CSS variables cần trình duyệt hiện đại (hầu hết đều hỗ trợ từ lâu)
  • Khác với biến SCSS (preprocessor), biến CSS là biến runtime, có thể thay đổi động khi chạy

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.