BootStrap

Bootstrap 介绍

Bootstrap 概述

​ Bootstrap 是由Twitter 公司(全球最大的微博)的两名技术工程师研发的一个基于HTML、CSS、JavaScript 的开源框架。该框架代码简洁、视觉优美,可用于快速、简单地构建基于PC 及移动端设备的Web 页面需求。
​ 2010 年6 月,Twitter 内部的工程师为了解决前端开发任务中的协作统一问题。经历各种方案后,Bootstrap 最终被确定下来,并于2011 年8 月发布。经过很长时间的迭代升级,由最初的CSS 驱动项目发展成为内置很多JavaScript 插件和图标的多功能Web 前端的开源框架。
​ Bootstrap 最为重要的部分就是它的响应式布局,通过这种布局可以兼容PC 端、PAD以及手机移动端的页面访问。
​ 国内文档翻译官网:http://www.bootcss.com

Bootstrap 特点

Bootstrap 非常流行,得益于它非常实用的功能和特点。主要核心功能特点如下:
(1).跨设备、跨浏览器
可以兼容所有现代浏览器,包括比较诟病的IE7、8。当然,本课程不再考虑IE9 以下浏览器。
(2).响应式布局
不但可以支持PC 端的各种分辨率的显示,还支持移动端PAD、手机等屏幕的响应式切换显示。
(3).提供的全面的组件
Bootstrap 提供了实用性很强的组件,包括:导航、标签、工具条、按钮等一系列组件,方便开发者调用。

(4).内置jQuery 插件
Bootstrap 提供了很多实用性的jquery 插件,这些插件方便开发者实现Web 中各种常规特效。
(5).支持HTML5、CSS3
HTML5 语义化标签和CSS3 属性,都得到很好的支持。
(6).支持LESS 动态样式

Bootstrap 结构

首先,想要了解Boostrap 的文档结构,需要在官网先把它下载到本地。Bootstrap下载地址如下:

Bootstrap 下载地址:http://v3.bootcss.com/

解压后,目录呈现这样的结构:

bootstrap/ 
├── css/ │ 
├── bootstrap.css │ 
├── bootstrap.css.map │ 
├── bootstrap.min.css │ 
├── bootstrap-theme.css │ 
├── bootstrap-theme.css.map 
│ └── bootstrap-theme.min.css 
├── js/ │ ├── bootstrap.js 
│ └── bootstrap.min.js 
└── fonts/ 
├── glyphicons-halflings-regular.eot 
├── glyphicons-halflings-regular.svg 
├── glyphicons-halflings-regular.ttf 
├── glyphicons-halflings-regular.woff 
└── glyphicons-halflings-regular.woff2

主要分为三大核心目录:css(样式)、js(脚本)、fonts(字体)。
1.css 目录中有四个css 后缀的文件,其中包含min 字样的,是压缩版本,一般使用这个;不包含的属于没有压缩的,可以学习了解css 代码的文件;而map 后缀的文件则是css 源码映射表,在一些特定的浏览器工具中使用。
2.js 目录包含两个文件,是未压缩和压缩的js 文件。

创建第一个页面

我们创建一个HTML5 的页面,并且将Bootstrap 的核心文件引入,然后测试是否正常显示。

第一个Bootstrap

<!DOCTYPE html>
 <html lang="zh-cn"> 
 <head> 
 <meta charset="UTF-8"> 
 <title>Bootstrap 介绍</title> 
 <link rel="stylesheet" href="css/bootstrap.min.css"> 
 </head> 
 <body>
  <button class="btn btn-info">Bootstrap</button>
   <script src="js/jquery.min.js"></script> 
   <script src="js/bootstrap.min.js"></script> 
   </body> 
   </html>

排版样式

页面排版

Bootstrap 提供了一些常规设计好的页面排版的样式供开发者使用。

页面主体

Bootstrap 将全局font-size 设置为14px,line-height 行高设置为1.428(即
20px);

段落元素被设置等于1/2 行高(即10px);颜色被设置为#333。
//创建包含段落突出的文本

<p>Bootstrap 框架</p>
<p class="lead">Bootstrap 框架</p>
<p>Bootstrap 框架</p>
<p>Bootstrap 框架</p>
<p>Bootstrap 框架</p>

