我怎样才能使用一个不是:第一个孩子的select器?

我有包含多个ul标签的div标签。

如果我只为第一个ul标签设置CSS属性,并且这个代码工作:

 div ul:first-child { background-color: #900; } 

当我想为每个ul标签设置CSS属性,除了第一个,我试过这个:

 div ul:not:first-child { background-color: #900; } 

另外这个:

 div ul:not(:first-child) { background-color: #900; } 

和这个:

 div ul:first-child:after { background-color: #900; } 

但是没有效果。 我怎样才能用CSS写“每个元素,除了第一个”?

其中一个版本实际适用于所有现代浏览器( 支持 CSSselect器级别3 ):

 div ul:not(:first-child) { background-color: #900; } 

如果您需要支持传统的浏览器,或者如果您受到:notselect器的限制 (它只接受一个简单的select器作为参数),那么您可以使用另一种技术:

定义一个比你打算的范围更大的规则,然后有条件地“撤销”它的范围,把它的范围限制在你打算的范围内:

 div ul { background-color: #900; /* applies to every ul */ } div ul:first-child { background-color: transparent; /* limits the scope of the previous rule */ } 

限制范围时,使用您正在设置的每个CSS属性的默认值 。

这个CSS2解决scheme(“ ul又一个ul ”)也适用,并且被更多的浏览器支持。

 div ul + ul { background-color: #900; } 

不同于:not:nth-sibling ,IE7 +支持相邻的兄弟select器 。

如果JavaScript在页面加载后更改这些属性,则应该查看IE7IE8实现中的一些已知错误。 看到这个链接 。

对于任何静态网页,这应该是完美的。

那么既然:not不被IE6〜8接受,我build议你这样做:

 div ul:nth-child(n+2) { background-color: #900; } 

所以你select除了第一个元素的父元素中的每个ul

参考克里斯·Coyer的“有用的:第n孩子食谱”文章为更多nth-child 例子 。

 div li~li { color: red; } 

支持IE7

not(:first-child)似乎不工作了。 至less在更新版本的Chrome和Firefox中。

相反,试试这个:

 ul:not(:first-of-type) {}