Bootstrap导航栏折叠点 < 768px

6
这是一个关于Bootstrap 3的老问题——如何更改导航栏的折叠点,但是这里提出的方法有:

https://coderwall.com/p/wpjw4w/change-the-bootstrap-navbar-breakpoint

这里:

Bootstrap 3 Navbar Collapse

768px以下无法折叠,它似乎只能扩展折叠点,而不能收缩它。我有一个特殊的情况,我的导航栏有3个按钮,因此不需要那么早折叠。我希望它在420px时折叠。

有没有CSS解决方案?如果没有,有人可以指向我需要更改和下载的Bootstrap自定义页面中的正确属性吗?是通用断点吗?因为我找不到任何说Navbar断点的信息:

http://getbootstrap.com/customize/

如所请求,我的导航栏 HTML 代码只是:

<nav class="navbar navbar-default navbar-fixed-top">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>

        <div class="navbar-collapse collapse" id = "navbar">
            <ul class="nav navbar-nav navbar-left">
                <li class = "navbar_buttons"><a id = "new_route_button"><strong>New Route</strong></a></li>
                <li class="divider-vertical"></li>
                <li class = "navbar_buttons"><a id = "clear_route_button">Clear Route</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">    <!--Right justified navbar list-->
                <li class = "navbar_buttons"><a id = "about_button">About</a></li>
            </ul>
        </div>

    </div>  <!-- Container -->

</nav>  <!-- End of Navbar Container -->

然后我有一些CSS添加垂直分割线:

/*Preventing vertical dividers from appearing collapsed*/
@media (max-width: 420px) {
.navbar-collapse .nav > .divider-vertical {
    display: none;
  }
}

/*Defining the vertical dividers*/
.navbar .divider-vertical {
  height: 50px;
  margin: 0 9px;
  border-right: 1px solid #ffffff;
  border-left: 1px solid #DADADA;
}

.navbar-inverse .divider-vertical {
  border-right-color: #222222;
  border-left-color: #111111;
}

请分享你的代码。 - Carol Skelly
当然,我会立即进行编辑。 - Single Entity
2个回答

8

是的,将断点更改为小于768px更改大于768px的断点不同。您需要覆盖所有通常使其折叠的Bootstrap默认值。

@media only screen and (min-width: 420px) {
    .collapse {
        display: block;
    }

    .navbar-header {
        float: left;
    }

    .navbar-toggle {
        display: none;
    }

    .navbar-nav.navbar-left {
       float: left;
       margin: 0;
    }

    .navbar-nav.navbar-right {
       float: right;
       margin: 0;
    }
    .navbar-nav>li {
        float: left;
    }
    .navbar-nav>li>a {
        padding-top: 15px;
        padding-bottom: 15px;
    }
}

@media only screen and (max-width: 420px) {
     .collapse {
        display: none;
     }

     .navbar-header {
        display: block;
     }
}

http://www.bootply.com/wpUuFIZqJ2


几乎完美,但可能还有一些缺失,因为我的导航栏具有左右对齐的内容,而右对齐的内容在767像素后会向左移动。 - Single Entity
我已经编辑了你的答案,修正了navbar-right和navbar-left的分离。 - Single Entity
1
感谢您的帮助 :) - Single Entity
1
@ZimSystem,你上面的CSS对我没用,但是你在http://www.bootply.com/qL4jyCx5sE发布的CSS有效。 - kmoser
@ZimSystem 在第21行,min-width和第2行以及第50行的max-width应该有1像素的差异,否则在恰好420像素时,菜单将完全不可见,既没有正常菜单也没有移动菜单。 如下所示: @media only screen and (min-width: 421px) { - 360path

0
以下代码片段基于原始答案,但也适用于导航栏中存在下拉菜单的情况。

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style>
  @media only screen and (min-width: 560px) {
    .collapse {
      display: block;
    }
    .navbar-header {
      float: left;
    }
    .navbar-toggle {
      display: none;
    }
    .navbar>.container .navbar-brand,
    .navbar>.container-fluid .navbar-brand {
      margin-left: -15px;
    }
    .container>.navbar-header,
    .container-fluid>.navbar-header,
    .container>.navbar-collapse,
    .container-fluid>.navbar-collapse {
      margin-right: 0;
      margin-left: 0;
    }
    .navbar-nav {
      float: left;
      margin: 0;
    }
    .navbar-nav.navbar-right {
      float: right;
      margin: 0;
    }
    .navbar-nav>li {
      float: left;
    }
    .navbar-nav>li>a {
      padding-top: 15px;
      padding-bottom: 15px;
    }
    .navbar-nav .open .dropdown-menu {
      position: absolute;
      float: left;
      width: auto;
      margin-top: 2px;
      background-color: #fff;
      border: 1px solid #ccc;
      border: 1px solid rgba(0, 0, 0, 0.15);
      -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
      box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
    }
    .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
      background-color: #e5e5e5;
    }
    .navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
      color: #333;
    }
    .navbar-nav .open .dropdown-menu>li>a {
      line-height: 1.42857143;
    }
    .navbar-nav .open .dropdown-menu>li>a,
    .navbar-nav .open .dropdown-menu .dropdown-header {
      padding: 3px 20px;
    }
    .navbar-right .dropdown-menu {
      right: 0;
      left: auto;
    }
  }
  
  @media only screen and (max-width: 559px) {
    .collapse {
      display: none;
    }
    .navbar-header {
      display: block;
    }
  }
</style>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Brand</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">One more separated link</a></li>
          </ul>
        </li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
          </ul>
        </li>
      </ul>
    </div>
    <!-- /.navbar-collapse -->
  </div>
  <!-- /.container-fluid -->
</nav>


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