我正在嘗試實作一個場景,即 CSS 規則應該應用于所有選擇器,除了一個選擇器和它下面的任何東西。
例如,我想將 css 應用于內部的所有內容,.parent但不包括.child其子項。
我嘗試了以下方法,但沒有奏效......
.parent *:not(.child *) {
background-color: red;
}
<div class="parent">
<div class="child">
<div>inside</div>
<div>inside2</div>
</div>
<div>outside</div>
</div>
uj5u.com熱心網友回復:
您可以使用“未設定”或“初始”或其他合理的默認值以自己的規則定位子類:
.parent {
background-color: red;
}
.child {
background-color: unset;
}
uj5u.com熱心網友回復:
這應該針對沒有子類及其后代的 .parent 的任何直接子代:
.parent> :not(.child),
.parent> :not(.child) * {
background-color: red;
}
<div class="parent">
<div class="child">
<div>inside</div>
<div>inside2</div>
</div>
<div>outside</div>
<div>
<div>outside!</div>
</div>
</div>
為什么您的選擇器不起作用
.parent *:not(.child *) {
background-color: red;
}
<div class="parent">
<div class="child">
<div>inside</div>
<div>inside2</div>
</div>
<div>outside</div>
<div>
<div>outside!</div>
</div>
</div>
定位 .parent 的任何沒有子類的后代。雖然是的,但您沒有將背景顏色分配給 .child,而是將其分配給它的兩個孩子......
但是我在 :not() 中指定了 .child 的所有后代
與 :is() 一樣,默認命名空間宣告不會影響表示 :not() 偽類中任何選擇器主題的復合選擇器,除非該復合選擇器包含顯式通用選擇器或型別選擇器。(參見 :is() 示例。) https://www.w3.org/TR/selectors-4/#negation
我自己仍在嘗試完全理解規范的這一部分,但我認為這只是意味著你不能在 :not() 偽類中執行復合選擇器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448384.html
