使用Bootstrap 3.0在导航栏中添加多个折叠按钮

14

我正在使用Bootstrap 3.0展示一个带有链接和搜索字段的导航栏。

当我进入“移动版”时,我有一个按钮可以折叠导航栏并显示所有内容:链接和搜索字段。现在我需要两个按钮,一个按钮只折叠导航栏的链接,另一个按钮只折叠搜索字段。我该怎么做?

1个回答

20
将链接和搜索表单分别放置在两个 navbar-collapse 元素中,并使每个按钮对应相应的元素:
示例标记:
<nav class="navbar navbar-default" role="navigation">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#search">Toggle search</button>
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#links">Toggle links</button> 
        <a class="navbar-brand" href="#">Brand</a>
    </div>
    <ul class="collapse navbar-collapse nav navbar-nav" id="links">
        <!--Links go here-->
    </ul>
    <div class="collapse navbar-collapse" id="search">
        <form class="navbar-form navbar-left" role="search">
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
        </form>
    </div>
</nav>

你只需要将以下内容添加到你的CSS中,就可以解决.navbar-nav.navbar-collapse之间的一些样式冲突:

.navbar-nav { flex-direction: row; }
.navbar-collapse { justify-content: flex-end; }
@media (max-width:767px) {
    .navbar-nav.navbar-collapse {
        margin-left: 0;
        margin-right: 0;
        padding-left: 0;
        padding-right: 0;
    }
}

这里有一个 演示样例


感谢您提供的解决方案。我还发现需要在上面的.navbar-nav.navbar-collapse样式中添加margin-top:0;margin-bottom:0;,否则默认的垂直边距会导致.navbar-nav关闭时出现轻微跳动。这是一个修改后的fiddle - russellb
我一开始在查找使用jQuery实现搜索的解决方案,但没想到可以直接复制Bootstrap的菜单按钮。想想看,收缩式搜索也是一种常见的响应式模式,因此这应该作为Bootstrap文档的一部分。感谢巧妙的解决方案! - alds

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