添加|菜单中的li标签

时间:2013-05-03 13:59:32

标签: html css

是否可以将|作为分隔符添加到CSS菜单中的每个列表元素?

我尝试了content: "|",但它没有用。

菜单如下所示:

<ul>
  <li><a href="...">link</a></li>
  <li><a href="...">link</a></li>
  <li><a href="...">link</a></li>
  <li><a href="...">link</a></li>
  <li><a href="...">link</a></li>
</ul>

结果是:

link link link link

我希望:

link | link | link | link

我知道如何在JavaScript中实现它,但CSS会更好:)菜单是自动生成的,我不想搞砸它。

6 个答案:

答案 0 :(得分:13)

您需要为content使用伪元素,例如::before::after

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

Here’s a demo.

正如其他人所提到的那样,如果您正在寻找一条线路,请根据需要将border-(left|right)paddingmargin一起使用。

答案 1 :(得分:5)

我会用边框做到这一点:

ul li a { border-left:1px solid #000; display:block; }

如果您不想在第一行上添加一行,请添加:

ul li a:first-child { border:none; }

答案 2 :(得分:4)

如果您发布了迄今为止尝试过的内容,那会很有帮助,但这应该有效:

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

Working sample on JSfiddle

答案 3 :(得分:1)

使用border:

li{border-left : 1px solid black;}
li:first-child{border : none;}

答案 4 :(得分:1)

查看this fiddle

li
{
    float:left;
    list-style:none;
}
li:after
{
    content:"|";
    margin:0px 3px;
}

修改

直到我发布我的最后还有一个额外的管道并且其他人也在我之前写了正确的方式而没有摆脱我写的here is it updated之后才注意到。

li
{
    float:left;
    list-style:none;
}
li+li:before
{
    content:"|";
    margin:0px 3px;
}

答案 5 :(得分:0)

像这样的东西

http://jsfiddle.net/SzvQq/

ul li a {
    display: block;
    padding: 0 15px;
    border-left: 1px solid #000;
}

ul li:first-child a {
    border-left: none;
}