1、导航条
导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个“条”字。其实在Bootstrap框架中他们还是明显的区别。在导航条(navbar)中有一个背景色(显示更突出)、而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式。在这一节中将一起探讨Bootstrap框架中导航条的使用。
导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本:
LESS版本:对应的源文件navbar.less
Sass版本:对应的源文件_navbar.scss
编译后的版本:查看bootstrap.css文件第3642行~第4111行(注意这个所说的Bootstrap版本是3.1.1,其它版本位置是不一致的)。
2、基础导航条
在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多。我们先来看导航条中最基础的一个——基础导航条。
1)、使用方法:
在制作一个基础导航条时,主要分以下几步:
- 第一步:首先在制作导航的列表(<ul class=”nav”>)基础上添加类名“navbar-nav”
- 第二步:在列表外部添加一个容器(div),并且使用类名“navbar”和“navbar-default”
1
2
3
4
5
6
7
8
9
|
<
div
class
=
"navbar navbar-default"
role
=
"navigation"
>
<
ul
class
=
"nav navbar-nav"
>
<
li
class
=
"active"
><
a
href
=
"##"
>网站首页</
a
></
li
>
<
li
><
a
href
=
"##"
>系列教程</
a
></
li
>
<
li
><
a
href
=
"##"
>名师介绍</
a
></
li
>
<
li
><
a
href
=
"##"
>成功案例</
a
></
li
>
<
li
><
a
href
=
"##"
>关于我们</
a
></
li
>
</
ul
>
</
div
>
|
".navbar”样式的主要功能就是设置左右padding和圆角等效果,但他和颜色相关的样式没有进行任何的设置。其主要源码如下:
/源码查看bootstrap.css文件第3642行~第3647行/
1
2
3
4
5
6
|
.navbar {
position
:
relative
;
min-height
:
50px
;
margin-bottom
:
20px
;
border
:
1px
solid
transparent
;
}
|
2)、原理分析:
而导航条的颜色都是通过“.navbar-default”来进行控制:
/源码查看bootstrap.css文件第3940行~第3943行/
1
2
3
4
|
.navbar-
default
{
background-color
:
#f8f8f8
;
border-color
:
#e7e7e7
;
}
|
navbar-nav样式是在导航.nav的基础上重新调整了菜单项的浮动与内外边距。同时也不包括颜色等样式设置,源码请查看bootstrap.css文件第3785行~第3830行,我们把代码节选出来放入右侧bootstrap.css中。
而颜色和其他样式是通过配合父容器“navbar-default”来一起实现:
/源码请查看bootstrap.css文件第3955行~第3974行/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
.navbar-
default
.navbar-nav> li > a {
color
:
#777
;
}
.navbar-
default
.navbar-nav> li >a:hover,
.navbar-
default
.navbar-nav> li >a:focus {
color
:
#333
;
background-color
:
transparent
;
}
.navbar-
default
.navbar-nav> .active > a,
.navbar-
default
.navbar-nav> .active >a:hover,
.navbar-
default
.navbar-nav> .active >a:focus {
color
:
#555
;
background-color
:
#e7e7e7
;
}
.navbar-
default
.navbar-nav> .disabled > a,
.navbar-
default
.navbar-nav> .disabled >a:hover,
.navbar-
default
.navbar-nav> .disabled >a:focus {
color
:
#ccc
;
background-color
:
transparent
;
}
|
3、为导航条添加标题、二级菜单及状态
1)、加入导航条标题
在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过“navbar-header”和“navbar-brand”来实现。
1
2
3
4
5
6
7
8
9
10
11
12
|
<
div
class
=
"navbar navbar-default"
role
=
"navigation"
>
<
div
class
=
"navbar-header"
>
<
a
href
=
"##"
class
=
"navbar-brand"
>慕课网</
a
>
</
div
>
<
ul
class
=
"nav navbar-nav"
>
<
li
class
=
"active"
><
a
href
=
"##"
>网站首页</
a
></
li
>
<
li
><
a
href
=
"##"
>系列教程</
a
></
li
>
<
li
><
a
href
=
"##"
>名师介绍</
a
></
li
>
<
li
><
a
href
=
"##"
>成功案例</
a
></
li
>
<
li
><
a
href
=
"##"
>关于我们</
a
></
li
>
</
ul
>
</
div
>
|
2)、原理分析:
此功能主要起一个提醒功能,当然改良一下可以当作是logo(此处不做过多阐述)。其样式主要是加大了字体设置,并且设置了最大宽度:
/源码查看bootstrap.css文件第3739行~第3755行/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
.navbar-brand {
float
:
left
;
height
:
50px
;
padding
:
15px
15px
;
font-size
:
18px
;
line-height
:
20px
;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration
:
none
;
}
@media (
min-width
:
768px
) {
.navbar> .container .navbar-brand,
.navbar> .container-fluid .navbar-brand {
margin-left
:
-15px
;
}
}
|
同样在默认导航条(navbar-default)下,对navbar-brand也做了颜色处理:
/源码请查看bootstrap.css文件第3947行~3951行/
1
2
3
4
5
6
7
8
|
.navbar-
default
.navbar-brand {
color
:
#777
;
}
.navbar-
default
.navbar-brand:hover,
.navbar-
default
.navbar-brand:focus {
color
:
#5e5e5e
;
background-color
:
transparent
;
}
|
3)、导航条状态、二级菜单
同样的,在基础导航条中对菜单提供了当前状态,禁用状态,悬浮状态等效果,而且也可以带有二级菜单的导航条。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<
div
class
=
"navbar navbar-default"
role
=
"navigation"
>
<
div
class
=
"navbar-header"
>
<
a
href
=
"##"
class
=
"navbar-brand"
>慕课网</
a
>
</
div
>
<
ul
class
=
"nav navbar-nav"
>
<
li
class
=
"active"
><
a
href
=
"##"
>网站首页</
a
></
li
>
<
li
class
=
"dropdown"
>
<
a
href
=
"##"
data-toggle
=
"dropdown"
class
=
"dropdown-toggle"
>系列教程<
span
class
=
"caret"
></
span
></
a
>
<
ul
class
=
"dropdown-menu"
>
<
li
><
a
href
=
"##"
>CSS3</
a
></
li
>
<
li
><
a
href
=
"##"
>JavaScript</
a
></
li
>
<
li
class
=
"disabled"
><
a
href
=
"##"
>PHP</
a
></
li
>
</
ul
>
</
li
>
<
li
><
a
href
=
"##"
>名师介绍</
a
></
li
>
<
li
><
a
href
=
"##"
>成功案例</
a
></
li
>
<
li
><
a
href
=
"##"
>关于我们</
a
></
li
>
</
ul
>
</
div
>
|
效果图如下:
4、带表单的导航条
有的导航条中会带有搜索表单,比如新浪微博的导航条:
在Bootstrap框架中提供了一个“navbar-form”,使用方法很简单,在navbar容器中放置一个带有navbar-form类名的表单。
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
|
<
div
class
=
"navbar navbar-default"
role
=
"navigation"
>
<
div
class
=
"navbar-header"
>
<
a
href
=
"##"
class
=
"navbar-brand"
>慕课网</
a
>
</
div
>
<
ul
class
=
"nav navbar-nav"
>
<
li
class
=
"active"
><
a
href
=
"##"
>网站首页</
a
></
li
>
<
li
class
=
"dropdown"
>
<
a
href
=
"##"
data-toggle
=
"dropdown"
class
=
"dropdown-toggle"
>系列教程<
span
class
=
"caret"
></
span
></
a
>
<
ul
class
=
"dropdown-menu"
>
<
li
><
a
href
=
"##"
>CSS3</
a
></
li
>
<
li
><
a
href
=
"##"
>JavaScript</
a
></
li
>
<
li
class
=
"disabled"
><
a
href
=
"##"
>PHP</
a
></
li
>
</
ul
>
</
li
>
<
li
><
a
href
=
"##"
>名师介绍</
a
></
li
>
<
li
><
a
href
=
"##"
>成功案例</
a
></
li
>
<
li
><
a
href
=
"##"
>关于我们</
a
></
li
>
</
ul
>
<
form
action
=
"##"
class
=
"navbar-form navbar-left"
rol
=
"search"
>
<
div
class
=
"form-group"
>
<
input
type
=
"text"
class
=
"form-control"
placeholder
=
"请输入关键词"
/>
</
div
>
<
button
type
=
"submit"
class
=
"btn btn-default"
>搜索</
button
>
</
form
>
</
div
>
|
实现导航条+表单的样式代码源码请查看bootstrap.css文件第3839行~第3904行.
在上面的示例中,大家看到了“navbar-left”让表单左浮动,更好实现对齐。在Bootstrap框架中,还提供了“navbar-right”样式,让元素在导航条靠右对齐。
/源码请查看bootstrap.css文件第3831行~第3838行/
1
2
3
4
5
6
7
8
|
@media (
min-width
:
768px
) {
.navbar-
left
{
float
:
left
!important
;
}
.navbar-
right
{
float
:
right
!important
;
}
}
|
注意:这里有一个条件,只有当浏览器视窗宽度大于768px生效。
5、导航条中的按钮、文本和链接
Bootstrap框架的导航条中除了使用navbar-brand中的a元素和navbar-nav的ul和navbar-form之外,还可以使用其他元素。框架提供了三种其他样式:
- 1、导航条中的按钮navbar-btn
- 2、导航条中的文本navbar-text
- 3、导航条中的普通链接navbar-link
但这三种样式在框架中使用时受到一定的限制,需要和navbar-brand、navbar-nav配合起来使用。而且对数量也有一定的限制,一般情况在使用一到两个不会有问题,超过两个就会有问题。
先来看看这三种样式对应的源码:
/源码请查看bootstrap.css文件第3914行~第3939行/
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
|
.navbar-btn {
margin-top
:
8px
;
margin-bottom
:
8px
;
}
.navbar-btn.btn-sm {
margin-top
:
10px
;
margin-bottom
:
10px
;
}
.navbar-btn.btn-xs {
margin-top
:
14px
;
margin-bottom
:
14px
;
}
.navbar-text {
margin-top
:
15px
;
margin-bottom
:
15px
;
}
@media (
min-width
:
768px
) {
.navbar-text {
float
:
left
;
margin-right
:
15px
;
margin-left
:
15px
;
}
.navbar-text.navbar-
right
:last-child {
margin-right
:
0
;
}
}
/bootstrap.css文件第
3952
行~第
3954
行/
.navbar-
default
.navbar-text {
color
:
#777
;
}
/bootstrap.css文件第
4035
行~第
4037
行/
.navbar-inverse .navbar-text {
color
:
#999
;
}
/boostrap.css文件第
4017
行~第
4022
行/
.navbar-
default
.navbar-link {
color
:
#777
;
}
.navbar-
default
.navbar-link:hover {
color
:
#333
;
}
/bootstrap.css文件第
4106
行~第
4111
行/
.navbar-inverse .navbar-link {
color
:
#999
;
}
.navbar-inverse .navbar-link:hover {
color
:
#fff
;
}
|
navbar-btn和navbar-link在上一小节已经讲过,现在我们来看一下navbar-text的一个简单应用
1
2
3
4
5
6
7
8
9
10
|
<
div
class
=
"navbar navbar-default"
role
=
"navigation"
>
<
div
class
=
"navbar-header"
>
<
a
href
=
"##"
class
=
"navbar-brand"
>慕课网</
a
>
</
div
>
<
ul
class
=
"nav navbar-nav"
>
<
li
><
a
href
=
"##"
class
=
"navbar-text"
>Navbar Text</
a
></
li
>
<
li
><
a
href
=
"##"
class
=
"navbar-text"
>Navbar Text</
a
></
li
>
<
li
><
a
href
=
"##"
class
=
"navbar-text"
>Navbar Text</
a
></
li
>
</
ul
>
</
div
>
|
在结果窗口中查看效果,可以看出明显的存在问题.