除了第一个子元素和最后一个子元素之外的CSS选择器

156

我正在制作一个非常先进的网站。我的问题是:是否可以选择除了:first-child:last-child之外的所有其他子元素?我知道有一个:not()选择器,但它不能在括号中使用多个“not”。这就是我所拥有的:

#navigation ul li:not(:first-child, :last-child) {
    background: url(images/UISegmentBarButtonmiddle@2x.png);
    background-size: contain;
}

你很勇敢使用这个。请注意,它只能在现代浏览器上运行,而且绝对不能在所有人都在使用的反浏览器上运行。 - rid
2
@Radu:“我正在制作一个非常高级的网站。”毫不意外... - BoltClock
1
@BoltClock,没错,只是提醒一下...警告一下。但无论如何,如果目标是iOS Safari,正如图像名称所示,那么应该是安全的。 - rid
1
现在我明白为什么这个问题看起来那么熟悉了... https://dev59.com/0ms05IYBdhLWcg3wLO2Q - BoltClock
“反浏览器”?那是我一直听说的新版Google Ultron吗? - Jonathan Dumaine
2个回答

359

尝试:

#navigation ul li:not(:first-child):not(:last-child) {
  ...
}

2
哈哈,我太蠢了,居然在谷歌之前都没试过 not() 这个函数 :P 天才 - SidOfc
3
错误的理解:not (A and B) 不等同于 (not A) and (not B),正确的表达应该是 (not A) or (not B)。这种错误的表述是不可行的。 - Hibou57
3
没错,Salman Abbas所说的是正确的。你考虑到了逗号;#navigation ul li:not(:first-child), #navigation ul li:not(:last-child) - user847074

27

当然可以,你只需要使用两个“not”选择器。

#navigation ul li:not(:first-child):not(:last-child) {

在第一个元素之后,它将继续下一行,显示“不是第一个子元素”和“不是最后一个子元素”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接