如何正确使用:not selector来解决.b而不是.a .b?

Tos*_*kan 2 html css css-selectors css3

我想定义适用.b但不适用的css.a .b

没有黑客接受的方式

.a .b {
   background-color: cornflowerblue;
}
Run Code Online (Sandbox Code Playgroud)

此外,html可以在任意容器中.body > .b也不适用于我的案子

我想使用:not选择器或替代解决方案,这不会让我改变定义.a .b

div {
  width: 50px;
  height: 50px;
  background-color: cornflowerblue;
  margin: 10px;
  border: 1px solid salmon;
}

.b {
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="a">
  <div class="b"></div>
</div>

<div class="b"></div>
Run Code Online (Sandbox Code Playgroud)

请看这里的codepen

https://codepen.io/anon/pen/OxOLZE

Mic*_*l_B 5

这将选择所有.b不属于子元素的元素.a.

div {
  width: 50px;
  height: 50px;
  background-color: cornflowerblue;
  margin: 10px;
  border: 1px solid salmon;
}

*:not(.a) > .b {
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="a">
  <div class="b"></div>
</div>

<div class="b"></div>
Run Code Online (Sandbox Code Playgroud)