我怎样才能使用一个不是:第一个孩子的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; }
如果您需要支持传统的浏览器,或者如果您受到:not
select器的限制 (它只接受一个简单的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在页面加载后更改这些属性,则应该查看IE7和IE8实现中的一些已知错误。 看到这个链接 。
对于任何静态网页,这应该是完美的。
那么既然: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) {}