其实,我觉得bootstrap的精髓在于对各种组件的合理调用,一些网页基本的组件,例如顶部导航栏,左侧导航栏,底部,弹窗等等。接下来研究一下各种实用的组件。首先,讲一下bootstrap中的怪异的属性。
- data- 这个前缀的话,是HTML5的新特性,用于自定义新的数据并存储。方便js对数据进行读取。
首先,我们来看一下bootstrap的组件之图标按钮。先看效果图:
左上角的按钮就是我们的图标按钮,接下来是代码:
<button class="btn btn-default">
<span class="glyphicon glyphicon-star"></span>
这是一个按钮
</button>
首先,申明glyphicon,然后将star的样式加入。
下拉菜单样式,bootstrap对其进行了封装,样式和动画都有:
代码如下:
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
下拉菜单
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
</ul>
</div>
可以看出,我们首先使用一个class为dropdown的div来约束当前的下拉菜单,内部的结构由两个结构组成,按钮和无序列表。
首先是按钮部分。其中,出现了一个我们曾经没有遇到的class属性:dropdown-toggle。其实,在当前的状态下,这个class属性并不会有太多的影响,但是当我们需要调用js来实现下拉动作时,这个可以与js交互(建议写上)。然后出现了一个同样没有遇到过的data-toggle属性。前面我们说过,data-前缀的是自定义的属性,用于存储数据,而data-toggle是bootstrap自定义的属性,用于绑定切换动画,标准的写法是:
<div class="dropdown"> <!-- 父元素 -->
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"> <!-- 子元素 -->
具体的含义目前有些混乱,后期明白了之后,会进行具体修改。
button后的span用于调用出caret样式,暨向下的箭头。
接下来的ul用于画出下拉菜单中的内容框。ul的dropdown-menu样式,用于约束下拉菜单的样式。
接下来是基本的控件样式:
可以看到,左边和右边各有一个灰色的框框,里面还包含有字符:
<div class="input-group">
<span class="input-group-addon">$</span>
<input type="text" name="" class="form-control">
<span class="input-group-addon">%</span>
</div>
很容易想到,这里面,我们使用的是span标签,其中,我们对其约束的样式是input-group-addon样式,然后写入字符就可以了。当然,我们也可以只使用一个。
导航栏样式。接下来,是我们的导航栏。导航栏一般分为这么几种,顶部,边栏,底部。在每一种导航栏中,bootstrap也给出了具体的样式,例如pills,tabs等。
上图列举了三种导航栏:tabs类型导航栏,pills导航栏,和stacked垂直导航栏:
<!-- 导航 -->
<!-- 基本可切换导航 -->
<div class="dropdown">
<ul class="nav nav-tabs">
<li class="active" data-toggle="dropdown">
<a href="http://www.imooc.com">慕课网</a>
</li>
<ul class="dropdown dropdown-menu">
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
<li>
<a href="http://imooc.com">慕课网</a>
</li>
</ul>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
</ul>
</div>
<br>
<!-- 胶囊导航 -->
<ul class="nav nav-pills">
<li class="active">
<a href="http://www.imooc.com">慕课网</a>
</li>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
</ul>
<br>
<!-- 垂直导航 -->
<ul class="nav nav-pills nav-stacked col-md-2">
<li class="active">
<a href="http://www.imooc.com">慕课网</a>
</li>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
<li>
<a href="http://www.imooc.com">慕课网</a>
</li>
</ul>
第一个导航栏我们结合了下拉菜单和tabs导航栏样式(下拉菜单不会的往上翻看),其中需要注意的是,nav样式是导航栏的特有样式,nav-tabs,nav-pills是横向导航栏的样式,nav-stacked是垂直样式。
分页样式。bootstrap为用户提供了分页样式,有左右跳转,也有12345的分页样式。废话不多说,上图:
我们直接代码分析:
<nav>
<ul class="pager">
<li class="previous">
<a href="http://www.baidu.com">
向左
</a>
</li>
<li class="next">
<a href="http://www.baidu.com">
向右
</a>
</li>
</ul>
<ul class="pagination">
<li class="active">
<a href="http://www.imooc.com">
1
</a>
</li>
<li>
<a href="http://www.imooc.com">
2
</a>
</li>
<li>
<a href="http://www.imooc.com">
3
</a>
</li>
<li>
<a href="http://www.imooc.com">
4
</a>
</li>
<li>
<a href="http://www.imooc.com">
5
</a>
</li>
</ul>
</nav>
首先,我们用一个nav标签开头,这里有个说法,关于nav的。其实nav只适用于强调语义,并无实际的效果或是区别。要说帮助的话,就是有助于seo的优化。这里可以使用div来实现(可以不用nav,无关紧要)。
首先,第一个ul。我们可以看到其class是pager,是bootstrap为用户提供的一个分页样式,pager有两个具体的内容样式,一个previous,一个next,字面意思,前进后退。
第二个pagination,样式是12345的分页样式。
进度条样式。进度条是每一个网页都不可缺少的样式,也不没有form这么硬核,但是好像每个网站都会用到这个组件。bootstrap的整体风格很素,我比较喜欢,所以这个进度条很素很干净。接下来上图:
来来来,看代码:
<div class="progress">
<div class="progress-bar progress-bar-striped" style="width: 60%;">
60%
</div>
</div>
其实进度条只是一个包含样式的div(块),进度就是颜色填充的百分比。接下来分析一下具体的样式属性。
- progress样式 progress是声明当前外层div包裹的是进度条div,效果是一根长度布满全屏的灰色长条
- progress-bar 样式 第二层的div是对进度的修饰,progress-bar就是基本的进度条样式
- progress-bar-striped样式 第二层div的第二个样式,是使整个进度条的颜色渐变变化。
具体的颜色可以在第二层div的class中添加progress-bar-danger 等(相信大家对这些样式很熟了,触类旁通懂伐旁友)。
列表样式。列表可以说,是一个最最常用的组件了。幸运的是bootstrap给了我们快捷方式:
我们可以看到,有三行,每一行结束都有状态数字显示。直接上代码:
<ul class="list-group col-md-4">
<li class="list-group-item active">
这是一个列表
<span class="badge">
14
</span>
</li>
<li class="list-group-item disabled">
这是一个列表
<span class="badge">
14
</span>
</li>
<li class="list-group-item list-group-item-info">
这是一个列表
<span class="badge">
14
</span>
</li>
</ul>
首先,我们用一个ul来包裹全部内容,class是list-group(和form-group类似),字面意思很好理解,里面的li标签的class更好理解了,群组内的额条目,所以是list-group-item。关于状态数字显示,我们调用一个span(大家应该有所了解了什么是span),class为badge,字面意思,标记,徽章。
面板样式。面板是美化一个界面的重要组件,先看效果:
我知道很丑,但是作为一个菜鸟而言,这个面板已经很好看了,三个部分,head,body,footer。代码:
<div class="panel panel-primary">
<div class="panel-heading text-center">
弹出层!
</div>
<div class="panel-body text-center">
这是面板的具体内容
</div>
<div class="panel-footer text-center">
这是面板的注脚
</div>
</div>
首先老样子,先声明panel的div,然后规定panel的样式为primary。先是头部,panel-heading,text-center文字居中;接下来是panel-body;最后是panel-footer。