结合:CSS中的not()选择器

时间:2011-09-13 14:00:01

标签: css css3 css-selectors

我正在尝试选择tr内的所有table元素,但第三个和第四个除外。我设法使用:

#table tr:not(:nth-child(3)):not(:nth-child(4))

我想组合这些选择器,因为我还有一些:nth-child条目。像这样的东西,但它不起作用:

#table tr:not(:nth-child(3), :nth-child(4))

这个 在jQuery中工作,但不在CSS中工作。我正在使用Chrome(我只需要它在那里工作)。

我无法为这种情况找到组合选择器。如何将选择器与:not组合?

2 个答案:

答案 0 :(得分:32)

选择器级别3不允许:not()伪类中的单个simple selector以外的任何内容。作为一个jQuery选择器,它起作用,因为jQuery扩展了它的:not()功能以允许任何选择器(如.not()方法)。

但是,您的第二种语法是建议的enhancements to :not() in Selectors 4之一,并且与您的第一种语法等效。虽然这个例子(无论如何都是这样写的)显示了一系列:not()选择器,但提案说:

  

否定伪类,不是(X),是以选择器列表作为参数的功能表示法。它表示一个未由其参数表示的元素。

这里选择器列表只是一个以逗号分隔的选择器列表。

如果您需要否定包含组合子的选择器(>+~,空格等,例如div p),则无法使用{ CSS中的{1}};你必须使用jQuery解决方案。

答案 1 :(得分:3)

虽然明确的答案是真的,但我只想指出你可以用css实现你想要的东西,但只是以不同的方式。而不是不使用,你可以选择那些并取消应用你不想要的东西。

#table tr {
    /* general case styling */
    color: blue;
}
#table tr:nth-child(3),
#table tr:nth-child(4) {
    color: black;
}