标题

//从h1 到h6

<h1>Bootstrap 框架</h1> //36px 
<h2>Bootstrap 框架</h2> //30px 
<h3>Bootstrap 框架</h3> //24px 
<h4>Bootstrap 框架</h4> //18px 
<h5>Bootstrap 框架</h5> //14px 
<h6>Bootstrap 框架</h6> //12px

我们从检查元素查看元素了解到,Bootstrap 分别对h1 ~ h6 进行了CSS 样式的重构,并且还支持普通内联元素定义class=(.h1 ~ h6)来实现相同的功能。

//内联元素使用标题字体

<span class="h1">Bootstrap</span>

注:通过Firebug 查看元素还看到,字体颜色、字体样式、行高均被固定了,从而保证了统一性,而原生的会根据系统内置的首选字体决定,颜色是最黑色。
在h1 ~ h6 元素之间,还可以嵌入一个small 元素作为副标题,
//在标题元素内插入small 元素

<h1>Bootstrap 框架<small>Bootstrap 小标题</small></h1> 
<h2>Bootstrap 框架<small>Bootstrap 小标题</small></h2> 
<h3>Bootstrap 框架<small>Bootstrap 小标题</small></h3> 
<h4>Bootstrap 框架<small>Bootstrap 小标题</small></h4> 
<h5>Bootstrap 框架<small>Bootstrap 小标题</small></h5> 
<h6>Bootstrap 框架<small>Bootstrap 小标题</small></h6>

我们发现h1 ~ h3 下small 元素的大小只占父元素的65%,那么通过计算(查看Firebug 计算后的样式),h1 ~ h3 下的small 为23.4px、19.5px、15.6px;
h4 ~ h6 下small 元素的大小只占父元素的75% ,分别为:13.5px、10.5px、9px。
在h1 ~ h6 下的small 样式也进行了改变,颜色变成淡灰色:#777,行高为1,粗度为400。

内联文本元素

//添加标记,<mark>元素或.mark 类 <p>Bootstrap<mark>框架</mark></p> 
//各种加线条的文本 <del>Bootstrap 框架</del> //删除的文本 
<s>Bootstrap 框架</s> //无用的文本 
<ins>Bootstrap 框架</ins> //插入的文本 
<u>Bootstrap 框架</u> //效果同上,下划线文本 
//各种强调的文本 
<small>Bootstrap 框架</small> //标准字号的85% 
<strong>Bootstrap 框架</strong> //加粗700 
<em>Bootstrap 框架</em> //倾斜

对齐

//设置文本对齐 
<p class="text-left">Bootstrap 框架</p> 
//居左 
<p class="text-center">Bootstrap 框架</p>//居中 
<p class="text-right">Bootstrap 框架</p> //居右
 <p class="text-justify">Bootstrap 框架</p> //两端对齐,支持度不佳 
 <p class="text-nowrap">Bootstrap 框架</p> //不换行 

大小写

//设置英文文本大小写
<p class="text-lowercase">Bootstrap 框架</p> //小写 
<p class="text-uppercase">Bootstrap 框架</p> //大写 
<p class="text-capitalize">Bootstrap 框架</p>//首字母大写

缩略语

//缩略语
Bootstrap<abbr title="Bootstrap" class="initialism">框架</abbr>

地址文本

//设置地址,去掉了倾斜,设置了行高,底部20px
<address>
<strong>Twitter, Inc.</strong><br>
795 Folsom Ave, Suite 600<br>
San Francisco, CA 94107<br>
<abbr title="Phone">P:</abbr> (123) 456-7890
</address>

引用文本

//默认样式引用,增加了做边线,设定了字体大小和内外边距
<blockquote>
Bootstrap 框架
</blockquote>
//反向
<blockquote class="blockquote-reverse ">
Bootstrap 框架
</blockquote>

列表排版

//移出默认样式
<ul class="list-unstyled">
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
</ul>
//设置成内联
<ul class="list-inline">
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
	<li>Bootstrap 框架</li>
</ul>
//水平排列描述列表
<dl class="dl-horizontal">
	<dt>Bootstrap</dt>
	<dd>Bootstrap 提供了一些常规设计好的页面排版的样式供开发者使用。</dd>
