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

Posted

技术标签:

【中文标题】在 Bootstrap 中禁用响应式(移动)导航栏【英文标题】:Disable responsive (mobile) navbar in Bootstrap 【发布时间】:2017-06-16 03:46:45 【问题描述】:

有没有办法在 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>

非常感谢。

【问题讨论】:

【参考方案1】:

Bootstrap 5(2021 年更新)

navbar-expand* 类仍在 Bootstrap 5 中使用。因此,如果您想防止导航栏折叠(垂直堆叠),请使用 navbar-expand。由于填充的变化,Bootstrap 5 导航栏确实需要一个内部容器。


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 Disable Responsive Navbar

您还可以使用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 -- 折叠到移动端navbar-expand-lg -- 折叠到移动端navbar-expand-md -- 折叠到移动端navbar-expand-sm -- 折叠到移动端

navbar-expand -- 始终移动,折叠(默认)

http://codeply.com/go/z9VJTOBuaS

【讨论】:

老兄!太感谢了!我是说,真的。我花了 3 个小时在上面,但找不到简单的方法。 有什么方法可以证明并填充导航栏的整个宽度?与您使用&lt;ul class="nav nav-justified"&gt;&lt;ul class="nav nav-fill"&gt; 的效果基本相同? 好吧,我真的应该知道navbar-expand,但这是我遇到的一个问题,因为我在navbar-expand-md 有我的,它正在吹倒(高度) 整个 div。【参考方案2】:

我建议只使用导航,但如果您需要导航栏的样式,您可以通过添加辅助类并删除一些以使其按您想要的方式运行来绕过它。这应该在没有切换按钮下拉功能的情况下在移动设备上显示链接项目。

<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吗? 正确,但是将一些 css 复制到自定义类中比删除导航栏 IMO 周围的功能要容易得多。我可以将 CSS 添加到答案中。

以上是关于在 Bootstrap 中禁用响应式(移动)导航栏的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap实战 - 响应式布局

在移动设备中查看时带有侧边栏的 Bootstrap 导航栏

Bootstrap 4 响应式导航栏垂直

Twitter Bootstrap 和移动导航栏

Bootstrap 导航栏

Angular UI Bootstrap 响应式导航栏下拉菜单在新版本中无法正常工作