66

除了第一个和最后一个之外,我将如何选择表中的所有孩子?我试过这个,但它最终选择了所有不是第一个的孩子和所有不是最后一个的孩子,最终都是孩子:

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

我想要所有既不是第一个也不是最后一个的孩子。我怎样才能做到这一点?

4

5 回答 5

110

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

table.programs td:not(:first-child):not(:last-child)
于 2012-12-20T23:30:00.783 回答
6

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

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 演示

于 2012-12-20T22:04:22.713 回答
3

像这样。

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 */ }
于 2020-03-09T20:44:41.377 回答
2

我认为这应该适合你:

table.programs tr td:not(:first-child,:last-child)
于 2012-12-20T21:57:19.977 回答
1

它以这种方式工作

    table.programs tr td:nth-child(1n+2):not(:last-child)
于 2019-07-10T09:37:50.713 回答