如何在所有屏幕尺寸上保持导航栏折叠?
How to keep navigation bar collapsed on all screen sizes?
我尝试了这里建议的这两种不同的解决方案:
- How to keep Bootstrap 3 navbar as collapsed for all screen sizes
- Change bootstrap navbar collapse breakpoint without using LESS
我也尝试过许多其他不同的解决方案,这些解决方案或多或少都是相同的。 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
}
我尝试了这里建议的这两种不同的解决方案:
- How to keep Bootstrap 3 navbar as collapsed for all screen sizes
- Change bootstrap navbar collapse breakpoint without using LESS
我也尝试过许多其他不同的解决方案,这些解决方案或多或少都是相同的。 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 中,我用自定义规则
覆盖了 bootstrapcustom.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
}