如何使用CSS选择器选择除first和last之外的所有子项

时间:2012-12-20 21:52:05

标签: css css-selectors

除了第一个和最后一个,我如何选择表格中的所有孩子?我已经尝试了这个,但它最终选择了所有不是第一个孩子,所有孩子都不是最后一个,最终成为所有孩子:

table.programs tr td:not(:first-child), table.programs tr td:not(:last-child) {
}

我希望所有的孩子既不是第一个也不是最后一个。我怎么能这样做?

5 个答案:

答案 0 :(得分:63)

使用两个:not()个选择器组合,从而引用与它们相匹配的元素,即与既不与用作:not()的操作数的选择器匹配的元素:

table.programs td:not(:first-child):not(:last-child)

答案 1 :(得分:4)

jQuery解决方案很好,但如果您想在纯CSS中执行此操作,我建议您将规则应用于整个表格,然后为第一个和最后一个孩子重置。即:

table.programs tr td { 
  /* your rules here */
}

table.programs tr:first-child td:first-child, 
table.programs tr:last-child td:last-child {
  /* reset your rules here */
}

jsFiddle demo

答案 2 :(得分:1)

我认为这应该适合你:

table.programs tr td:not(:first-child,:last-child)

答案 3 :(得分:1)

像这样

li:nth-child(n+2):nth-last-child(n+2) { background: red; }

根据您的要求

table.programs tr td:nth-child(n+2):nth-last-child(n+2) { /* Your Style */ }

答案 4 :(得分:0)

它以这种方式工作

    table.programs tr td:nth-child(1n+2):not(:last-child)