在Bootstrap中禁用响应式(移动)导航栏

12
有没有办法在Bootstrap 4中禁用响应式导航栏?我不想像移动版本那样有下拉菜单,因为在品牌旁边仍然可以看到2个链接。此外,我想知道是否可能将链接放在栏的右侧。 pull-xs-right似乎不能正确工作。

我的当前代码如下:

<nav class="navbar navbar-fixed-top navbar-toggleable-sm navbar-light bg-faded">
    <a href="/" class="navbar-brand">PIM</a>
    <ul class="nav navbar-nav pull-xs-right">
        <li class="nav-item"><Link class="nav-link" to="/login">Login</Link></li>
        <li class="nav-item"><Link class="nav-link" to="/signup">Sign up</Link></li>
    </ul>
</nav>

非常感谢您的帮助。

2个回答

35

Bootstrap 5 (更新于2021年)

在Bootstrap 5中仍然使用navbar-expand*类。因此,如果要防止导航栏收缩(垂直堆叠),请使用navbar-expand。由于填充的更改,Bootstrap 5 Navbars 需要一个内部容器。


Bootstrap 4 (原始回答)

最简单的方法是使用navbar-toggleable-xl navbar-expand类(现在在Bootstrap 4中),以便菜单在所有宽度下都是非移动的(水平的)。

<nav class="navbar navbar-expand navbar-dark bg-primary">
    <a class="navbar-brand" href="#">Navbar</a>
    <div class="navbar-collapse collapse">
        <ul class="navbar-nav">
            <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">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
</nav>

示例: Bootstrap 4 禁用响应式导航栏

你也可以使用 flexbox 工具在较小屏幕上防止垂直导航栏。使用 flex-nowrap flex-row 允许导航栏在任何宽度下保持水平...

<nav class="navbar navbar-light bg-faded justify-content-between flex-nowrap flex-row">
    <a href="/" class="navbar-brand">PIM</a>
    <ul class="nav navbar-nav flex-row">
        <li class="nav-item"><a class="nav-link pr-3" href="/login">Login</a></li>
        <li class="nav-item"><a class="nav-link" href="/signup">Sign up</a></li>
    </ul>
</nav>
工作原理:

navbar-expand -- 始终水平展示,不会折叠
navbar-expand-xl -- 在小于1200px时折叠为移动菜单
navbar-expand-lg -- 在小于992px时折叠为移动菜单
navbar-expand-md -- 在小于768px时折叠为移动菜单
navbar-expand-sm -- 在小于576px时折叠为移动菜单

没有使用 navbar-expand -- 始终显示为移动菜单,折叠状态(默认)

http://codeply.com/go/z9VJTOBuaS


1
兄弟!非常感谢你!我的意思是,真的。我花了3个小时都找不到一个简单的方法来解决它。 - user2116499
有没有办法使导航栏的宽度充满整个屏幕并且保持对齐?基本上就像使用<ul class="nav nav-justified"><ul class="nav nav-fill">一样的效果? - QuantumHive
好吧,我真的应该知道navbar-expand,但那是我遇到的问题,因为我的是navbar-expand-md,它将整个div都撑开了(高度方面)。 - Abela

0
我建议只使用一个 nav,但如果您需要导航栏的样式,可以通过添加辅助类并删除一些来使其按照您想要的方式运行。这样应该在移动设备上显示链接项目,而无需切换按钮下拉功能。
<nav class="navbar navbar-fixed-top navbar-toggleable-sm navbar-light bg-faded">
  <a href="/" class="navbar-brand">PIM</a>
  <div id="navbarNav" class="navbar-collapse">
    <ul class="navbar-nav">
      <li class="nav-item">
        <Link class="nav-link" to="/login"> Login
        </Link>
      </li>
      <li class="nav-item">
        <Link class="nav-link" to="/signup"> Sign up
        </Link>
      </li>
    </ul>
  </div>
</nav>

请参考JSFIDDLE


谢谢Amir,只是我不熟悉css,使用navBar可以让事情变得更容易。如果我删除navBar,它也会删除背后的css,我想。你知道我怎么才能得到那个css吗? - user2116499
正确,但是将一些CSS复制到自定义类中会更容易,而不是在导航栏周围删除功能。我可以将CSS添加到答案中。 - Amir5000

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