第5 章
前端框架Bootstrap 
5.1 Bootstrap简介
Bootstrap是美国Twitter公司推出的基于HTML、CSS、JavaScript开发的前端开发框
架。Bootstrap用于快速开发Web应用程序和网站,是由Twitter的MarkOtto和Jacob 
Thornton开发的。Bootstrap使用简洁灵活且完全开源,是目前广受欢迎的前端框架。
5.1.1 安装Bootstrap 
1.Bootstrap的下载 
可以通过https://v3.bootcss.com/下载本节所使用的Bootstrap 的v3.4.1 版本, 
Bootstrap中文文档页面如图5-1所示。注意:VisualStudio2019已经内嵌了Bootstrap 
v3.4.1版本,无须再下载安装。
图5-1 Bootstrapv3.4.1中文文档首页
单击“下载Bootstrap”按钮,将会看到如图5-2所示的三种下载方式。
为了更好地理解和更方便地使用,本节中使用Bootstrap的预编译版本,即使用第一种
方式进行Bootstrap环境的安装。

126
基于C# 
的管理信息系统开发(第
3 
版)


图5-
2 
Botstrap的下载方式

2.预编译版
Bootstrap提供了两种形式的压缩包,在下载的压缩包内可以看到以下目录和文件,这
些文件按照类别放到了不同的目录内,并且提供了压缩与未压缩两种版本。
下载压缩包之后,将其解压缩到任意目录即可看到如图5-3所示的目录结构。


图5-
3 
解压缩后的目录结构

图5-3展示的是Bootstrap的基本文件结构:可以看到已编译好的CSS和JS 
(bootstrap.*)文件,还有经过压缩的CSS和JS(bootstrap.min.*)文件。同时还提供了
CSS源码映射表(bootstrap.*.map),可以在某些浏览器的开发工具中使用。还有来自
Glyphicons的图标字体,在附带的Bootstrap主题中使用到了这些图标。

预编译文件可以直接应用到任何Web项目中。

3.Boottp源码
Bootstrap(s) 源(a) 码包含预先编译的CSS 、JS和图标字体文件,并且还有LESS 、JavaScript 
和文档的源码。

les\js\和fonts\目录分别包含CSS 、JS和字体图标的源码。dist\目录包含上面所说的
预编译Bootstrap包内的所有文件。docs\包含所有文档的源码文件,examples\目录是
Bootstrap官方提供的实例工程。除了这些,其他文件还包含Bootstrap安装包的定义文件、


第5 章 前端框架Bootstrap 1 27 
许可证文件和编译脚本等。
5.1.2 Bootstrap 的主要特性
1.HTML5文档类型 
Bootstrap使用到的某些HTML元素和CSS属性需要将页面设置为HTML5文档类
型。在项目中的每个页面都要参照下面的格式进行设置。 
<!doctype html> 
<html lang="en"> 
... 
</html> 
2.移动设备优先
移动设备优先是Bootstrapv.3.4.1的最显著的变化。在之前的Bootstrap版本中(直到
2.x),需要手动引用另一个CSS,才能让整个项目支持移动设备。而Bootstrapv.3.4.1默认
的CSS本身就对移动设备优先支持,然后才是桌面设备(PC显示器)。
为了让Bootstrap开发的网站对移动设备友好,确保适当的绘制和触屏缩放,需要在
<head>之中添加视口(viewport)元数据标签,代码如下。 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
说明: 
(1)width属性控制设备的宽度。假设开发的网站将面向不同屏幕分辨率的设备浏览, 
那么将它设置为device-width可以确保它能正确呈现在不同设备上。
(2)initial-scale=1确保网页加载时,以1∶1的比例呈现,不会有任何的缩放。
(3)在移动设备浏览器上,通过为视口设置meta属性为user-scalable=no可以禁用其
缩放(zooming)功能。禁用缩放功能后,用户只能滚动屏幕,使网站看上去更像原生App。 
<meta name="viewport" content="width=device-width, initial-scale=1, 
maximum-scale=1, user-scalable=no"> 
3.排版与链接
Bootstrap的排版链接样式均设置了基本的全局样式,分别描述如下。
(1)为body元素设置背景色为#fff。
(2)使用@font-family-base、@font-size-base和@line-height-base变量作为排版的基
本参数。
(3)为所有链接设置了基本颜色@link-color,并且当链接处于悬停状态时才添加下
画线。这
些样式都能在scaffolding.less文件中找到对应的源码。
4.Normalize.css 
为了增强跨浏览器渲染的一致性,Bootstrap使用了Normalize.css,这是由Nicolas 
Gallagher和JonathanNeal维护的一个CSS重置样式库,在HTML 元素的默认样式中提
供了更好的跨浏览器一致性。
5.布局容器
Bootstrap需要为页面内容和网格系统包裹一个container容器。Bootstrap提供了两

