有没有办法增加Bootstrap 3导航栏折叠的触发点(即在纵向平板电脑上折叠到下拉菜单中的点)?
这两个适用于Bootstrap 2,但现在不适用!
有没有办法增加Bootstrap 3导航栏折叠的触发点(即在纵向平板电脑上折叠到下拉菜单中的点)?
这两个适用于Bootstrap 2,但现在不适用!
今天我遇到了同样的问题。
Bootstrap 4
这是本地功能:https://getbootstrap.com/docs/4.0/components/navbar/#responsive-behaviors
您需要使用.navbar-expand{-sm|-md|-lg|-xl}
类:
<nav class="navbar navbar-expand-md navbar-light bg-light">
Bootstrap 3
@media (max-width: 991px) {
.navbar-header {
float: none;
}
.navbar-toggle {
display: block;
}
.navbar-collapse {
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
.navbar-collapse.collapse {
display: none!important;
}
.navbar-nav {
float: none!important;
margin: 7.5px -15px;
}
.navbar-nav>li {
float: none;
}
.navbar-nav>li>a {
padding-top: 10px;
padding-bottom: 10px;
}
.navbar-text {
float: none;
margin: 15px 0;
}
/* since 3.1.0 */
.navbar-collapse.collapse.in {
display: block!important;
}
.collapsing {
overflow: hidden!important;
}
}
将991px
更改为1199px
,以适应md
尺寸。
.navbar-collapse.collapse.in { display: block!important; }
以防止其消失。不过干得好,节省了我几个小时。 - Dave Forberdropdown-menu
项目的功能。 - alexw@media(min-width:768px)
,根据Bootstrap 3的术语,这是“小屏幕”(即平板电脑)。
@grid-float-breakpoint:@screen-tablet;
如果要保持折叠时间长一点,可以进行以下调整:
@grid-float-breakpoint: @screen-desktop;
(992px断点)
或者更早地扩展
@grid-float-breakpoint: @screen-phone
(480px断点)
如果您想要更晚地扩展它,而不必重新编译LESS,那么您需要覆盖应用于768px媒体查询的样式,并将其返回到先前的值。然后在适当的时间重新添加它们。
我不确定是否有更好的方法。重新编译Bootstrap LESS以符合您的需求是最好(最简单)的方法。否则,您需要查找影响导航栏的所有CSS媒体查询,将它们覆盖为默认样式@ 768px宽度,然后在更高的最小宽度上将它们恢复为原来的样式。
通过更改变量,重新编译LESS将为您执行所有这些操作。这基本上就是LESS / SASS预编译器的重点。 =)
(注意,我都查看了它们,大约有100行代码,这让我感到烦恼,因此我放弃了这个想法,只是针对特定项目重新编译Bootstrap并避免意外损坏任何东西)
这些内容可以通过变量进行控制,无需在源代码中深度操作。使用Bootstrap时,请尝试使用变量,然后再进行覆盖操作。之后返回并再次尝试使用变量 ;)
我在Rails中使用了bootstrap-sass,但是默认的LESS也一样。
FILE: main.css.scss
-------------------
// control the screen sizes
$screen-xs-min: 300px;
$screen-sm-min: 400px;
$screen-md-min: 800px;
$screen-lg-min: 1200px;
// this tells which screen size to use to start breaking on
// will tell navbar when to collapse
$grid-float-breakpoint: $screen-md-min;
// then import your bootstrap
@import "bootstrap";
就是这样!这个变量参考页面非常方便:https://github.com/twbs/bootstrap/blob/master/less/variables.less
感谢Seb33300,我成功解决了问题。不过,似乎缺少一个重要的部分,至少在Bootstrap版本3.1.1中如此。
我的问题是导航栏在正确的宽度下折叠,但菜单按钮无法使用,我不能展开和折叠菜单。
这是因为collapse.in类被navbar-collapse.collapse中的!important覆盖了,可以通过添加"collapse.in"来解决。Seb33300的示例如下:
@media (max-width: 991px) {
.navbar-header {
float: none;
}
.navbar-toggle {
display: block;
}
.navbar-collapse {
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
.navbar-collapse.collapse {
display: none!important;
}
.navbar-collapse.collapse.in {
display: block!important;
}
.navbar-nav {
float: none!important;
margin: 7.5px -15px;
}
.navbar-nav>li {
float: none;
}
.navbar-nav>li>a {
padding-top: 10px;
padding-bottom: 10px;
}
}
.navbar .nav > li > a {
padding: 10px 15px 10px; /* Change here the second value for padding-left and padding right */
}
默认的填充是左右两侧各15像素。
如果您想更改每个单独的边,请使用:
padding-left: 7px;
padding-right: 8px;
此设置也会影响下拉列表。
这并没有回答问题,但对于那些不想深入了解CSS或使用LESS变量的人可能有所帮助。解决此问题的两种常见方法。
我想给jmbertucci的答案点赞并发表评论,但我还没有被授予控制权限。我遇到了同样的问题,并像他说的那样解决了它。如果你使用的是Bootstrap 3.0,请在variables.less文件中编辑LESS变量。响应式断点设置在大约200行左右:
@screen-xs: 480px;
@screen-phone: @screen-xs;
// Small screen / tablet
@screen-sm: 768px;
@screen-tablet: @screen-sm;
// Medium screen / desktop
@screen-md: 992px;
@screen-desktop: @screen-md;
// Large screen / wide desktop
@screen-lg: 1200px;
@screen-lg-desktop: @screen-lg;
// So media queries don't overlap when required, provide a maximum
@screen-xs-max: (@screen-sm - 1);
@screen-sm-max: (@screen-md - 1);
@screen-md-max: (@screen-lg - 1);
@media (min-width: 768px) {
.navbar-header {
float: none; }
.navbar-toggle {
display: block; }
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
padding-right: 15px;
padding-left: 15px; }
.navbar-collapse.collapse {
display: none !important; }
.navbar-collapse.collapse.in {
display: block!important;
margin-top: 0px; }
}
@media (min-width: 1200px) {
.navbar-header {
float: left; }
.navbar-toggle {
display: none; }
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
display: block !important; }
}
navbar
包装在一个带有类sidebar
的div中,以分离出我想要的行为,这样它就不会影响站点上的其他导航栏,如主菜单。根据您的需求进行调整,希望能有所帮助。/* Sidebar Menu Fix */
.sidebar .navbar-nav {
margin: 7.5px -15px;
}
.sidebar .navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px;
line-height: 20px;
}
.sidebar .navbar-collapse {
max-height: 500px;
}
.sidebar .navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
box-shadow: none;
}
.sidebar .dropdown-menu > li > a {
color: #777777;
}
.sidebar .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.sidebar .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: #333333;
background-color: transparent;
}
.sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
.sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
.sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #555555;
background-color: #e7e7e7;
}
.sidebar .navbar-nav {
float: none;
}
.sidebar .navbar-nav > li {
float: none;
}
navbar
(因为我的网站上面的代码用于侧边栏的“子菜单”)。<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
转换为:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-topmenu">
<div class="navbar-collapse collapse navbar-collapse">
转换为:
<div class="navbar-collapse collapse navbar-collapse-topmenu">
<nav data-sm-collapse="800px"...
,那就太好了,因为在构建之前我不知道需要多宽。 - rybo111