我有一个尝试组合两个伪类的奇怪案例::not并:nth-of-type()在非隐藏项目上获得彩虹条纹
有了:not([selector]):nth-of-type([rule]),我假设 css 会:not在应用:nth-of-type规则之前首先过滤项目,但是以任何顺序排列它们会给我相同的结果。
这是一个演示这一点的 jsfiddle:http : //jsfiddle.net/j7hjU/
做这些时我是否可能忽略了一些东西?
我假设 css 会在应用 :nth-of-type 之前先过滤 :not 项目
不。CSS 是完全声明性的;每个选择器都是一个简单的条件,独立于任何选择器部分的真或假。它不是一种程序语言,您可以在其中获取并处理它,并在每一步缩小范围。具有过程规则的选择器语言将不受多种优化的影响,并且速度会更慢。
所以nth-of-type只是关于元素父元素中的位置,而不是“到目前为止的结果列表”中的位置,因为 CSS 选择器没有这样的概念。选择器引擎可以nth-of-type在使用 缩小之前查找测试not,因为规则不会相互干扰。