Đếm thành phần theo ba nhóm
Trọng số (specificity, độ đặc hiệu) giúp so các bộ chọn khi các mức ưu tiên trước đó bằng nhau. Đếm ba nhóm: **ID → lớp → tên phần tử**.
| Nhóm | Thành phần được đếm | Mốc số dùng trong các ví dụ đơn giản của SGK |
|---|---|---|
| ID |#ten |100|
| Lớp |.ten, [thuoc_tinh], lớp giả như :hover |10|
| Tên phần tử |p, em; phần tử giả như ::first-line |1|
Bộ chọn * và các dấu quan hệ >, +, ~, khoảng trắng không cộng trọng số. Khi so, ưu tiên nhóm ID trước, rồi nhóm lớp, cuối cùng nhóm tên phần tử. Không cộng nhiều lớp để coi là vượt một ID; các mốc 100–10–1 chỉ là cách ghi gọn cho những ví dụ ít thành phần dưới đây.
Lớp vẫn thắng tên thẻ viết sau
```html
<p class="ghi_chu">Một ghi chú ngắn.</p>
```
```css
.ghi_chu { color: green; }
p { color: red; }
```
.ghi_chu có nhóm đếm (0 ID, 1 lớp, 0 tên phần tử), ghi gọn 10 trong ví dụ. p có (0,0,1), ghi gọn 1. Cả hai là quy tắc thông thường trong cùng khối style đang xét, nên .ghi_chu đặt màu green cho đoạn dù p viết sau.
| Bộ chọn | Đếm (ID, lớp, tên phần tử) | Ghi gọn trong ví dụ |
|---|---|---|
| p > em |(0,0,2)|2|
| .ghi_chu #loi_nhac |(1,1,0)|110|
| p.ghi_chu em.them |(0,2,2)|22|
| p > em#tu_khoa |(1,0,2)|102|
.ghi_chu là lớp tự đặt; :hover mới là lớp giả. Cả hai thuộc cùng nhóm đóng góp, nhưng khác cách chọn.
Dấu phẩy tách các phép tính
```html
<h1 class="ghi_chu">A</h1>
<h2 class="ghi_chu">B</h2>
<h3 class="ghi_chu">C</h3>
<h4><span id="moi">D</span></h4>
```
```css
.ghi_chu { color: blue; }
h1, h2, h3, h4 > #moi { color: red; }
```
Danh sách h1, h2, h3, h4 > #moi gồm bốn bộ chọn độc lập. h1, h2, h3 đều có trọng số ghi gọn 1; h4 > #moi có một ID và một tên phần tử, ghi gọn 101. Không cộng bốn phần thành 104 rồi áp cho mọi phần tử.
Trong mẫu, A, B, C vẫn xanh dương bởi lớp .ghi_chu có ưu tiên hơn từng tên thẻ. D được chọn bởi h4 > #moi nên nhận màu đỏ.
Bài luyện
p.ghi_chu em.them có trọng số ghi gọn bao nhiêu trong các ví dụ đơn giản trên?
Mới tính hai tên phần tử.
Mới tính hai lớp.
Không có ID trong bộ chọn này.
Đúng. Hai lớp và hai tên phần tử.
Lời giải
p và em đóng góp1+1; .ghi_chu và .them đóng góp10+10. Nhóm đếm là(0,2,2), ghi gọn 22 trong phạm vi ví dụ.
Bài luyện
Dấu > trong p > em đóng góp thêm bao nhiêu trọng số?
Đúng. Dấu quan hệ không cộng trọng số.
1 là mốc cho tên phần tử/phần tử giả.
10 là mốc nhóm lớp.
100 là mốc ID.
Lời giải
Dấu > đặt điều kiện con trực tiếp nhưng không cộng trọng số. p > em có hai tên phần tử, nên nhóm đếm(0,0,2), ghi gọn 2.
Bài luyện
Danh sách h1,h2,h3,h4 > #moi có các trọng số ghi gọn nào?
Không cộng các bộ chọn tách bằng dấu phẩy.
Đúng. Ba tên thẻ đơn; một bộ chọn có ID và tên thẻ.
Ba bộ chọn đầu không có ID.
Cần xét đúng thành phần của mỗi bộ chọn.
Lời giải
Dấu phẩy tách h1, h2, h3 và h4 > #moi. Mỗi bộ chọn đầu có một tên phần tử nên ghi gọn 1. Bộ chọn cuối có h4 và #moi nên ghi gọn 101.
Bài luyện
Trong cách so các quy tắc thông thường cùng mức, một ID và một bộ chọn có 11 lớp trên cùng phần tử: nhóm nào ưu tiên?
Không dùng phép cộng thập phân làm chuyển sang cột ID.
Thứ tự xét sau khi trọng số bằng nhau.
Đúng. Nhóm ID được so trước.
Một nhóm có ID, nhóm kia không có nên không hòa.
Lời giải
So nhóm đếm theo thứ tự ID, lớp, tên phần tử. Bộ chọn có một ID có cột đầu 1; bộ chọn11 lớp không có ID nên cột đầu 0. Cột ID đã quyết định, không cộng các lớp thành một ID bằng mốc thập phân.
Đang học