Trong CSS, xung đột xảy ra khi nhiều quy tắc kiểu cùng áp dụng cho một phần tử. Cascade (chuỗi ưu tiên) xác định cách trình duyệt quyết định quy tắc nào sẽ được áp dụng — dựa trên thứ tự, mức độ ưu tiên (specificity), kế thừa và !important. Hiểu về thứ bậc này là điều quan trọng giúp bạn kiểm soát hiệu quả giao diện trong Visual Editor của Nilead và khi viết CSS tùy chỉnh.
Hiểu biết về HTML và cú pháp CSS cơ bản
Có quyền truy cập Bảng Kiểu (Style Panel) hoặc bảng Mã Tùy chỉnh (Custom Code) của Nilead
Có ít kinh nghiệm áp dụng class, ID, và selector
Cascade là hệ thống mà trình duyệt dùng để xác định quy tắc CSS nào sẽ áp dụng khi nhiều quy tắc cùng nhắm đến một phần tử.
Ví dụ:
h1 { color: red; }
h1 { color: blue; }<h1>This is my heading</h1>Văn bản hiển thị màu xanh vì quy tắc thứ hai được khai báo sau và có cùng mức độ ưu tiên (specificity).
Specificity (độ ưu tiên) đo lường mức độ "nhắm chính xác" của một selector:
Selector phần tử (h1, p) là mức thấp nhất
Selector class (.title) có độ ưu tiên cao hơn
Selector ID (#hero) là cao nhất (không tính !important)
Ví dụ:
h1 { color: blue; }
.main-heading { color: red; }<h1 class="main-heading">This is my heading</h1>Nó sẽ là màu đỏ, vì .main-heading có độ ưu tiên cao hơn h1.
Khai báo !important ghi đè tất cả các quy tắc khác — ngay cả khi chúng có độ ưu tiên cao hơn hoặc được khai báo sau.
Ví dụ:
#winning { background-color: red; }
.better { background-color: gray !important; }<p class="better" id="winning">One selector to rule them all!</p>
Đoạn văn này sẽ có màu xám, không phải đỏ — vì !important sẽ ghi đè mọi quy tắc khác.
Chỉ nên sử dụng !important khi thực sự cần thiết — nó khiến CSS khó kiểm soát và điều chỉnh hơn.
Một số thuộc tính (như color, font-family) sẽ được kế thừa từ các phần tử cha sang phần tử con.
body { color: blue; }Tất cả văn bản bên trong đều sẽ có màu xanh lam, trừ khi có quy tắc khác ghi đè.
Để kiểm soát việc kế thừa, CSS cung cấp các giá trị đặc biệt:
Từ khóa | Hành vi |
|---|---|
inherit | Bắt buộc thuộc tính giống như phần tử cha |
initial | Thiết lập lại giá trị mặc định của trình duyệt |
unset | Cư xử như inherit với thuộc tính có thể kế thừa, còn lại sẽ giống như initial |
revert | Trở lại kiểu của trình duyệt/người dùng (hỗ trợ còn hạn chế) |
Bạn có thể viết CSS tại ba vị trí:
Phương pháp | Độ ưu tiên | Ví dụ |
|---|---|---|
CSS nội dòng (Inline CSS) | Cao nhất (trừ !important) | <h1 style="color: red;"> |
CSS nội bộ (Internal CSS) | Trung bình | Bên trong thẻ <style> trong <head> |
CSS bên ngoài (External CSS) | Thấp nhất | Kết nối file .css bên ngoài |
🔥 Thứ tự quan trọng — các quy tắc viết sau có thể ghi đè các quy tắc trước nếu có cùng mức độ cụ thể.
Kiểu dáng cuối cùng = tổng hợp kết quả của tất cả các quy tắc phù hợp, áp dụng theo thứ tự này (từ cao đến thấp):
Kiểu nội dòng
Bảng định kiểu nội bộ (trong thẻ <style>)
Bảng định kiểu bên ngoài (liên kết trong thẻ <head>)
Mặc định trình duyệt
Thêm !important để đảm bảo một quy tắc sẽ ghi đè tất cả quy tắc khác.
1. Điều gì xảy ra nếu có hai quy tắc có cùng độ cụ thể?
Quy tắc nào được khai báo sau sẽ thắng.
2. Liệu !important có vượt qua độ cụ thể không?
Có — nó ghi đè cả độ cụ thể và thứ tự quy tắc.
3. Tôi có thể ghi đè kiểu dáng kế thừa không?
Có — bạn chỉ cần đặt một quy tắc cụ thể hơn hoặc sử dụng initial, unset hoặc inherit.
4. Cách tổ chức CSS an toàn nhất trong Nilead là gì?
Hãy sử dụng class để có thể tái sử dụng, và quản lý sự ghi đè qua Style Panel hoặc CSS bên ngoài, không dùng inline.
5. Tôi có thể sử dụng nhiều stylesheet không?
Có, nhưng hãy chú ý đến thứ tự tải — các stylesheet tải sau có thể ghi đè những stylesheet trước.