</dl>

代码

//内联代码
<code>&lt;section&gt;</code>
//用户输入
press <kbd>ctrl + ,</kbd>
//代码块
<pre>&lt;p&gt;Please input...&lt;/p&gt;</pre>

Bootstrap 还列举了表示标记变量,表示程序输出,只不过没有重新复写CSS。

表格和按钮

表格

Bootstrap 提供了一些丰富的表格样式供开发者使用。

基本格式

//实现基本的表格样式
<table class="table">

条纹状表格

//让<tbody>里的行产生一行隔一行加单色背景效果
<table class="table table-striped">
注:表格效果需要基于基本格式.table

带边框的表格

//给表格增加边框
<table class="table table-bordered">

悬停鼠标

//让<tbody>下的表格悬停鼠标实现背景效果
<table class="table table-hover">

状态类

//可以单独设置每一行的背景样式
<tr class="success">

注:一共五种不同的样式可供选择。
样式 说明
active 鼠标悬停在行或单元格上
success 标识成功或积极的动作
info 标识普通的提示信息或动作
warning 标识警告或需要用户注意
danger 表示危险或潜在的带来负面影响的动作

隐藏某一行

//隐藏行
<tr class="sr-only">

响应式表格

//表格父元素设置响应式,小于768px 出现边框
<body class="table-responsive">

按钮

Bootstrap 提供了很多丰富按钮供开发者使用。

可作为按钮使用的标签或元素

//转化成普通按钮
<a href="###" class="btn btn-default">Link</a>
<button class="btn btn-default">Button</button>
<input type="button" class="btn btn-default" value="input">

注意事项有三点:
(1).针对组件的注意事项
虽然按钮类可以应用到 和 元素上,但是,导航和导航条组件只支持 元素。
(2).链接被作为按钮使用时的注意事项
如果 元素被作为按钮使用-- 并用于在当前页面触发某些功能-- 而不是用于链接其他页面或链接当前页面中的其他部分,那么,务必为其设置role=“button” 属性。
(3).跨浏览器展现
我们总结的最佳实践是:强烈建议尽可能使用 元素来获得在各个浏览器上获得相匹配的绘制效果。
另外,我们还发现了Firefox <30 版本的浏览器上出现的一个bug,其表现是:阻止我们为基于 元素所创建的按钮设置line-height 属性,这就导致在Firefox 浏览器上不能完全和其他按钮保持一致的高度。

预定义样式

//一般信息
<button class="btn btn-info">Button</button>

样式 样式说明
btn-default 默认样式
btn-success 成功样式
btn-info 一般信息样式
btn-warning 警告样式
btn-danger 危险样式
btn-primary 首选项样式
btn-link 链接样式

尺寸大小

//从大到小的尺寸
<button class="btn btn-lg">Button</button>
<button class="btn">Button</button>
<button class="btn btn-sm">Button</button>
<button class="btn btn-xs">Button</button>

块级按钮

//块级换行
<button class="btn btn-block">Button</button>
<button class="btn btn-block">Button</button>

激活状态

//激活按钮
<button class="btn active">Button</button>

禁用状态

//禁用按钮
<button class="btn active disabled">Button</button>

表单和图片

表单

Bootstrap 提供了一些丰富的表单样式供开发者使用。

基本格式

//实现基本的表单样式 <form>
 <div class="form-group">
  <label>电子邮件</label> 
  <input type="email" class="form-control" placeholder="请输入您的电子邮件"> 
  </div>
   <div class="form-group"> 
   <label>密码</label> 
   <input type="password" class="form-control" placeholder="请输入您的密码"> 
   </div>
    </form>
    注:只有正确设置了输入框的type 类型,才能被赋予正确的样式。支持的输入框控件包括:text、password、datetime、datetime-local、date、month、time、week、number、email、url、search、tel 和color。

内联表单

//让表单左对齐浮动,并表现为inline-block 内联块结构
<form class="form-inline">
注:当小于768px,会恢复独占样式

表单合组

//前后增加片段
<div class="input-group">
<div class="input-group-addon">¥</div>
<input type="text" class="form-control">
<div class="input-group-addon">.00</div>
</div>

