Bootstrap 4导航栏中的分隔符

7

我正在尝试在 navbar 中的 nav-items 之间放置分隔符,但我不知道如何在 nav-item 之间均匀设置分隔符的填充。

enter image description here

我的第二个问题是,当导航栏折叠时,在 toggle-navbar 中出现了分隔符,我尝试去除它们,但没有成功。

enter image description here

如果有更好的方法来创建分隔符,我将不胜感激。
以下是我的代码:

.navbar-nav > li > a::after {
    content: "|";
    padding: 0 5px
}
<div class="collapse navbar-collapse" id="navbarResponsive">
  <!--
  1) collapse - class dedicate to a given alement
  2) navbar-collapse:  show elements to bootstrap which belong to navbar, then use function - collapse
  -->
  <ul class="navbar-nav ml-auto">
    <li class="nav-item active">
      <a class="nav-link" href="#">O nas</a>
    </li>
    <li class="nav-item active">
      <a class="nav-link" href="#">Cennik</a>
    </li>
    <li class="nav-item active">
      <a class="nav-link" href="#">Usługi</a>
    </li>
    <li class="nav-item active">
      <a class="nav-link" href="#">Rejestracja</a>
    </li>
    <li class="nav-item active">
      <a class="nav-link" href="#">Porady</a>
    </li>
  </ul>
</div>


1
你能提供一张你想要实现的图片吗?我不太明白你想做什么。 - mdubus
我刚刚在我的帖子中添加了图片链接。分隔符,我的意思是这些竖线。 - Mr. Daniel
4个回答

6
也许在你的导航项上使用border-right CSS样式可以解决问题,并且您可以在特定的断点(下面的示例中选择了MD)上禁用它们。

.border-md-right {
  border-right: 1px solid silver;
}

@media (max-width: 768px) {

  .border-md-right {
    border-right: none;
  }

}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>

<nav class="navbar navbar-expand-md navbar-dark bg-dark">
  <a class="navbar-brand" href="#">Navbar</a>

  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarResponsive">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item active border-md-right">
        <a class="nav-link" href="#">O nas</a>
      </li>
      <li class="nav-item active border-md-right">
        <a class="nav-link" href="#">Cennik</a>
      </li>
      <li class="nav-item active border-md-right">
        <a class="nav-link" href="#">Usługi</a>
      </li>
      <li class="nav-item active border-md-right">
        <a class="nav-link" href="#">Rejestracja</a>
      </li>
      <li class="nav-item active">
        <a class="nav-link" href="#">Porady</a>
      </li>
    </ul>
  </div>
  
</nav>


谢谢!我一直在寻找这样的东西。这解决了我的问题 :) - Mr. Daniel
@Mr.Daniel,请考虑给这个答案点赞并将其标记为正确的答案,如果它对您有帮助的话,谢谢! - Shidersz

5

@Shidersz的解决方案应该可行。如果您不想在每个li中添加额外的类,还有另一种解决方案。但是,如果您有一个动态菜单,并且必须将此类添加到除最后一个元素之外的每个元素上,则可能会更加困难!

.navbar-nav .nav-item:not(:last-child) {
   border-right: 1px solid silver;
}

@media (max-width: 768px) {
  .navbar-nav .nav-item:not(:last-child) {
    border-right: none;
  }
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>

<nav class="navbar navbar-expand-md navbar-dark bg-dark">
  <a class="navbar-brand" href="#">Navbar</a>

  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarResponsive">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">O nas</a>
      </li>
      <li class="nav-item active">
        <a class="nav-link" href="#">Cennik</a>
      </li>
      <li class="nav-item active">
        <a class="nav-link" href="#">Usługi</a>
      </li>
      <li class="nav-item active">
        <a class="nav-link" href="#">Rejestracja</a>
      </li>
      <li class="nav-item active">
        <a class="nav-link" href="#">Porady</a>
      </li>
    </ul>
  </div>
  
</nav>


3

我使用 Bootstrap 4 成功地运行了这个。

.navbar-nav > li > a::after {
    content:'|';
    padding-left:10px;
    @media (max-width: 767px) {
        content: none;
        padding-left:0;
    }
}
 .navbar-nav > li:last-child > a::after {
         content:none;
}

不错的解决方案,使用了 last-child。但是格式有点问题,第一行也没有显示出来,所以我编辑了一下,将反引号移到了单独的一行。 - Tobias J

0

使用Bootstrap 5可以实现此功能

<nav class="navbar navbar-expand">
    <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav">
            <li class="nav-item">
                <a class="nav-link" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Features</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Pricing</a>
            </li>
            <li class="nav-item">
                <a class="nav-link">Disabled</a>
            </li>
        </ul>
    </div>
</nav>

还有CSS

.navbar-nav > li > a::after {
    content: '|';
    padding-left: 15px;
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接