Bootstrap 4 中的堆叠折叠导航栏

15

我想创建一个可折叠的 navbar。一切正常,但是nav项目没有像应该的那样垂直堆叠在一起,而是水平排列在一起。

代码:

<nav class="navbar navbar-light bg-faded" role="navigation">
    <button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#collapsing-navbar">
        &#9776;
    </button>

    <div class="collapse navbar-toggleable-xs" id="collapsing-navbar">   
        <a class="navbar-brand" href="/">Logo</a>

        <ul class="nav navbar-nav">
            <li class="nav-item">
                <a href="/messages" class="nav-link">Messages</a>
            </li>

            <li class="nav-item">
                <a href="/logout" class="nav-link">Logout</a>
            </li>
        </ul>
    </div>
</nav>

截图:

bootstrap4 error

3个回答

20

Bootstrap 4 Alpha 6(自从版本alpha 6起,堆叠式菜单内置 - 无需使用额外的CSS):

<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" 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>
  <a class="navbar-brand" href="#">Navbar</a>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <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">
        <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="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

CODEPEN


谢谢。这个以后会被支持吗,还是没有机会? - Iter Ator
你有什么想法可以添加哪些CSS来使得第二个导航栏在你的代码中向右拉,就像这样,里面有导航项?如果你的菜单有左侧和右侧两个部分。<ul class="nav navbar-nav pull-right"></ul> 当你展开折叠的导航栏时,该栏内的任何导航项仍将被向右拉。 - Steve
我会在左侧导航栏中添加一个类(例如my-navbar-left),并将其添加到CSS中,以便仅应用于此导航栏。示例:.my-navbar-left .navbar-nav .nav-item { float: none; } - max
这是我所说的一个例子,当在较小的屏幕尺寸上展开时,右侧导航项仍然向右拉。http://codepen.io/anon/pen/qOyMWz这应该设置得不同或使用CSS进行调整吗? - Steve
http://codepen.io/anon/pen/LpBJWV - 更改:我创建了一个新类(.navbar-right),并在屏幕宽度大于34em时应用该类样式(float: right),而不是使用pull-right.pull-right类的问题是它具有!important规则。我认为这是目前最好的解决方案。我认为人们现在不应该使用Bootstrap 4进行开发(学习-为什么不呢)。如果您基于Bootstrap 4创建网站,则可能会在最终版本发布时遇到问题。 - max

5
似乎使用CSS覆盖更容易实现:
@media(max-width:768px) {
    .navbar .navbar-nav>.nav-item {
        float: none;
        margin-left: .1rem;
    }
    .navbar .navbar-nav {
        float:none !important;
    }
    .navbar .collapse.in, .navbar .collapsing  {
        clear:both;
    }
}

http://codeply.com/go/Ar1H2G4JVH

更新

从BS4 alpha 6开始,不再需要额外的CSS。导航栏标记已更改。 http://www.codeply.com/go/0OMz6nfPLr


3
自从 Bootstrap 4 Alpha 5 版本开始,你可以使用一个 collapse 插件:

http://v4-alpha.getbootstrap.com/components/navbar/

<nav class="navbar navbar-light bg-faded">
  <button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"></button>
  <div class="collapse navbar-toggleable-md" id="navbarResponsive">
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="nav 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">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="http://example.com" id="responsiveNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
        <div class="dropdown-menu" aria-labelledby="responsiveNavbarDropdown">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>
    <form class="form-inline float-lg-right">
      <input class="form-control" type="text" placeholder="Search">
      <button class="btn btn-outline-success" type="submit">Search</button>
    </form>
  </div>
</nav>

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