如何在所有屏幕尺寸上保持导航栏折叠?

How to keep navigation bar collapsed on all screen sizes?

我尝试了这里建议的这两种不同的解决方案:

我也尝试过许多其他不同的解决方案,这些解决方案或多或少都是相同的。 None 对我有用。

如何让 Bootstrap 3 导航栏在所有大小的屏幕上都处于折叠状态?

这是 HTML :

<nav class="navbar navbar-default navbar-custom">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
        <a class="navbar-brand" href="index.html">
             <img class="img-responsive imglogoheader" src="images/logo1.png">
        </a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class=""><a href="index.html">Home</a></li>
        <li><a href="profile.html">Profile</a></li>
         <li><a href="settings.html">Settings</a></li>
      <ul style="display:none !important;" class="nav navbar-nav navbar-right"></ul>
    </div>
  </div>
</nav> 

要使导航栏菜单在 Bootstrap 3 中的所有响应时间间隔都可切换,您需要此代码段:

@media (min-width: 768px) {
  .navbar {
    .navbar-header,
    .navbar-nav>li {
      float: none;
    }
    .navbar-nav {
      float: none;
      margin: 7.5px -15px;
    }
    .navbar-toggle {
      display: block;
      margin-right: 0;
    }
    .navbar-collapse {
      border-top: 1px solid transparent;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
    }
    .navbar-collapse.collapse {
      display: none;
    }
    .navbar-nav>li>a {
      padding-top: 10px;
      padding-bottom: 10px;
    }
    .navbar-text {
      float: none;
      margin: 15px 0;
    }
    .navbar-collapse.collapse.in {
      display: block;
    }
    .collapsing {
      overflow: hidden;
    }
  }
}

请注意是 SCSS。如果你想要它作为 CSS,你可以从答案末尾的演示中 copy/paste 它。

该解决方案主要改编自 this answer,但我认为值得将其作为一个干净的解决方案发布,而不是告诉您使用断点并清理它。 最重要的是,它不使用 !important.

随时为原始答案点赞。这是一个难题的特殊解决方案,特别是考虑到 Bootstrap 3 的导航栏折叠逻辑机制的复杂性(它由折叠插件完成,在 JavaScript - 这使得调试变得困难 and/or 逆向工程)。

看到它有效:

@media (min-width: 768px) {
  .navbar .navbar-header,
  .navbar .navbar-nav>li {
    float: none;
  }
  .navbar .navbar-nav {
    float: none;
    margin: 7.5px -15px;
  }
  .navbar .navbar-toggle {
    display: block;
    margin-right: 0;
  }
  .navbar .navbar-collapse {
    border-top: 1px solid transparent;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  .navbar .navbar-collapse.collapse {
    display: none;
  }
  .navbar .navbar-nav>li>a {
    padding-top: 10px;
    padding-bottom: 10px;
  }
  .navbar .navbar-text {
    float: none;
    margin: 15px 0;
  }
  .navbar .navbar-collapse.collapse.in {
    display: block;
  }
  .navbar .collapsing {
    overflow: hidden;
  }
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<nav class="navbar navbar-default navbar-custom">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="index.html">
             Logo
        </a>
    </div>
    <div class="collapse .navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class=""><a href="index.html">Home</a></li>
        <li><a href="profile.html">Profile</a></li>
        <li><a href="settings.html">Settings</a></li>
      </ul>
    </div>
  </div>
</nav>

tao 给出的答案在 60% 时有效,但对我来说并不是所有的方法。在这里,我分享了最终为我做的事情。在我的 custom.css 中,我用自定义规则

覆盖了 bootstrap

custom.css

@media (min-width: 768px) {
  .navbar .navbar-header,
  .navbar .navbar-nav>li {
    float: none;
  }
  .navbar .navbar-nav {
    float: none;
    margin: 7.5px -15px;
  }
  .navbar .navbar-toggle {
    display: block;
    margin-right: 0;
  }
  .navbar .navbar-collapse {
    border-top: 1px solid transparent;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  .navbar .navbar-collapse.collapse {
    display: none;
  }
  .navbar .navbar-nav>li>a {
    padding-top: 10px;
    padding-bottom: 10px;
  }
  .navbar .navbar-text {
    float: none;
    margin: 15px 0;
  }
  .navbar .navbar-collapse.collapse.in {
    display: block;
  }
  .navbar .collapsing {
    overflow: hidden;
  }
}

我不得不在 bootstrap.min.cs 中注释掉这一行以使其全部正常工作:

  .navbar-collapse.collapse {
    /* display:block!important;*/
     height:auto!important;
     padding-bottom:0;
     overflow:visible!important
    }