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

标签 html css 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>

最佳答案

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

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

.my-class * {
  color: initial;
  font-weight: normal;
}
<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>

关于html - 如何选择除特定类及其后代之外的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49583415/

相关文章:

html - CSS 格式随字体样式变化

html - 滚动条将元素推到新行

javascript - 如何在 jQuery 中单击和选择 div 元素

css - 如何在嵌套元素之后选择紧接的下一个元素?

javascript - 渐进式 Web 应用程序 - 离线时在多个缓存页面之间导航

java - jsoup 中 element.children 的替代方案

javascript - 关于完成 jQuery 下拉菜单的指导

javascript - 在 vis.js 中使用 css 设置网格轴样式

css - 是否有 CSS 父级选择器?

html - Bootstrap 3 修复了具有三个输入组的输入的边界半径