首页 > 解决方案 > Bootstrap 4 Navbar 将内容左、中、右对齐

问题描述

我需要在左侧实现品牌徽标,在中心实现菜单项,在右侧实现几个按钮。我曾尝试使用 flexbox 方法,但中心项目不能很好地对齐。并且品牌标志的空间很大,带有可点击的链接。

JS小提琴

<nav class="navbar navbar-light navbar-expand-md bg-faded justify-content-center">
            <div class="container">
                <a href="/" class="navbar-brand d-flex w-100 mr-auto"><img src="assets/logo/" alt="logo"></a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar3">
    <span class="navbar-toggler-icon"></span>
</button>
                <div class="navbar-collapse collapse w-100 ml-auto" id="collapsingNavbar3">
                    <ul class="navbar-nav w-100 justify-content-center">
                        <li class="nav-item active">
                            <a class="nav-link" href="#">How it works</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">Become a tutor</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">Pricing</a>
                        </li>
                    </ul>
                    <ul class="nav navbar-nav ml-auto w-100 justify-content-end">
                        <li class="nav-item">
                            <a class="btn btn-link" href="#">Sign In</a>
                        </li>
                        <li class="nav-item">
                            <a class="btn btn-primary" href="#">Sign Up</a>
                        </li>
                    </ul>
                </div>
            </div>
</nav>

几个月后回答我自己的问题。

<nav class="navbar navbar-light navbar-expand-md bg-white justify-content-center main--navigation dark-header">
    <a href="#" class="navbar-brand d-flex w-50 mr-auto">
        <img src="assets/images/logo-header.svg" class="navigation__logo" alt="Logo" />
    </a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="navbar-collapse collapse w-100" id="collapsingNavbar">
        <ul class="navbar-nav w-100 justify-content-center">
            <li class="nav-item active">
                <a class="nav-link" href="#">Browse</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">How it works</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Become a tutor</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Prices</a>
            </li>
        </ul>

        <ul class="nav navbar-nav ml-auto w-100 justify-content-end">
            <li class="nav-item dropdown no-arrow mx-1 nav-link px-0">
                <button id="bookmarksDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" class="btn btn-outline-secondary btn-outlined" data-original-title="Bookmarks"><img src="assets/icons/bookmark-header-dark.svg"></button>

                <div class="dropdown-list dropdown-menu dropdown-menu-right" aria-labelledby="alertsDropdown">
                    <h6 class="dropdown-header">
                        Bookmarks
                    </h6>
                </div>
            </li>
            <li class="nav-item dropdown no-arrow mx-1 nav-link px-0">
                <button id="messagesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" class="btn btn-outline-secondary btn-outlined" data-original-title="Notifications"><img src="assets/icons/bell-header-dark.svg"></button>

                <div class="dropdown-list dropdown-menu dropdown-menu-right" aria-labelledby="notificationsDropdown">
                    <h6 class="dropdown-header">
                        You do not have any notifications yet
                    </h6>
                </div>
            </li>
            <li class="nav-item dropdown no-arrow mx-1 ml-3 mr-0 nav-link px-0">
                <a class="nav-link dropdown-toggle pr-0" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                    <div class="header__profile__title d-inline-block text-right align-middle">
                        <span class="mr-2 d-none d-block header__profile__name">Aaron Alexander</span>
                        <span class="mr-2 d-none d-block header__profile__role">Student</span>
                    </div>
                    <div class="header__profile d-inline-block">
                        <img class="img-profile rounded" src="assets/images/andrew-franklin.jpeg" alt="Aaron Alexander">
                    </div>
                </a>

                <div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
                    <a class="dropdown-item" href="#">
                        <i class="fas fa-user fa-sm fa-fw mr-2"></i>
                        Profile
                    </a>
                    <a class="dropdown-item" href="#">
                        <i class="fas fa-cogs fa-sm fa-fw mr-2"></i>
                        Settings
                    </a>
                    <a class="dropdown-item" href="#">
                        <i class="fas fa-list fa-sm fa-fw mr-2"></i>
                        Activity Log
                    </a>
                    <div class="dropdown-divider"></div>
                    <a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">
                        <i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
                        Logout
                    </a>
                </div>
            </li>
        </ul>
    </div>
</nav>

标签: htmlcsstwitter-bootstrapbootstrap-4

解决方案


这是我的工作示例。您只需要将所有内容放入单个 div 中,以便使用引导类证明内容。另外,我正在使用 navbar-brand 并根据屏幕分辨率使它们显示隐藏。您可以使用 js 来做到这一点,一旦页面完全加载,它可能会更流畅。

@media only screen and (max-width: 991px) {
  .logo {
    display: flex;
  }
  .collapse .navbar-brand {
    display: none
  }
}

@media only screen and (min-width: 992px) {
  .logo {
    display: none;
  }
  .collapse .navbar-brand {
    display: none;
  }
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<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.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<nav class="navbar navbar-expand-lg navbar-light bg-light d-flex ">
  <a class="navbar-brand logo" href="#">Navbar</a>

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

  <div class="collapse navbar-collapse justify-content-between" id="navbarSupportedContent">
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Dropdown
                    </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>

</nav>


推荐阅读