我有一个元素列表,它的样式是这样的:

ul { list-style-type:没有; text-align:中心; } 李{ 显示:内联; } 李:不(胎):{ 内容:“|”; } < ul > <李>一个李< / > <李>两个李< / > <李> 3 < /李> <李>四个李< / > <李> 5李< / > < / ul >

输出One | Two | Three | Four | Five |而不是One | Two | Three | Four | Five

有人知道CSS如何选择除最后一个元素以外的所有元素吗?

你可以在这里看到:not()选择器的定义


当前回答

如果not选择器有问题,你可以设置所有的选项并覆盖最后一个选项

li:after
{
  content: ' |';
}
li:last-child:after
{
  content: '';
}

或者如果你可以使用before,不需要最后一个孩子

li+li:before
{
  content: '| ';
}

其他回答

对我来说很好

&:not(:last-child){
            text-transform: uppercase;
        }

你可以试试这个,我知道这不是你想要的答案,但概念是一样的。

你正在为所有的子元素设置样式,然后从最后一个子元素中移除它。

代码片段

li
  margin-right: 10px

  &:last-child
    margin-right: 0

图像

一个使用CSS的例子

  ul li:not(:last-child){
        border-right: 1px solid rgba(153, 151, 151, 0.75);
    }

一切似乎都是正确的。您可能希望使用以下css选择器而不是您使用的。

ul > li:not(:last-child)::after

如果not选择器有问题,你可以设置所有的选项并覆盖最后一个选项

li:after
{
  content: ' |';
}
li:last-child:after
{
  content: '';
}

或者如果你可以使用before,不需要最后一个孩子

li+li:before
{
  content: '| ';
}