Bootstrap 4导航栏:使logo居中并将切换图标放置左侧

3
我想让标志图案居中且导航栏左边显示链接,当在小设备上折叠时,切换按钮应出现在左侧,但当前它出现在右侧。标志图案应固定(不折叠)。
<nav class="navbar navbar-expand-sm navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <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" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>
2个回答

5
Bootstrap 4导航栏使用了flexbox,因此可以实现此操作无需额外的CSS。你需要一个空的分隔符div来保持标志居中。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <div class="collapse navbar-collapse w-100 order-1 order-lg-0" id="navbarNav">
        <ul class="navbar-nav">
            <li class="nav-item active">
                <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" href="#">Disabled</a>
            </li>
        </ul>
    </div>
    <div class="d-flex w-100 order-0">
        <div class="w-100">
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav">
                <span class="navbar-toggler-icon"></span>
            </button>
        </div>
        <a class="navbar-brand text-center w-100" href="#">Navbar</a>
        <span class="w-100"></span>
    </div>
    <span class="w-100"></span>
</nav>

开关在左边,品牌在中间:
https://www.codeply.com/go/VfuMAtIoXi

相关内容:
如何在Bootstrap中居中导航项?
带有左、中、右对齐项目的Bootstrap NavBar


它修复了小设备的问题,但在中大型设备上,标志仍然在左侧,没有居中。 - Md Faysal Ahmed Akash
我觉得我可能没有把问题表达清楚……无论显示器尺寸如何,标志始终应该位于中心。 - Md Faysal Ahmed Akash
在 Codeply 中观察输出结果,它正是我想要的,但在我的浏览器(Chrome)中却无法工作。 - Md Faysal Ahmed Akash
那个答案使用了CSS。你尝试在Chrome中运行你的代码了吗? - Md Faysal Ahmed Akash
我已经发布了可工作的代码和示例。问题基本上是其他许多导航栏居中问题的重复。 - Carol Skelly
终于找到我想要的了! - Md Faysal Ahmed Akash

1
当然,很抱歉,我应该早点加上它。基本上我们所做的是将 .navbar-brand 移动到中间,给它参数 0 auto,并调整 .navbar-collapse(即菜单项)到左侧,使其距离导航栏顶部有 10 像素的空间。然后使用媒体查询,在仅在 767px 时开始工作,将 .navbar-brand 居中,以便它始终位于中间,我们现在像之前对菜单项所做的那样调整 .navbar-toggler(菜单图标),现在它们正在获取默认位置,给它们以下样式:position: inherit; 然后我还修改了 navbar-expand-sm 类为 navbar-expand-md,以更改断点。

.navbar-brand {
 margin: 0 auto;
}
.navbar-collapse {
 position: absolute;
 top: 10px;
}

@media (max-width: 767px) {
.navbar-brand {
 text-align: center;
}
.navbar-toggler {
 position: absolute;
 top: 10px;
}
.navbar-collapse {
 position: inherit;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>



<nav class="navbar navbar-expand-md navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"> <span class="navbar-toggler-icon"></span> </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active"> <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" href="#">Disabled</a> </li>
    </ul>
  </div>
</nav>


@MdFaysalAhmedAkash,请告诉我是否不清楚,如果我的英语不太好,请接受我的道歉。 - Matt
position:absolute 和 position:inherit - Md Faysal Ahmed Akash
为什么我无法在左右两侧添加链接?它只出现在左侧,是什么原因? - Md Faysal Ahmed Akash
关于position属性,我想下面的链接可能比我的解释更好:[w3schools] (https://www.w3schools.com/css/css_positioning.asp) 和 [w3schools] (https://www.w3schools.com/cssref/pr_class_position.asp)。 - Matt
你是说像左边和右边各有一个菜单这样的东西? - Matt
显示剩余6条评论

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