结合 :nth-of-type() 和 :not

Zah*_*aka 1 css css-selectors

我有一个尝试组合两个伪类的奇怪案例::not:nth-of-type()在非隐藏项目上获得彩虹条纹

有了:not([selector]):nth-of-type([rule]),我假设 css 会:not在应用:nth-of-type规则之前首先过滤项目,但是以任何顺序排列它们会给我相同的结果。

这是一个演示这一点的 jsfiddle:http : //jsfiddle.net/j7hjU/

做这些时我是否可能忽略了一些东西?

bob*_*nce 6

我假设 css 会在应用 :nth-of-type 之前先过滤 :not 项目

不。CSS 是完全声明性的;每个选择器都是一个简单的条件,独立于任何选择器部分的真或假。它不是一种程序语言,您可以在其中获取并处理它,并在每一步缩小范围。具有过程规则的选择器语言将不受多种优化的影响,并且速度会更慢。

所以nth-of-type只是关于元素父元素中的位置,而不是“到目前为止的结果列表”中的位置,因为 CSS 选择器没有这样的概念。选择器引擎可以nth-of-type在使用 缩小之前查找测试not,因为规则不会相互干扰。