如何选择除特定类及其后代之外的所有元素?

时间:2018-03-31 01:48:32

标签: html css html5 css3 css-selectors

使用CSS,我如何选择除特定类及其后代之外的所有元素?

例如,我想在下面的代码中选择除.my-class及其后代之外的所有元素。我试过:not(.my-class *),但它不起作用。

在我的项目中,有许多复杂的全局样式,很难解决所有问题。所以我无法编辑所有这些样式,因为@Michael_B已经回答了。我只是不想在.my-class及其后代中应用这些样式而不进行大的更改。

<div>
  <span>a</span>
  <div>
    <span>b</span>
  </div>
  <div class="my-class">
    <span>c</span>
    <div>
      <span>d</span>
      <div>
        <span>e</span>
      </div>
    </div>
  </div>
</div>

3 个答案:

答案 0 :(得分:1)

单独使用CSS,在浏览器实现Selectors Level 4之前,我会说你需要多个选择器:

&#13;
&#13;
*:not(.my-class) {
  color: red;
  font-weight: bold;
}

.my-class * {
  color: initial;
  font-weight: normal;
}
&#13;
<div>
  <span>a</span>
  <div>
    <span>b</span>
  </div>
  <div class="my-class">
    <span>c</span>
    <div>
      <span>d</span>
      <div>
        <span>e</span>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以通过css将类显示修改为无。如果您想再次显示它们,请将显示更改为阻止。

<style>
.my-class{
      display: none;
}
</style>

答案 2 :(得分:0)

你真的不能。您可以做的是选择全部,选择班级并选择班级后代。

*{/*styles that will be for all elements except the class and its descendents*/}

.class, .class *{/*reversing styles applied before*/}