CSS 在导航选择器之后

CSS after selector in nav

我尝试在我的 CSS 代码中使用 after 选择器,但没有很好地居中。

我用Bootstrap。当我在 li not a 上设置 after selector 时,内容会向下移动。 这是我的 HTML 代码:

<nav class="navbar">
                <div class="row">
                    <div class="col-md-2">
                        <img src="/images/logo3.png" class="img-responsive">
                    </div>
                    <div class="col-md-5">
                        <ul class="nav navbar-nav">
                            <li><a href="index.ejs">Home</a></li>
                            <li><a href="index.ejs">Prices</a></li>
                        </ul>
                    </div>
                    <div class="col-md-5">
                        <ul class="nav navbar-nav navbar-right">
                            <li><a href="index.ejs">Projects</a></li>
                            <li><a href="index.ejs">Logout</a></li>
                        </ul>
                    </div>
                </div>
</nav>

这是 CSS 代码:

.navbar-nav li a::after {
    content: "|" black;
}

.navbar-nav li:last-child a::after {
    content: " ";
}

这是评论,但我认为这是正确的答案所以^^

这看起来太复杂了。您应该简单地在您的 ul 上使用 display:inline,然后使用 padding 作为列表项之间的间距。然后您可以分别向左和向右浮动两个单独的列表以获得定位:).

这是为你工作的 fiddle - jsFiddle -

仅供参考:需要将结果部分扩展到足以让您的菜单项在一行上对齐。

PS :我只是希望您使用 我的建议编号 2 那里(最好是第三个,但这取决于你需要什么样的菜单)。使用伪 class 在菜单中获取这些分隔符不是一个好习惯。它可以节省 HTML 代码的数量,但是当您在这些菜单项之间使用额外的 li 时更像是这样。


解释

你的CSS就快完成了,但你犯了一个错误。

content: "|" black;

您不能在 content 属性上使用 CSS shorthand。你需要给 ::after 伪 class padding-left 使其居中对齐。

试试上面的方法jsFiddle希望这对你有帮助。