水平排列

//让表单内的元素保持水平排列
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label">电子邮件</label>
<div class="col-sm-10">
<input type="email" class="form-control" placeholder="请输
入您的电子邮件">
</div>
</div>
</form>
注:这里用到了col-sm 栅格系统,后面章节会重点讲解,而control-label 表示和父元素样式同步。

复选框和单选框

//设置复选框,在一行
<div class="checkbox">
<label>
<input type="checkbox">体育
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox">音乐
</label>
</div>
//设置禁用的复选框
<div class="checkbox disabled">
<label>
<input type="checkbox" disabled>音乐
</label>
</div>
//设置内联一行显示的复选框
<label class="checkbox-inline">
<input type="checkbox">体育
</label>
<label class="checkbox-inline disabled">
<input type="checkbox" disabled>音乐
</label>
//设置单选框
<div class="radio disabled">
<label>
<input type="radio" name="sex" disabled>男
</label>
</div>

下拉列表

//设置下拉列表
<select class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>

校验状态

//设置为错误状态
<div class="form-group has-error">
注:还有其他状态如下

样式 说明
has-error 错误状态
has-success 成功状态
has-warning 警告状态

//label 标签同步相应状态
<label class="control-label">Input with success</label>

添加额外的图标

//文本框右侧内置文本图标
<div class="form-group has-feedback">
<label>电子邮件</label>
<input type="email" class="form-control">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
注:除了glyphicon-ok 外,还有几个如下表:

样式 说明
glyphicon-ok 成功状态
glyphicon-warning-sign 警告状态
glyphicon-remove 错误状态

控制尺寸

//从大到小
 <input type="password" class="form-control input-lg"> 
 <input type="password" class="form-control">
  <input type="password" class="form-control input-sm">
  注:也可以设置父元素form-group-lg、form-group-sm,来调整。

图片

Bootstrap 提供了一些丰富的图片样式供开发者使用。

图片形状

//三种形状 
<img src="img/pic.png" alt="图片" class="img-rounded"> 
<img src="img/pic.png" alt="图片" class="img-circle"> 
<img src="img/pic.png" alt="图片" class="img-thumbnail"> //响应式图片
 <img src="img/pic.png" alt="图片" class="img-responsive">

栅格系统

移动设备优先

在HTML5 的项目中,我们做了移动端的项目。它有一份非常重要的meta,用于设置屏幕和设备等宽以及是否运行用户缩放,及缩放比例的问题。

//分别为:屏幕宽度和设备一致、初始缩放比例、最大缩放比例和禁止用户缩放
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">

布局容器

Bootstrap 需要为页面内容和栅格系统包裹一个.container 容器。由于padding 等属性的原因,这两种容器类不能相互嵌套。

//固定宽度
<div class="container">
...
</div>
//100%宽度
<div class="container-fluid">
...
</div>

栅格系统

栅格系统中,浏览器会随着屏幕的大小的增减自动分配最多12 列。通过一系列的行(row)与列(column)的组合来创建页面布局。工作原理如下:

