:has()
という疑似クラスがSelectors Level 4のEditor’s Draftにある。E:has(selector)
で、selectorにマッチする要素を持つE要素を表す。これが広くサポートされれば、次のようなことが可能になる。
.foo
を子孫に持つ.container
の中の.bar
にスタイルを当てる:
.container:has(.foo) .bar {
color: red;
}
DOMツリー上に.foo
があるときに、.bar
にスタイルを当てる:
:root:has(.foo) .bar {
color: red;
}
DOMツリー上の.foo
がチェックされているときに、.bar
にスタイルを当てる:
:root:has(.foo:checked) .bar {
color: red;
}