Độ đặc hiệu của bộ chọn CSS là gì và nó hoạt động như thế nào?
Trình duyệt xác định kiểu hiển thị trên một phần tử tùy thuộc vào độ đặc hiệu của các quy tắc CSS. Chúng ta giả định rằng trình duyệt đã xác định các quy tắc phù hợp với một phần tử cụ thể. Trong số các quy tắc phù hợp, độ đặc hiệu, bốn giá trị được phân tách bằng dấu phẩy, 'a, b, c, d' được tính cho mỗi quy tắc dựa trên những điều sau:
- 'a' là liệu các kiểu nội tuyến có đang được sử dụng hay không. Nếu khai báo thuộc tính là một kiểu nội tuyến trên phần tử, 'a' là 1, ngược lại là 0.
- 'b' là số lượng bộ chọn ID.
- 'c' là số lượng lớp, thuộc tính và bộ chọn giả lớp.
- 'd' là số lượng thẻ và bộ chọn giả phần tử.
Độ đặc hiệu kết quả không phải là một điểm số, mà là một ma trận các giá trị có thể so sánh theo cột. Khi so sánh các bộ chọn để xác định bộ chọn nào có độ đặc hiệu cao nhất, hãy nhìn từ trái sang phải và so sánh giá trị cao nhất trong mỗi cột. Vì vậy, một giá trị trong cột 'b' sẽ ghi đè các giá trị trong cột 'c' và 'd', bất kể chúng có thể là gì. Do đó, độ đặc hiệu của '0,1,0,0' sẽ lớn hơn '0,0,10,10'.
Trong trường hợp độ đặc hiệu bằng nhau: quy tắc mới nhất là quy tắc được tính. Nếu bạn đã viết cùng một quy tắc vào bảng kiểu của mình (bất kể nội bộ hay bên ngoài) hai lần, thì quy tắc thấp hơn trong bảng kiểu của bạn càng gần phần tử cần được tạo kiểu, nó được coi là đặc hiệu hơn và do đó sẽ được áp dụng.
Tôi sẽ viết các quy tắc CSS với độ đặc hiệu thấp để chúng có thể dễ dàng bị ghi đè nếu cần. Khi viết mã thư viện thành phần giao diện người dùng CSS, điều quan trọng là chúng phải có độ đặc hiệu thấp để người dùng thư viện có thể ghi đè chúng mà không cần sử dụng các quy tắc CSS quá phức tạp chỉ để tăng độ đặc hiệu hoặc phải dùng đến '!important'.