简体   繁体   English

CSS3:覆盖后:last-child

[英]CSS3 :after Overriding :last-child

I have the following CSS to style a simple list:我有以下 CSS 来设置简单列表的样式:

ul.menu_list li {
display: inline;
}
ul.menu_list li:after {
content:" | ";
}
ul.menu_list li:last-child  {
content:"";
}

<ul class="menu_list">
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
</ul>

I get the desired effect except for the last-child is not losing it's vertical bar, " | ".我得到了想要的效果,除了最后一个孩子没有失去它的垂直条“|”。

Link | Link | Link |

I've tried combining:after:last-child & vice-versa but the first:after declaration always takes precedence.我尝试过组合:after:last-child & 反之亦然,但 first:after 声明始终优先。

Do:做:

ul.menu_list li:after {
    content:" | ";
}
ul.menu_list li:last-child:after  {
    content:"";
}

Try this instead:试试这个:

ul.menu_list li:not(:last-child):after {
  content:" | ";
}

I found "li+li:before" works in IE8, Chrome, FireFox and Safari for Windows我发现“li+li:before”在 IE8、Chrome、FireFox 和 Safari 中适用于 Windows

ul.menu_list li:last-child:after should do the trick. ul.menu_list li:last-child:after应该可以解决问题。

Here is a fiddle that shows it in action..这是一个显示它在行动中的小提琴..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM