2011-04-19 103 views
2

我想知道是否可以将伪类嵌入对方。我有一个你不能做的预感,但我只是想确保我不只是语法错误。CSS伪类可以在:not()伪类中使用吗?

这里是什么,我试图做一个例子:

p.description { margin-bottom: 20px; } 

鉴于风格,如果你只是想,要在不是最后的p.description比赛发生了,反正是有请执行下列操作?

p.description:not(p.description:last-child) 

当然,我有两种风格,就像这样:

p.description { margin-bottom: 20px; } 
p.description:last-child { margin-bottom: 0; } 

...但这似乎浪费,如果它可以在一个单一的线来完成。

非常感谢!

回答

4

是,你的问题的标题:

p.description:not(:last-child) 

没有,对你的问题的身体

p.description:not(p.description:last-child) 

The spec says CSS的例子:

否定pse udo-class,:not(X),是一个以simple selector(不包括否定伪类本身)为参数的函数表示法。

一个简单的选择器可以是类型选择器,通用选择器,属性选择器,类选择器,ID选择器或伪类。

+0

嗯,显然定义是CSS2和CSS3之间变化。在CSS2中,'p.description:first-child'将被认为是一个简单的选择器。 – BoltClock 2011-04-19 17:16:21

+0

除了':not()'是否仅仅使用简单的选择器是否“合理”之外,我认为“简单选择器”的CSS3定义是合理的,并且比CSS2定义更有意义。 – 2011-04-19 17:19:04

+0

它当然可以! – BoltClock 2011-04-19 17:19:29

2

是,p.description:not(:last-child)

+1

...因为':not()'可以使用一个简单的选择器,这个伪类是最后一个子类。 – BoltClock 2011-04-19 17:15:30

+0

对不起,我已经编辑过这篇文章了。 (我写了一个JavaScript库,允许':not()'中的复杂选择器,所以我有点困惑:P) – Ryan 2011-04-19 17:18:45

0

是的,你可以,在webkit中,它工作正常。我用这个例子:

.middlenav:not(:nth-last-child(1)) 

伟大的作品。

所以p.description:not(:last-child). 应该太