7.5.12 响应式导航条
前面介绍的导航条都是在viewport
宽度大于768px
时的显示效果,但目前我们正处于移动互联网飞速发展的时代,大量移动设备的显示屏可能达不到768px
,此时导航条的显示效果会比较差。Bootstrap
的响应式导航条专门用于解决该问题。
Bootstap响应式导航条特征
响应式导航条具有如下特征:
- 当浏览器
viewport
宽度大于768px时,导航条将自动水平显示,所有导航组件都以水平方式排列。
- 当浏览器
viewport
宽度小于768px时,导航条将会自动把所有导航组件都隐藏起来,然后在导航条右边显示一个按钮,该按钮用于打开导航条组件。
响应式导航条样式
Bootstrap
为实现这种响应式导航条提供了如下几个样式。
样式 |
描述 |
.navbar-toggle |
该样式应用于打开导航条的按钮。设置了该样式之后,该按钮将具有默认的颜色和反色设置。 |
.collapse |
该样式应用于要折叠隐藏的容器,设置了该样式之后,该元素默认被折叠隐藏。 |
.navbar-collapse |
该样式应用于要折叠隐藏的容器。设置了该样式之后,该元素以导航条的方式被折叠。 |
显示被折叠的导航条是通过Bootstrap 的collapse 插件来实现的,因此必须在页面代码中包含该插件,默认情况下,collapse 插件已经包含在bootstrap.min.js 文件中。 |
|
开发响应式导航条步骤
开发响应式导航条大致需要如下两步:
- 将所有可能需要折叠的内容使用一个
<div>
容器进行包裹,并为该元素添加.collapse
、.navbar-collapse
两个样式。为了能访问该容器元素,建议为该元素指定id
。
- 在导航条的
.nav-header
元素中添加一个按钮,并为该按钮添加.navbar-toggle
样式。
- 为了让该按钮能触发导航条中各组件的显示,要为该按钮指定
data-toggle="collapse"
属性;
- 为了让
Bootstrap
明白该按钮要显示哪个元素,还需要指定data-target
属性,data-target
属性的属性值用于指定第一步中定义的容器元素。
程序示例
下面代码实现了本节前面介绍的响应式导航条。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| <!DOCTYPE html> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> 导航条中的文本和链接 </title> <link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="../bootstrap/css/bootstrap-theme.min.css"> </head>
<body> <nav class="navbar navbar-default"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#fk-navbar-collapse" aria-expanded="false"> <span class="sr-only">展开导航</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" style="padding-top:0" href="#"> <img alt="疯狂软件" src="../fklogo.gif" style="width:52px;height:52px"> </a> </div> <div class="collapse navbar-collapse" id="fk-navbar-collapse"> <form class="navbar-form navbar-left" role="search"> <div class="form-group"> <label for="keyword" class="sr-only">关键字</label> <input type="text" id="keyword" class="form-control" placeholder="输入关键字"> </div> <button type="submit" class="btn btn-default">搜索</button> </form> <p class="navbar-text navbar-right" style="padding-right:10px"> 以游客身份<a href="#" class="navbar-link">访问</a></p> <ul class="nav navbar-nav"> <li role="presentation"><a href="#">主页</a></li> <li role="presentation" class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="true"> 课程体系 <span class="caret"></span> </a> <ul class="dropdown-menu"> <li><a href="#">Java基础强化营</a></li> <li><a href="#">全栈式程序员就业营</a></li> <li><a href="#">全栈式程序员突击营</a></li> </ul> </li> <li role="presentation" class="active"><a href="#">师资介绍</a></li> <li role="presentation"><a href="#">教育理念</a></li> <li role="presentation" class="disabled"><a href="#">退出系统</a></li> </ul> </div> </div> </nav> <script type="text/javascript" src="../jquery-3.1.1.js"></script> <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script> </body>
</html>
|
该代码中的1号代码
定义了用于打开导航组件的按钮,并为该按钮指定了class="navbar-toggle"
、data-toggle="collapse"
和data-target="#fk-navbar-collapse"
,这说明该按钮用于打开被折叠的导航组件id
为fk-navbar-collapse
的元素。
2号代码
定义了<div>
容器,所有可能要被折叠的内容都放在该元素中,并为该元素指定了class="collapse navbar-collapse"
,指定id
属性以便在按钮中引用。