“行(row)”必须包含在.container (固定宽度)或.container-fluid (100%宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。
通过“行(row)”在水平方向创建一组“列(column)”。
你的内容应当放置于“列(column)”内,并且,只有“列(column)”可以作为行(row)”的直接子元素。
类似.row 和.col-xs-4 这种预定义的类,可以用来快速创建栅格布局。Bootstrap 源码中定义的mixin 也可以用来创建语义化的布局。
通过为“列(column)”设置padding 属性,从而创建列与列之间的间隔(gutter)。通过为.row 元素设置负值margin 从而抵消掉为.container 元素设置的padding,也就间接为“行(row)”所包含的“列(column)”抵消掉了padding。
负值的margin 就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。
栅格系统中的列是通过指定1 到12 的值来表示其跨越的范围。例如,三个等宽的列可以使用三个.col-xs-4 来创建。
如果一“行(row)”中包含了的“列(column)”大于12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列。
栅格类适用于与屏幕宽度大于或等于分界点大小的设备, 并且针对小屏幕设备覆盖栅格类。因此,在元素上应用任何.col-md-* 栅格类适用于与屏幕宽度大于或等于分界点大小的设备,并且针对小屏幕设备覆盖栅格类。因此,在元素上应用任何.col-lg-*不存在, 也影响大屏幕设备。

  //创建一个响应式行 
    <div class="container"> <div class="row"> ... </div> </div> //创建最多12 列的响应式行 <div class="container"> <div class="row"> <div class="col-md-1 a">1</div> <div class="col-md-1 a">2</div> <div class="col-md-1 a">3</div> <div class="col-md-1 a">4</div> <div class="col-md-1 a">5</div> <div class="col-md-1 a">6</div> <div class="col-md-1 a">7</div> <div class="col-md-1 a">8</div> <div class="col-md-1 a">9</div> <div class="col-md-1 a">10</div> <div class="col-md-1 a">11</div> <div class="col-md-1 a">12</div> </div> </div> //为了显示明显的CSS .a { height: 100px; background-color: #eee; border:1px solid #ccc; } //总列数都是12,每列分配多列 <div class="container"> <div class="row"> <div class="col-md-4 a">1-4</div> <div class="col-md-4 a">5-8</div> <div class="col-md-4 a">9-12</div> </div> <div class="row"> <div class="col-md-8 a">1-8</div> <div class="col-md-4 a">9-12</div> </div> </div>
    栅格参数表

![](第5章 栅格系统.jpg)

如上图所示,栅格系统最外层区分了四种宽度的浏览器:超小屏(<768px)、小屏(>=768px)、中屏(>=992px)和大屏(>=1200px)。而内层.container 容器的自适应宽度为:自动、750px、970px 和1170px。自动的意思为,如果你是手机屏幕,则全面独占一行显示。

//四种屏幕分类全部激活 <div class="container"> <div class="row"> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div> </div> </div> //有时我们可以设置列偏移,让中间保持空隙 <div class="container"> <div class="row"> <div class="col-md-8 a">8</div> <div class="col-md-3 col-md-offset-1 a">3</div> </div> </div> //也可以嵌套,嵌满也是12 列 <div class="container"> <div class="row"> <div class="col-md-9 a"> <div class="col-md-8 a">1-8</div> <div class="col-md-4 a">9-12</div> </div> <div class="col-md-3 a"> 11-12 </div> </div> </div> //可以把两个列交换位置,push 向左移动,pull 向右移动 <div class="container"> <div class="row"> <div class="col-md-9 col-md-push-3 a">9</div> <div class="col-md-3 col-md-pull-9 a">3</div> </div> </div>

辅组类和响应式工具

辅组类

Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置、显示关闭图标等等。

情景文本颜色

样式 描述
text-muted 柔和灰
text-primary 主要蓝
text-success 成功绿
text-info 信息蓝
text-warning 警告黄
text-danger 危险红

//各种色调的字体
 <p class="text-muted">Bootstrap 视频教程</p> 
 <p class="text-primary">Bootstrap 视频教程</p>
  <p class="text-success">Bootstrap 视频教程</p> 
  <p class="text-info">Bootstrap 视频教程</p>
   <p class="text-warning">Bootstrap 视频教程</p>
    <p class="text-danger">Bootstrap 视频教程</p> 
    情景背景色

样式 描述
bg-primary 主要蓝
bg-success 成功绿
bg-info 信息蓝
bg-warning 警告黄
bg-danger 危险红

//各种色调的背景
<p class="bg-primary">Bootstrap 视频教程</p>
 <p class="bg-success">Bootstrap 视频教程</p>
  <p class="bg-info">Bootstrap 视频教程</p>
   <p class="bg-warning">Bootstrap 视频教程</p>
    <p class="bg-danger">Bootstrap 视频教程</p>

关闭按钮

<button type="button" class="close">&times;</button>

三角符号

<span class="caret"></span>

快速浮动

<div class="pull-left">左边</div>
<div class="pull-right">右边</div>
注:这个浮动其实就是float,只不过使用了!important 加强了优先级。

块级居中

<div class="center-block">居中</div>
注:就是margin:x auto;并且设置了display:block;

清理浮动

<div class="clearfix"></div>
注:这个div 可以放在需要清理浮动区块的前面即可。

显示和隐藏

<div class="show">show</div>
<div class="hidden">hidden</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值