1 28 基于C# 的管理信息系统开发(第3 版) 
个类。
(1)container类用于固定宽度并支持响应式布局的容器。 
<div class="container"> 
... 
</div> 
(2)container-fluid类用于100% 宽度,占据全部视口的容器。 
<div class="container-fluid"> 
... 
</div> 
注意,由于padding等属性的原因,这两种容器类不能互相嵌套。
5.1.3 Bootstrap 在Visual Studio 2019 中的应用
Bootstrap可用任何Web开发环境进行编写,本节实例使用VisualStudio2019进行编
写。下面给出第一个例子的实现步骤。
【例5-1】 第一个实例HelloBootStrap。
(1)启动VisualStudio2019,新建一“ASP.NET Web应用程序(.NETFramework)”, 
单击“下一步”按钮,如图5-4所示。
图5-4 “创建新项目”窗口
(2)在“配置新项目”对话框中输入项目名称并选择保存位置后单击“创建”按钮,如
图5-5所示。
(3)在“创建新的ASP.NET Web应用程序”对话框中选择项目类型———WebForms 
选项,然后单击“创建”按钮,完成项目创建,如图5-6所示。

第 
5 
章 前端框架Bootstrap 
129 


图5-
5 
“配置新项目”对话框


图5“创建新的ASP.b应用程序”对话框

-
6 
NET 
We

(4)在“解决方案资源管理器”中可以看到,VS2019 中已添加了Bootstrap核心文件,如
图5-7所示。
(5)右击项目,在弹出的右键菜单中依次选择“添加”→“Web窗体”命令,在弹出的“指

1 30 基于C# 的管理信息系统开发(第3 版)
图5-7 Bootstrap核心文件
定项名称”对话框中输入项名称,如图5-8所示。
图5-8 指定项名称
(6)在文件中增加两个meta标签,代码如下。 
<!-- 用以声明当前页面用最新的IE 版本模式来渲染--> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
<!-- 让Bootstrap 开发的网站对移动设备友好,确保适当的绘制和触屏缩放--> 
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
(7)导入Bootstrap主样式,代码如下。 
<!-- 导入bootstrap 的主样式--> 
<link rel="stylesheet" href="Content/bootstrap.min.css" type="text/css" />

第5 章 前端框架Bootstrap 1 31 
注意:如自定义文件夹与本节代码不同,请将路径修改为自己命名的文件夹。
在文件的<body>标签中添加代码如下。 
<h1>Hello,Bootstrap!</h1> 
即完成第一个例子,如图5-9所示。
图5-9 第一个例子
右击firstBootsPage,可直接在浏览器中查看页面运行效果,如图5-10所示。
图5-10 在浏览器中查看页面
后续例子均可在该项目下新建HTML文件运行。
5.2 Bootstrap样式
本节将讲述Bootstrap底层结构的关键部分,包括网格系统、排版、表格、表单及按
钮等。
5.2.1 网格系统
1.简介 
Bootstrap提供了一套响应式、移动设备优先的流式网格系统,随着屏幕或视口尺寸的
增加,系统会自动分为最多12列。它包含易于使用的预定义类,还有强大的mixin用于生
成更具语义的布局。

