<div id="main">
<p> one </p>
<p> two </p>
<p> three </p>
<p> four </p>
<p> five </p>
<div>
我不想在第一个<p>One</p>
p {color:red}
我需要:first-child
的对面。
答案 0 :(得分:75)
p:not(:first-child) { color: red; }
浏览器支持现在是very strong,但替代方案包括:
p { color: red; }
p:first-child { color: black; }
和
* + p { color: red; }
答案 1 :(得分:22)
Quentin的:not()
解决方案适用于现代浏览器:
p:not(:first-child) { color: red; }
他对旧浏览器的替代方案也很有效,除了它为第一个孩子使用了一个重要的规则。它不是必需,但是......
您可以简单地使用同级选择器应用与上述规则相同的规则,而无需为p:first-child
覆盖它。这些规则中的任何一个都可以使用:
adjacent sibling selector,与p
之后直接出现的p
匹配:
p + p { color: red; }
general sibling selector,与p
之后的任何地方p
相匹配:
p ~ p { color: red; }
这两个组合器的工作方式相同;它们之间的细微差别仅适用于混合中包含其他元素的情况。有关详细信息,请参阅提供的链接。
答案 2 :(得分:13)
我认为:nth-child()
可以解决问题。
p:nth-child(n+2){
background-color:red;
}
这样可以设置除{1}之外的所有p
标记的样式,因为它从第二个子项开始。然后,您可以使用p
分别设置第一个p:first-child
标记的样式。
答案 3 :(得分:6)
每次都有效,不需要撤消:
p + p {
/* do 15 special things */
}
每个P前面都有一个P.不要设置属性以后再撤消它。你应该只添加,如果你可以帮助它,不要减去。
答案 4 :(得分:2)
您也可以使用“代字号”(〜)运算符
<!DOCTYPE html>
<html>
<head>
<style>
p ~ p {
background:#ff0000;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>The first paragraph.</p>
<p>The second paragraph.</p>
<p>The third paragraph.</p>
<p>The fourth paragraph.</p>
</body>
</html>
这是JSFiddle演示http://jsfiddle.net/RpfLa/344/
在可比性模式下对FF 17,Chrome 23,Safari 5.1,IE9,IE1-8进行了快速测试
答案 5 :(得分:0)
:nth-child(1n+2)
对我来说很好。这将跳过第一个孩子,并继续到其余元素。
p:nth-child(1n+2){
color: red;
}
希望这会有所帮助。