我希望.c
为红色&只有在没有父母.b
(直接或间接)的情况下才能加粗:
.a :not(.b) .c {
color: red;
font-weight: bold;
}

<div class="a">
<div class="not-b">
<div class="c">bold red</div>
<div class="b">
<div class="c">normal black</div>
</div>
</div>
</div>
&#13;
答案 0 :(得分:3)
一种解决方案是将CSS定义拆分。首先假设如果.a
在.c
某个点跟随.b
,则文本将始终为红色,然后指定如果.a .c {
color: red;
background-color: gray;
display: inline-block;
padding: 2em;
animation-name: spin;
animation-duration: 4000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(-360deg);
}
}
.a .b .c {
all: unset;
}
在任何时候都阻碍了,请取消设置。< / p>
<div class="a">
<div class="g">
<div class="c">i should be red and spinning</div>
</div>
</div>
<div class="a">
<div class="c">i should be red and spinning</div>
</div>
<div class="a">
<div class="g">
<div class="f">
<div class="c">i should be red and spinning</div>
</div>
</div>
</div>
<div class="a">
<div class="b">
<div class="c">i should not be red or spinning</div>
</div>
</div>
<div class="a">
<div class="g">
<div class="b">
<div class="f">
<div class="c">i should not be red or spinning</div>
</div>
</div>
</div>
</div>
<div class="a">
<div class="g">
<div class="d">
<div class="b">
<div class="f">
<div class="e">
<div class="c">i should not be red or spinning</div>
</div>
</div>
</div>
</div>
</div>
</div>
&#13;
all
&#13;
注意:all
在IE中不起作用。此外,旋转动画取自here - 我只是将其用于演示card
如何覆盖包括任何动画在内的所有动画。
答案 1 :(得分:2)
此处没有单个选择器就足够了。
您只需将.a > .c
添加到选择器
.a *:not(.b) .c,
.a > .c {
color: red;
}
<div class="a">
<div class="g">
<div class="c">i should be red</div>
</div>
</div>
<div class="a">
<div class="c">i should be red</div>
</div>
答案 2 :(得分:0)
我希望.c只有在.a和.c或之间没有父.b时才是红色的 如果.a和.c之间没有父母。
此声明在逻辑上可以简化为:
我希望.c只有在是.a
的孩子而不是后代时才是红色的
在这种情况下,
.a > .c { color: red; }
答案 3 :(得分:0)
首先,我认为你应该默认为红色, c 类。然后执行以下操作:
<强> CSS 强>
.a .c {
color: red
}
.a .not-red .c {
color: blue;
}
<强> HTML 强>
<div class="a">
<div class="b not-red">
<div class="c">
test
</div>
</div>
</div>
我已经测试过,它可以随心所欲地工作。
答案 4 :(得分:0)
您需要为每个级别的嵌套选择一个规则。没有可能为任何级别
设置通用解决方案另一方面,你不应该有一个具有如此多嵌套级别的DOM,你不能用6个选择器处理它....
.a > .c,
.a > *:not(.b) > .c,
.a > *:not(.b) > *:not(.b) > .c,
.a > *:not(.b) > *:not(.b) > *:not(.b) >.c {
background-color: red;
}
<div class="a">
<div class="g">
<div class="c">i should be red</div>
</div>
</div>
<div class="a">
<div class="c">i should be red</div>
</div>
<div class="a">
<div class="g">
<div class="f">
<div class="c">i should be red</div>
</div>
</div>
</div>
<div class="a">
<div class="b">
<div class="c">i should not be red</div>
</div>
</div>
<div class="a">
<div class="g">
<div class="b">
<div class="f">
<div class="c">i should not be red</div>
</div>
</div>
</div>
</div>
<div class="a">
<div class="g">
<div class="d">
<div class="b">
<div class="f">
<div class="e">
<div class="c">i should not be red</div>
</div>
</div>
</div>
</div>
</div>
</div>