响应式导航

1,利用bootstrap来实现响应式的导航条

bootstrap中的导航组件都依赖同一个.nav类,状态类也是共用的。

要实现一个导航条在移动设备上可以折叠(并且可开可关),且在视口(viewport)宽度增加时逐渐变为水平展开模式。

导航条内所包含元素溢出

由于 Bootstrap 并不知道你在导航条内放置的元素需要占据多宽的空间,你可能会遇到导航条中的内容折行的情况(也就是导航条占据两行)。解决办法如下:

  1. 减少导航条内所有元素所占据的宽度。
  2. 在某些尺寸的屏幕上(利用 响应式工具类)隐藏导航条内的一些元素。
  3. 修改导航条在水平排列和折叠排列互相转化时,触发这个转化的最小屏幕宽度值。可以通过修改 @grid-float-breakpoint 变量实现,或者自己重写相关的媒体查询代码,覆盖 Bootstrap 的默认值。

2,bootstrap的实现依赖javascript插件

如果 JavaScript 被禁用,并且视口(viewport)足够窄,致使导航条折叠起来,导航条将不能被打开,.navbar-collapse 内所包含的内容也将不可见。

响应式导航条依赖 collapse 插件,定制 Bootstrap 的话时候必将其包含。

一,bootstrap设置的是当屏幕宽度小于768px时,导航条变为折叠排列。 

当屏幕小于768px时,此时的css样式为:

.navbar-default .navbar-collapse {
    border-color: #e7e7e7;
}

.container>.navbar-collapse {
    margin-right: -15px;
    margin-left: -15px;
}

.navbar-fixed-top .navbar-collapse {
    max-height: 340px;
}
.navbar-collapse {
    padding-right: 15px;
    padding-left: 15px;
    overflow-x: visible;
    -webkit-overflow-scrolling: touch;
    border-top: 1px solid transparent;
    -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
}

.collapse {
    display: none;
}

折叠按钮的样式:

.navbar-default .navbar-toggle {
    border-color: #ddd;
}
.navbar-toggle {
    position: relative;
    float: right;
    padding: 9px 10px;
    margin-top: 8px;
    margin-right: 15px;
    margin-bottom: 8px;
    background-color: transparent;
    background-image: none;
    border: 1px solid transparent;
    border-radius: 4px;
}

 

当屏幕大小大于768px时,导航条平铺。此时css清单为:

.navbar-default .navbar-collapse {
    border-color: #e7e7e7;
}

@media (min-width: 768px)
.container>.navbar-collapse {
    margin-right: 0;
    margin-left: 0;
}

@media (min-width: 768px)
 .navbar-fixed-top .navbar-collapse {
    padding-right: 0;
    padding-left: 0;
}

@media (min-width: 768px)
.navbar-collapse.collapse {
    display: block!important;
    height: auto!important;
    padding-bottom: 0;
    overflow: visible!important;
}

@media (min-width: 768px)
.navbar-collapse {
    width: auto;
    border-top: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
}

.navbar-fixed-top .navbar-collapse {
    max-height: 340px;
}

折叠按钮的样式:

.navbar-default .navbar-toggle {
    border-color: #ddd;
}
@media (min-width: 768px)
.navbar-toggle {
    display: none;
}

.navbar-toggle {
    position: relative;
    float: right;
    padding: 9px 10px;
    margin-top: 8px;
    margin-right: 15px;
    margin-bottom: 8px;
    background-color: transparent;
    background-image: none;
    border: 1px solid transparent;
    border-radius: 4px;
}

完整的一个导航栏源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>响应式导航条</title>
    <link href="assets/css/bootstrap.min.css" rel="stylesheet"/>
    <link href="assets/css/bootstrap-theme.css" rel="stylesheet"/>

    <style>
        .main{
            background-color: #2aabd2;
            height: 1200px;
        }
    </style>
</head>
<body>
<header>
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <!--左侧logo区域-->
            <div class="navbar-header">   <!--通过给折叠按钮加上data-target属性来实现与导航条相关-->
                <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>
            <!--右侧导航区域--><!---主要是为导航加上.collapse 和.nav-collapse类,实现导航条的折叠效果-->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <li class="active"><a href="#">首页</a></li>
                    <li class=""><a href="#">产品中心</a></li>
                    <li class=""><a href="#">新闻中心</a></li>
                    <li class=""><a href="#">数据下载</a></li>
                    <li class=""><a href="#">监控平台</a></li>
                    <li class=""><a href="#">联系我们</a></li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<section class="main"></section>
</body>
<script src="assets/js/jquery/1.9.1/jquery.min.js"></script>
<script src="assets/js/vendor/bootstrap.min.js"></script>
</html>

 

posted @ 2018-07-05 14:42  千寻的天空之城  阅读(756)  评论(0编辑  收藏  举报