:has() Pseudo-Class Selector sẽ chọn những thành phần dựa vào parent của chúng, ví dụ như
a:has(img)
Đây có nghĩa là sẽ select những thẻ a có child là img. Hoặc có thể nói khác là chọn những thẻ img có parent là a.
Ví dụ bạn có trường hợp như sau
<div class="section">
<a href="#">Đây là link</a>
</div>
<div class="section">
<a href="#" class="active">Đây là link</a>
</div>
<div class="section">
<a href="#">Đây là link</a>
</div>
<div class="section">
<a href="#">Đây là link</a>
</div>
Bạn có một vài div có class .section như trên, nếu thẻ a trong section đó có class active, thì section chứa a.active đó sẽ có background màu đỏ. Và đây là cách làm
.section:has(.active) {
background-color: red;
}
Dòng CSS này có nghĩa là chọn những div.section thoải điều kiện là có thẻ a có chứa class active để set background-color là màu đỏ
See the Pen :has selector by minhchau (@ngocminhxx) on CodePen.
:has() Pseudo-Class Selector này có vẻ rất tiện lợi trong vài mục đích, công việc code front-end sẽ dễ thở hơn khi có :has() . Tuy nhiên, nó vẫn còn đang rất mới, và chưa được nhiều trình duyệt hỗ trợ. Hiện tại ngoài Firefox ra, Chrome, Edge và Safari đã hỗ trợ selector này