:has() 父層選取器從 Safari 於2022年開始支援後,其他瀏覽器現在也幾乎都支援該功能
有時希望「符合該條件的class或 ID,它的父層能夠套用某css設定時」,這就是一個很好用又強大的功能。
例如:
HTML:
<div class="text-title">
<h2>標題文字<h2>
</div>
<div class="text-title">
<h3>標題文字<h3>
</div>
CSS:
.text-title:has(h3) { background-color: red;}
以上的語法意思為:當 text-title 的 class 底下若有 h3 時, text-title 的底色需要呈現紅色。
如果CSS是這樣:
.text-title:has(h3, h2) { background-color: red;}
以上的語法意思為:當 text-title 的 class 底下若有 h3 或 h2 時, text-title 的底色需要呈現紅色。
那如果想要讓它的條件同時有 h3 和 h2,CSS就需要這樣寫:
.text-title:has(h3):has(h2) { background-color: red;}
但要特別注意,這種寫法,上方的 HTML 則不會有反應,因為它的 text-title 底下並沒有同時有 h3 和 h2,需要變成以下的情況:
<div class="text-title">
<h2>標題文字<h2>
<h3>標題文字<h3>
</div>
再來就是如果只想要在 text-title 底下那層的 h3 有反應,就必須寫成: