不使用LESS更改引导程序导航栏折叠断点

Nea*_*int 199 css collapse navbar responsive-design twitter-bootstrap

目前,当浏览器宽度降至768px以下时,导航栏将更改为折叠模式.我想将此宽度更改为1000px,因此当浏览器低于1000px时,导航栏将更改为折叠模式.我想在不使用LESS的情况下这样做,我使用手写笔不是很少.

我的问题与此问题相同:Bootstrap 3 Navbar Collapse

但是这些问题的所有答案都解释了如何通过改变LESS变量来做到这一点.我没有处理过LESS,我正在使用手写笔,所以我想知道如何使用手写笔或其他方法来完成.

谢谢!

Zim*_*Zim 378

2018年更新

Bootstrap 4

使用navbar-expand-*类在Bootstrap 4中更改导航栏断点更容易:

<nav class="navbar fixed-top navbar-expand-sm">..</nav>

  • navbar-expand-sm = xs屏幕上的移动菜单<576px
  • navbar-expand-md = sm屏幕上的移动菜单<768px
  • navbar-expand-lg = md屏幕上的移动菜单<992px
  • navbar-expand-xl = lg屏幕上的移动菜单<1200px
  • navbar-expand =永远不要使用手机菜单
  • (no expand class) =始终使用移动菜单

如果排除navbar-expand-*移动菜单,将使用all宽度.这是所有6个导航栏状态的演示:Bootstrap 4 Navbar示例

您还可以通过添加一个CSS来使用自定义断点(??? px).例如,这里是1300px ..

@media (min-width: 1300px){
    .navbar-expand-custom {
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-start;
    }
    .navbar-expand-custom .navbar-nav {
        flex-direction: row;
    }
    .navbar-expand-custom .navbar-nav .nav-link {
        padding-right: .5rem;
        padding-left: .5rem;
    }
    .navbar-expand-custom .navbar-collapse {
        display: flex!important;
    }
    .navbar-expand-custom .navbar-toggler {
        display: none;
    }
}
Run Code Online (Sandbox Code Playgroud)

Bootstrap 4 自定义 Navbar断点
引导4 Navbar断点示例


Bootstrap 3

对于Bootstrap 3.3.x,这是用于覆盖导航栏断点的工作 CSS.更改991px为您希望导航栏折叠的点的像素尺寸...

@media (max-width: 991px) {
  .navbar-header {
      float: none;
  }
  .navbar-left,.navbar-right {
      float: none !important;
  }
  .navbar-toggle {
      display: block;
  }
  .navbar-collapse {
      border-top: 1px solid transparent;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
  }
  .navbar-fixed-top {
      top: 0;
      border-width: 0 0 1px;
  }
  .navbar-collapse.collapse {
      display: none!important;
  }
  .navbar-nav {
      float: none!important;
      margin-top: 7.5px;
  }
  .navbar-nav>li {
      float: none;
  }
  .navbar-nav>li>a {
      padding-top: 10px;
      padding-bottom: 10px;
  }
  .collapse.in{
      display:block !important;
  }
}
Run Code Online (Sandbox Code Playgroud)

适用于991px的工作示例:http://www.bootply.com/j7XJuaE5v6 1200px的
工作示例:https://www.codeply.com/go/VsYaOLzfb4(带搜索表单)

注意:以上适用于768px以上的任何内容.如果您需要将其更改为小于768px,则此处示例小于768px.


  • 当我设置一个高于768px的值时,上面的代码工作,但是我需要实现相反的...我只想让它崩溃,例如在400px,但是当我设置这个值时,bootstrap似乎正在拾取原来​​的768 - 有任何想法吗?谢谢 (6认同)
  • 虽然这个答案就像魅力一样,但它正在弄乱***[下拉菜单](http://www.bootply.com/GzDUNioL5h)***,也许你需要改进答案. (6认同)
  • @AbhishekPandey我发现有用[这个答案](/sf/answers/2006190301/)(部分关于下拉列表) (2认同)
  • 这个解决方案对我来说几乎完美。正如其他人指出的那样,我必须为下拉菜单添加规则。按照上面 Bootstrap 4 示例的说法:`.navbar-expand-custom .navbar-nav .dropdown-menu {position:absolute; }` (2认同)

Sau*_*hLP 49

您必须为此编写特定的媒体查询,从您的问题,低于768px,导航栏将崩溃,因此将其应用于768px以上且低于1000px,就像这样:

@media (min-width: 768px) and (max-width: 1000px) {
   .collapse {
       display: none !important;
   }
}
Run Code Online (Sandbox Code Playgroud)

这将隐藏导航栏折叠,直到默认出现引导程序单元.当崩溃类翻转时,导航栏内部的内部资产将自动隐藏,就像你必须按照你想要的设计设置你的css一样.

  • 这在Bootstrap 3上不起作用,因为还有另一条规则`navbar-collapse.collapse`,它有`display:block!important`.禁用这将导致崩溃按钮不显示...所以我想这是很多需要重新定义的类,而不仅仅是'崩溃' (62认同)
  • 是的,必须在自定义媒体查询中覆盖一堆Bootstrap类:http://bootply.com/120604 (39认同)
  • 哈哈谁他妈的建立了引导程序?没想到我们需要改变那个小细节吗? (3认同)

fen*_*ngd 45

bootstrap3中,将此变量@ grid-float-breakpoint更改为您需要的变量.默认值为768px

  • 你能发一个例子吗? (17认同)
  • 请记住,如果您正在使用sass并且您不想替换供应商代码(您不应该),则必须在引导程序sass文件之前包含包含变量的文件和自定义值.原因是所有Bootstrap的变量都设置为默认值!值,所以我们需要先通过导入变量来覆盖这些值. (2认同)

小智 24

最后通过在http://getbootstrap.com/customize/上摆弄"@ grid-float-breakpoint"来解决如何更改折叠宽度的问题.

转到bootstrap.css(也是最小版本)中的第2923行并更改@media screen and (min-width: 768px) {@media screen and (min-width: 1000px) {

所以代码最终会成为:

@media screen and (min-width: 1000px) {
  .navbar-brand {
    float: left;
    margin-right: 5px;
    margin-left: -15px;
  }
  .navbar-nav {
    float: left;
    margin-top: 0;
    margin-bottom: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    border-radius: 0;
  }
  .navbar-nav.pull-right {
    float: right;
    width: auto;
  }
  .navbar-toggle {
    position: relative;
    top: auto;
    left: auto;
    display: none;
  }
  .nav-collapse.collapse {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该在另一个CSS文件中覆盖它,而不是直接更改引导程序css文件. (6认同)

小智 12

我刚刚使用以下CSS代码成功完成了这项工作.

@media(max-width:1000px)  {

    .navbar-collapse.collapse {
        display: none !important;
    }

    .navbar-collapse {
        overflow-x: visible !important;
    }

    .navbar-collapse.in {
      overflow-y: auto !important;
    }

    .collapse.in {
      display: block !important;
    }

}
Run Code Online (Sandbox Code Playgroud)

  • @craftsman:对于按钮,使用:.navbar-toggle {display:block!important; } .navbar-header {width:100%; 身高:60px; } (4认同)
  • 仍然没有显示汉堡菜单内的内容 (3认同)
  • 当宽度在768px到1000px之间时,它不显示折叠的菜单按钮. (2认同)

Gon*_*ing 12

在Bootstrap 3 .LESS 源代码中,有一个在variables.less被调用@grid-float-breakpoint中定义的变量,它有以下有用的注释:

//**Point at which the navbar becomes uncollapsed
@grid-float-breakpoint: @screen-sm-min;
Run Code Online (Sandbox Code Playgroud)

匹配@grid-float-breakpoint-max值设置为减1px:

//**Point at which the navbar begins collapsing
@grid-float-breakpoint-max: (@grid-float-breakpoint-max - 1);
Run Code Online (Sandbox Code Playgroud)

解:

所以只需将@grid-float-breakpoint值设置为1000px,然后重建bootstrap.lessbootstrap.css:

例如

@grid-float-breakpoint: 1000px;
Run Code Online (Sandbox Code Playgroud)


tro*_*ish 11

更改引导变量的Sass方法实际上记录在bootstrap-sass github页面上.

只需在@import bootstrap之前重新定义变量:

$grid-float-breakpoint: 1000px;

@import 'bootstrap';
Run Code Online (Sandbox Code Playgroud)


jea*_*dam 7

除了@Skely回答之外,要在导航栏内部设置下拉菜单,还要添加要覆盖的类.最终代码如下:

    @media (min-width: 768px) and (max-width: 991px) {
        .navbar-nav .open .dropdown-menu {
            position: static;
            float: none;
            width: auto;
            margin-top: 0;
            background-color: transparent;
            border: 0;
            -webkit-box-shadow: none;
            box-shadow: none;
        }
        .navbar-nav .open .dropdown-menu > li > a {
            line-height: 20px;
        }
        .navbar-nav .open .dropdown-menu > li > a,
        .navbar-nav .open .dropdown-menu .dropdown-header {
            padding: 5px 15px 5px 25px;
        }
        .dropdown-menu > li > a {
            display: block;
            padding: 3px 20px;
            clear: both;
            font-weight: normal;
            line-height: 1.42857143;
            color: #333;
            white-space: nowrap;
        }
        .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;*/
            margin: 7.5px 50px 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

演示代码


Aun*_*int 6

导航栏可以利用 .navbar-toggler、.navbar-collapse 和 .navbar-expand{-sm|-md|-lg|-xl} 类在其内容折叠在按钮后面时进行更改。结合其他实用程序,您可以轻松选择何时显示或隐藏特定元素。

对于永不折叠的导航栏,请在导航栏上添加 .navbar-expand 类。对于总是折叠的导航栏,不要添加任何 .navbar-expand 类。

例如 :

<nav class="navbar navbar-expand-lg"></nav>
Run Code Online (Sandbox Code Playgroud)

大屏幕显示移动菜单。

参考:https : //getbootstrap.com/docs/4.0/components/navbar/