如何跳过第一个孩子?

Jit*_*yas 45 css css-selectors

<div id="main">    
  <p> one </p>    
  <p> two </p>
  <p> three </p>
  <p> four </p>
  <p> five </p>
<div>
Run Code Online (Sandbox Code Playgroud)

我不想先申请css <p>One</p>

p {color:red}
Run Code Online (Sandbox Code Playgroud)

我需要正好相反:first-child.

Que*_*tin 79

否定伪类:

p:not(:first-child) { color: red; }
Run Code Online (Sandbox Code Playgroud)

浏览器支持现在非常强大,但替代方案包括:

p { color: red; }
p:first-child { color: black; }
Run Code Online (Sandbox Code Playgroud)

和:

* + p { color: red; }
Run Code Online (Sandbox Code Playgroud)

  • 对于第二种解决方案,我建议使用 `p:first-child{ color:inherit; }` 而不是 `p:first-child{ color:black; }` 所以它适用于任何预设颜色。 (2认同)

Bol*_*ock 22

Quentin的:not()解决方案适用于现代浏览器:

p:not(:first-child) { color: red; }
Run Code Online (Sandbox Code Playgroud)

他对旧版浏览器的替代方案也很有效,除了它为第一个孩子使用了一个重要的规则.但这不是必需的 ......

您可以简单地使用兄弟选择器应用与上面相同的规则,而无需覆盖它p:first-child.这些规则中的任何一个都可以工作:

两个组合器在这里工作相同; 它们之间的细微差别仅适用于混合中包含其他元素的情况.有关详细信息,请参阅提供的链接.


小智 13

我认为:nth-child()会做到这一点.

p:nth-child(n+2){
  background-color:red;
}
Run Code Online (Sandbox Code Playgroud)

这样可以设置p除第一个标记之外的所有标记的样式,因为它从第二个子标记开始.然后,您可以p单独设置第一个标签的样式p:first-child.


Rud*_*die 6

每次都可以工作,不需要撤消:

p + p {
  /* do 15 special things */
}
Run Code Online (Sandbox Code Playgroud)

它需要每个P前面有一个P.不要设置属性以后再撤消它.你应该只添加,如果你能帮助它,不要减去.