:CSS中的NOT选择器在我的情况下不起作用[重复]

Posted

技术标签:

【中文标题】:CSS中的NOT选择器在我的情况下不起作用[重复]【英文标题】::NOT selector in css is not working in my case [duplicate] 【发布时间】:2020-02-01 11:46:53 【问题描述】:

我有如上图所示的 html 树结构。我正在将以下 CSS 应用于此 html 树结构,但它不起作用。

.blur:not(.activerow)
  filter: blur(3px);
  pointer-events: none;
 

我的输出是这样的:

整个页面变得模糊,包括 activerow 类。我想模糊整个 blur 类,除了 activerow

【问题讨论】:

您将模糊添加到 父元素,但想要排除其子元素。您应该使用同一级别的元素 不是将 blur 类作为一个整体添加到表中,而是需要将其添加到每一行。 这个东西可以应用到父子吗? 【参考方案1】:

您需要将:not 与目标元素类一起使用,在您的情况下为tr

.blur tr:not(.activerow) 
  filter: blur(3px);
  pointer-events: none;


.activerow 
  color: red;
<div class="blur">
  <table style="width:100%">
    <tr class="activerow">
      <th>Firstname</th>
      <th>Lastname</th>
      <th>Age</th>
    </tr>
    <tr>
      <td>Jill</td>
      <td>Smith</td>
      <td>50</td>
    </tr>
    <tr>
      <td>Eve</td>
      <td>Jackson</td>
      <td>94</td>
    </tr>
  </table>
</div>

【讨论】:

【参考方案2】:

您正在将模糊效果应用于所有行的父级,因此排除行无济于事。您需要将效果应用于每一行并排除您不想要的效果:

.blur tr:not(.activerow)
  filter: blur(3px);
  pointer-events: none;
 
<div class="blur">
  <table>
    <tr><td>one</td><tr>
    <tr class="activerow"><td>two</td><tr>
    <tr><td>three</td><tr>
    <tr><td>four</td><tr>
  </table>
</div>

【讨论】:

以上是关于:CSS中的NOT选择器在我的情况下不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

css SCSS和CSS中的纯CSS交叉。

css CSS中的变量示例

css CSS中的变量

css 如何打破css中的单词?

css CSS中的当前颜色

css CSS中的引用