我如何使用CSS3选择器选择除最后一个子之外的所有子?

例如,如果只获取最后一个子元素,则使用div:n -last-child(1)。


当前回答

使用更通用的选择器,可以实现如下所示

& > *:not(:last-child) {/* styles here */}

例子

<div class="parent">
  <div>Child one</div>
  <div>Child two</div>
</div>

这将捕获父节点中的所有子DIV

其他回答

Nick Craver的解决方案给了我我所需要的,但让那些使用CSS-in-JS的人明确:

const styles = {
  yourClass: {
    /* Styles for all elements with this class */
    '&:not(:last-child)': {
      /* Styles for all EXCEPT the last element with this class */
    },
  },
};

使用nick craver的解决方案与selectivizr允许跨浏览器解决方案(IE6+)

.nav-menu li:not(:last-child){
    // write some style here
}

这段代码应该将该样式应用于除最后一个子元素之外的所有元素

当IE9到来时,这将变得更容易。但是很多时候,你可以把问题切换到一个要求:first-child和样式元素的反面(IE7+)。

在css3中有一个:not选择器。使用:not()和:last-child一起选择除最后一个外的所有子元素。例如,要选择ul中除了最后一个li之外的所有li,使用以下代码。

ul li:not(:last-child){   }