【问题标题】:How do I use pseudo-classes to select all children except first and last?如何使用伪类来选择除第一个和最后一个之外的所有子项?
【发布时间】:2012-02-22 11:29:07
【问题描述】:

在 CSS 中,对于下面显示的示例,我怎样才能使样式应用于所有段落,除了第一个和最后一个段落?

<div class="entry">
    <p>...</p>
    <p>...</p>
    <p>...</p>
    <p>...</p>
    <p>...</p>
</div>

我尝试了以下方法来排除第一段,但这不起作用:

div.entry p:nth-child(n+1) {
    /* ... */
}

我也尝试过nth-of-type()not(),但无法让它们按照我想象的方式工作。

编辑:我决定将我想要应用样式的所有&lt;p&gt;s 包装在&lt;div&gt; 中。我接受了 bozdoz 的回答,因为它最接近于解决原始问题(尽管它只解决了一半问题)。

【问题讨论】:

标签: css css-selectors pseudo-class


【解决方案1】:

更新答案:

同时使用:not(:first-child):not(:last-child)

div.entry p:not(:first-child):not(:last-child)

查看更新的JSFiddle

【讨论】:

  • 我不知道为什么这得到了 8 个赞成票——它只解决了一半的问题,也就是说“除了第一部分”,而完全忽略了问题的另一半。
  • 已更新。现在解决了问题的两半。 @BoltClock我也思考了SO答案的奥秘:一些不应该得到巨大的赞成票,而一些非常应得的得到很少的赞成票,而一些体面的得到反对票。老实说,几乎让我放弃回答关于 SO 的问题。用户通常是残忍和不寻常的。
  • 把你的答案编辑成别人更正确的答案似乎不太合适。
  • 这是正确的答案。我已经回答了前半部分。老实说,我没有看到你的,如果它有帮助的话。 @WORMSS
  • @WORMSS:我在这儿犹豫不决。我自己可能会想到完全相同的解决方案。当然,有很多方法可以给猫剥皮,例如更符合原始答案的替代方案是:not(:nth-child(1)):not(:nth-last-child(1))。但是,当:first-child:last-child 已经存在时,这似乎是不必要的冗长。我认为他无意复制您的答案。
【解决方案2】:

我知道我在这方面迟到了,但我想我会为以后的观众添加这个。

div.entry p:not(:first-child):not(:last-child)

【讨论】:

    【解决方案3】:

    我偶然发现了一些可以回答你问题的东西:

    代表 XHTML 主体的所有 h2 子代除了第一个和 最后,可以使用以下选择器:

    body &gt; h2:nth-of-type(n+2):nth-last-of-type(n+2)

    W3C - CSS3-Selectors

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 2012-04-05
      • 1970-01-01
      • 2015-05-01
      • 2010-09-15
      • 1970-01-01
      • 2011-04-30
      • 2014-09-09
      • 1970-01-01
      相关资源
      最近更新 更多