Cùng cha và đứng sau
E + F chọn F khi F là phần tử liền sau E và cả hai cùng cha. E ~ F chọn những F đứng sau E, cùng cha, có thể có phần tử khác xen giữa. Cả hai đều nhắm tới F, không chọn E hoặc F đứng trước E.
Liền kề ở đây xét **phần tử**. Đoạn chữ thường, khoảng trắng và chú thích HTML giữa E và F không làm mất quan hệ +. Một phần tử span xen giữa thì có thể làm mất quan hệ ấy. Việc màn hình tự ngắt dòng không thay đổi quan hệ trong cây HTML.
Theo dõi từng strong
```html
<p>
<strong>Trước</strong>
<em>Mốc</em> có một đoạn chữ
<!-- Chú thích không phải phần tử -->
<strong>A</strong>
<span>Ngăn</span>
<strong>B</strong>
<span><strong>C</strong></span>
</p>
```
Các strong Trước, A và B có cha p; strong C có cha span. Với em + strong, chỉ A khớp vì A là phần tử ngay sau em. Chữ “có một đoạn chữ” và chú thích ở giữa không phải phần tử.
Với em ~ strong, A và B khớp. Trước không khớp vì đứng trước em; C không khớp vì khác cha. Nếu đổi quy tắc màu đỏ từ ~ sang + thì A vẫn đỏ, còn B không được quy tắc ấy tô đỏ nữa.
Kiểm cả phần tử thứ hai
Mở hai tệp mẫu và so sánh A với B. Tệp liền kề dùng em + strong { color: red; }; tệp đứng sau dùng em ~ strong { color: red; }.
Trong hai tệp không có quy tắc màu khác: A và B đều đỏ ở mẫu ~; chỉ A đỏ ở mẫu +, còn B dùng màu mặc định. Chỉ nhìn A sẽ bỏ sót sự thay đổi ở B.
Bài luyện
Trong mẫu trên, em + strong chọn strong nào?
B có span xen giữa nên không liền kề em.
C khác cha với em.
Đúng. A là phần tử liền sau em và cùng cha p.
Trước nằm trước em.
Lời giải
Phần tử ngay sau em trong các phần tử con của p là strong A. Đoạn chữ và chú thích ở giữa không phải phần tử. B không liền kề em, C khác cha, Trước ở phía trước.
Bài luyện
Trong cùng mẫu, em ~ strong chọn những strong nào?
Đúng. A và B cùng cha p, đều đứng sau em.
Dấu ~ không đòi đứng ngay sau.
C nằm trong span nên khác cha.
Trước đứng trước, C khác cha.
Lời giải
Dấu ~ chọn các strong đứng sau em và cùng cha. A, B đều đáp ứng; span xen giữa không loại B. Trước nằm trước em và C có cha span nên không đáp ứng.
Bài luyện
Chèn một span mới vào giữa em và strong A trong mã, điều gì đúng?
span là phần tử xen giữa nên mất liền kề.
Đúng. Dấu ~ cho phép phần tử xen giữa.
Dấu ~ không đòi liền kề.
Đối tượng bên phải vẫn là strong.
Lời giải
span mới là phần tử ngay sau em, nên strong A không còn liền kề em. Nếu A vẫn cùng cha và đứng sau em, em ~ strong vẫn chọn A.
Bài luyện
Với hai tệp mẫu chỉ khác em ~ strong màu đỏ và em + strong màu đỏ, khi đổi ~ thành + thì sao?
B không còn khớp điều kiện liền kề.
C vẫn khác cha.
Phần tử đứng trước không được chọn theo hai quan hệ này.
Đúng. Phải kiểm cả A và B.
Lời giải
Mẫu ~ chọn A và B, mẫu + chỉ chọn A. Vì tệp mẫu không có quy tắc màu khác, B trở về màu mặc định; A vẫn đỏ. Không thể kết luận toàn bộ kết quả giữ nguyên chỉ từ việc A vẫn đỏ.
Đang học