1 32 基于C# 的管理信息系统开发(第3 版) 
2.工作原理
网格(也称栅格)系统用于通过一系列的行(row)与列(column)的组合来创建页面布
局,而网页的内容就可以放入这些创建好的布局中。以下介绍Bootstrap 网格系统的工作
原理。
(1)“行”必须包含在固定宽度的容器(container)或container-fluid(100% 宽度)中,以
便为其赋予合适的对齐(alignment)和内边距(padding)。
(2)通过“行”在水平方向创建一组“列”。内容应当放置于“列”内,并且,只有“列”可以
作为“行”的直接子元素。
(3)类似row和col-xs-4这种预定义的类,可以用来快速创建网格布局。Bootstrap源
码中定义的mixin也可以用来创建语义化的布局。
(4)通过为“列”设置内边距属性,从而创建列与列之间的间隔(gutter)。通过为“行”元
素设置负值边距(margin)从而抵消掉为container元素设置的内边距,也就间接为“行”所包
含的“列”抵消掉了内边距。
(5)负值的边距可以使得页面元素向外突出。在网格列中的内容排成一行。
(6)网格系统中的列是通过指定1~12的值来表示其跨越的范围。例如,三个等宽的
列可以使用三个col-**-4来创建。
(7)如果一“行”中包含的“列”大于12,多余的“列”所在的元素将被作为一个整体另起
一行排列。
(8)网格类适用于屏幕宽度大于或等于分界点大小的设备,并且针对小屏幕设备覆盖
网格类。因此,在元素上应用任何col-md-* 网格类适用于屏幕宽度大于或等于分界点大
小的设备,并且针对小屏幕设备覆盖网格类。
3.媒体类型查询
在网格系统中,使用媒体类型查询来创建关键的分界点阈值,代码如下。 
/* 超小屏幕(手机,小于768px) */ 
/* 没有任何相关的代码,因为这在Bootstrap 中是默认的(Bootstrap 是移动设备优先) */ 
/* 小屏幕(平板,大于或等于768px) */ 
@media (min-width: @screen-sm-min) { … } 
/* 中等屏幕(桌面显示器,大于或等于992px) */ 
@media (min-width: @screen-md-min) { … } 
/* 大屏幕(大桌面显示器,大于或等于1200px) */ 
@media (min-width: @screen-lg-min) { … } 
我们偶尔也会在媒体类型查询代码中包含max-width 从而将CSS的影响限制在更小
范围的屏幕大小之内,如下。 
@media (max-width: @screen-xs-max) { … } 
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { … } 
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { … } 
@media (min-width: @screen-lg-min) { … } 
4.网格参数
Bootstrap的网格系统在多种屏幕设备上工作的方式,如表5-1所示。

第5 章 前端框架Bootstrap 1 33 
表5-1 网格系统在各种屏幕上工作的方式
屏幕类型属性网格系统行为.container最大宽度类前缀最大列宽
超小屏幕(手机)(<768px) 总是水平排列None(自动) col-xs- 自动
小屏幕(平板)(≥768px) 
中等屏幕(桌面显示器) 
(≥992px) 
大屏幕(大桌面显示器) 
(≥1200px) 
开始是堆叠在一起的, 
当大于这些阈值时将变
为水平排列
750px col-sm- ~62px 
970px col-md- ~81px 
1170px col-lg- ~97px 
另外,对于各种类型的屏幕,其最大列数均为12,间隔(gutter)宽均为30px,可嵌套、有
偏移且按列排序。
注意:后续文字描述中均以超小屏幕指代手机屏幕,小屏幕指代平板屏幕,中等屏幕指
代桌面显示器,大屏幕指代大桌面显示器。
5.基本的网格结构
基本的网格结构代码如下。 
<div class="container"> 
<div class="row"> 
<div class="col-*-*"></div> 
<div class="col-*-*"></div> 
</div> 
<div class="row">…</div> 
</div> 
即为每一个列元素指定类。例5-2给出一个基本网格系统的例子。
说明:由于Bootstrap代码量较大,本节例题在正文中均只给出关键代码(省略部分由
“…”开头的斜体文字说明),以读者能理解其结构及作用为主,完整代码请参考配套资料中
的例题。
【例5-2】 网格系统从堆叠到水平排列。
使用单一的一组col-md-*网格类,就可以创建一个基本的网格系统,在超小屏幕和小
屏幕设备上是堆叠在一起的,在中等屏幕设备上就会变成水平排列的。所有列必须放在
行内。 
<div class="container"> 
<div class="row"> 
<div class="col-md-1">内容1</div> 
<div class="col-md-1">内容2</div> 
…省略3~11 列部分代码 
<div class="col-md-1">内容12</div> 
</div> 
<div class="row"> 
<div class="col-md-4">内容1</div> 
<div class="col-md-4">内容2</div> 
<div class="col-md-4">内容3</div> 
</div> 
<div class="row">

1 34 基于C# 的管理信息系统开发(第3 版) 
<div class="col-md-6">内容1</div> 
<div class="col-md-6">内容2</div> 
</div> 
<div class="row"> 
<div class="col-md-12">内容1</div> 
</div> 
</div> 
保存代码并运行,在超小屏幕及小屏幕上显示效果如图5-11所示。
图5-11 例5-2超小屏幕及小屏幕显示效果
在中等屏幕上显示效果如图5-12所示。
图5-12 例5-2中等屏幕显示效果
说明: 
(1)为了呈现更好的效果方便观看,为网格系统(除例5-8嵌套列)的例子均设置了如
下样式。