使用 :not(selector) 选择除少数之外的所有元素 [重复]

Posted

技术标签:

【中文标题】使用 :not(selector) 选择除少数之外的所有元素 [重复]【英文标题】:Select all of one element except a few using :not(selector) [duplicate] 【发布时间】:2018-10-19 08:03:00 【问题描述】:

我正在尝试选择除前 3 个之外的所有“类”类。我不确定为什么我的语法不正确。有人可以解释我在这里做错了什么吗?

我尝试了一些不同的组合,例如在选择器中包含第 n 个类型之前的类名等。

.classes 
  background: red;
  width: 200px;
  height: 30px;
  margin-bottom: 5px;


.classes:not(.classes:nth-of-type(1)), .classes:not(nth-of-type(2)), .classes:not (nth-of-type(3)) 
  background: blue;


.classes:nth-of-type(6) 
  background: orange;
<div class='classes'>test</div>
<div class='classes'>test</div>
<div class='classes'>test</div>
<div class='classes'>test</div>
<div class='classes'>test</div>
<div class='classes'>test</div>
<div class='classes'>test</div>

【问题讨论】:

not() 只取简单的选择器 你可以试试这个:jsfiddle.net/nn3mso3x 但要注意,因为它考虑的是元素而不是类 【参考方案1】:

你可以用这个:

.classes 
    background: green;   

.classes:nth-child(n+4) 
    background: red;

你可以找到更多有用的:nth-child例子here

如果你想完全使用 :not 选择器,你可以试试这个:

.classes:not(:first-child):not(:nth-child(2)):not(:nth-child(3)) 
  background: yellow;

【讨论】:

这不是通用的方式,也不会一直有效...取决于结构 它会选择除前 3 个之外的所有类,如问题中所述。 不,它选择从具有 .classes 的第四个元素开始的所有元素......所以在这种情况下这是有效的,因为所有元素都具有相同的类,但它不是通用的......您可以简单地执行nth-child(n+4) 的方式,它也将执行相同的操作 我喜欢你的解决方案!但是说如果我不想选择前 3 个,而且如果有 20 个列表并且我不想选择第 17 个项目,:not 选择器如何实现这一点? (而不是 .classes:nth-last-child(4) ) 我相信更简单、更简单的解决方案是将第 17 个元素添加到第一个 CSS 选择器,如下所示:.classes, .classes:nth-child(17) background: green; .classes:nth-child(n+4) background: red; 。但是,如果您尝试将此应用于网格元素,则解决方案可能会有所不同。请让我看看你正在做什么的屏幕截图,我会帮忙的。

以上是关于使用 :not(selector) 选择除少数之外的所有元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过 :not 在 jQuery 选择器中隐藏除 $(this) 之外的所有内容

使用 Nginx 阻止除少数机器人之外的所有机器人

bigquery 按除少数之外的所有列分组

Angularjs:限制对除少数页面之外的所有页面的访问

使 .gitignore 忽略除少数文件之外的所有内容

选择除两个 id 之外的所有正文元素 [重复]