Vị trí khác trạng thái đích
```html
<article>
<h2>Đầu mục</h2>
<p>Đoạn A</p>
<p>Đoạn B</p>
</article>
<section><p>Đoạn C</p></section>
<a href="#dich">Đến đoạn đích</a>
<p id="dich">Đoạn đích</p>
<p class="nhac">Lưu tệp trước khi tải lại.</p>
```
```css
p:first-child { color: blue; }
p:first-of-type { border: 1px solid teal; }
#dich:target { background-color: yellow; }
p.nhac::before { content: "Lưu ý: "; }
p.nhac::after { content: " (hết)"; }
```
p:first-child chọn p là phần tử con đầu tiên của cha: C khớp; A không khớp vì có h2 đứng trước. p:first-of-type chọn p đầu tiên trong các p cùng cha, nên A, C và đoạn đích trong mẫu khớp. Đoạn nhac không khớp vì trước nó đã có p#dich trong cùng body.
Nháy “Đến đoạn đích” đổi phần đích của địa chỉ sang #dich; #dich:target đặt nền vàng cho đoạn ấy. Khi đích địa chỉ đổi sang phần khác, điều kiện này không còn thỏa.
p.nhac::before thêm chữ “Lưu ý: ” trước nội dung hiển thị; ::after thêm “ (hết)” sau nội dung. Nội dung gốc trong p vẫn là câu nhắc lưu tệp; không cần thêm hai thẻ HTML để tạo các phần hiển thị này.
Một tên thẻ thêm một điều kiện
#muc + p chọn p liền sau phần tử có id muc, cùng cha. h2#muc + p yêu cầu phần tử đứng trước ấy còn phải là h2. Vì vậy, nếu đổi phần tử mang id muc thành div, bộ chọn đầu vẫn có thể khớp p, còn bộ chọn thứ hai không khớp.
Giữ cách đọc phần tử cuối và từng điều kiện như các bài bộ chọn quan hệ trước, rồi mới xét định dạng.
Bài luyện
Trong article có h2 rồi p A rồi p B, p:first-child có chọn A không?
p đầu tiên theo loại khác con đầu tiên của cha.
Cần đúng vị trí đầu tiên trong các phần tử con.
Đúng. A không phải con đầu tiên.
Có thể dùng :first-child cho p khi thỏa điều kiện.
Lời giải
Các phần tử con của article bắt đầu bằng h2, sau đó mới p A. Vì vậy A không khớp :first-child; A là p đầu tiên nên có thể khớp :first-of-type.
Bài luyện
Thay h2 mang id muc bằng div, giữ p liền sau và cùng cha. Bộ chọn nào vẫn có thể chọn p?
Đúng. Không yêu cầu tên thẻ của phần tử mang id.
Không còn h2 mang id muc.
muc không phải phần tử giả đang học.
Lớp muc cũng khác id muc và vẫn đòi h2.
Lời giải
#muc + p chỉ yêu cầu phần tử trước mang id muc, nên div vẫn có thể đáp ứng. h2#muc + p đòi phần tử ấy là h2, nên không khớp sau khi đổi thành div.
Bài luyện
Trong mẫu, p.nhac::before với content:"Lưu ý: "; làm gì?
content không đổi thuộc tính id.
Không có yêu cầu tạo liên kết.
Nội dung gốc vẫn còn.
Đúng. ::before tạo phần trước nội dung.
Lời giải
::before tạo phần hiển thị trước nội dung của phần tử được chọn. content cung cấp chữ “Lưu ý: ”; nội dung gốc trong p.nhac vẫn giữ, sau đó ::after có thể thêm phần cuối.
Đang học