一、简介
-
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。
-
凡是使用过Bootstrap的开发者,都不在乎做这么两件事情:复制and粘贴。
-
它用于开发响应式布局、移动设备优先的 WEB 项目
二、安装
2、CDN
<!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- 可选的 Bootstrap 主题文件(一般不用引入) --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
引入:
<head> <!-- 在head标签上部导入bs的css --> <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"> <!-- 再导入自定义修改的css --> <link rel="stylesheet" href="css/my.css"> </head> <body> <!-- html代码结构 --> ... <!--bs的脚本依赖于jq, 所以要提前导入jq--> <!--脚本逻辑尽量放在html结构之下--> <script src="js/jquery-3.3.1.js"></script> <script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script> </body>
三、布局容器
Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器。我们提供了两个作此用处的类。注意,由于 padding 等属性的原因,这两种 容器类不能互相嵌套。
.container 类用于固定宽度并支持响应式布局的容器
<div class="container">
...
</div>
.container-fluid 类用于 100% 宽度,占据全部视口(viewport)的容器
<div class="container-fluid">
...
</div>
-
固定宽度:.container
-
流式布局:.container-fluid
<!--总结; 两种容器(container | container-fluid)默认都有左右15px padding--> <!--固定宽度容器(采用响应式布局)--> <div class="container"> <!-- 行: .row, 可以取消容器的默认左右15px padding--> <div class="row"> <h1 class="bg-info">标题</h1> </div> </div> <!--动态宽度布局(采用流式布局)--> <div class="container-fluid"> <div class="row"> <h1 class="bg-info">标题</h1> </div> </div>
四、响应式布局
概念:开发了一种自适应写法,即一次开发,处处显示!
-
超小屏幕:小于 768px
-
小屏幕:大于等于 768px
-
中等屏幕:大于等于 992px
-
大屏幕:大于等于 1200px
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>容器于响应式</title> <link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css"> <style> .box { /* 500px;*/ height: 100px; background-color: orange; margin: 0 auto; } /*屏幕尺寸 >1200px 会激活该响应式分支*/ @media (min- 1200px) { .box { width: 1200px; } } /*992px ~ 1200px*/ @media (min- 992px) and (max- 1200px) { .box { width: 992px; } } /*小于992px*/ @media (max- 992px) { .box { width: 50px; } } /*用来完成响应式布局 @media (min- 768px) { } */ </style> </head> <body> <!--响应式布局--> <div class="box"></div> <!--固定宽度容器(采用响应式布局)--> <div class="container"> <!--缩放屏幕尺寸,发现宽度有四种状态存在 => 响应式布局--> <h1 class="bg-pink">标题</h1> <div class="container"> <h1 class="bg-pink">子标题</h1> </div> </div> <!--动态宽度布局(采用流式布局)--> <div class="container-fluid"> <h1 class="bg-pink">标题</h1> </div> <!--总结; 两种容器默认都有左右15px padding--> <!-- 行: .row, 可以取消容器的默认左右15px padding--> <div class="container"> <div class="row"> <h1 class="bg-info">标题</h1> </div> </div> <div class="container-fluid"> <div class="row"> <h1 class="bg-info">标题</h1> </div> </div> <!--行row就是配合容器来使用, 可以抵消容器默认padding, 且可以给内容按行分组--> <div class="container"> <div class="row"> ... </div> <div class="row"> ... </div> </div> </body> <script src="js/jquery-3.3.1.js"></script> <script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script> </html>
五、删格系统
1、概念
将所在父级的宽度等分为12等分 四种屏幕尺寸 col-xs- | col-sm- | col-md- | col-lg- 偏移 col-xs-offset- | ... | col-lg-offset-
<div class="row"> <div class="ele1 col-lg-4 col-xs-6"></div> <div class="ele2 col-lg-4 col-lg-offset-4 col-xs-6"></div> </div> <!-- 超大屏幕下: ele1占4等分 ele2与ele1间隔4等分,自己也占4等分 --> <!-- 在超小,小,中等屏幕下, ele1与ele2均占6等分 -->
Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列
栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。下面就介绍一下 Bootstrap 栅格系统的工作原理:
栅格参数:
使用单一的一组 .col-md-* 栅格类,就可以创建一个基本的栅格系统,在手机和平板设备上一开始是堆叠在一起的(超小屏幕到小屏幕这一范围),在桌面(中等)屏幕设备上变为水平排列。所有“列(column)必须放在 ” .row 内。
-
移动端适配
<meta name="viewport" content="width=device-width, user-scaleable=no" /> <!-- 适配移动端设备的每一个页面均需要设置 -->
2、列比
-
超小屏幕:.col-xs-*
-
小屏幕:.col-sm-*
-
中等屏幕:.col-md-*
-
大屏幕:.col-lg-*
只设置小屏列比会影响大屏列比;只设置大屏列比小屏时会撑满屏幕
3、行
<div class="row"></div>
...
<div class="row"></div>
4、列偏移
-
超小屏幕:.col-xs-offset-*
-
小屏幕:.col-sm-offset-*
-
中等屏幕:.col-md-offset-*
-
大屏幕:.col-lg-offset-*
六、辅助类
1、 情境背景色
<p class="bg-primary">...</p> <p class="bg-success">...</p> <p class="bg-info">...</p> <p class="bg-warning">...</p> <p class="bg-danger">...</p>
2、快速浮动
<div class="pull-left">...</div> <div class="pull-right">...</div>
3、快速清浮动
<div class="clearfix">...</div>
4、显隐
<div class="show">...</div> <div class="hidden">...</div>
七、字体图标
<i class="glyphicon glyphicon-*"></i>
八、组件
表格表单 字体图标 下拉菜单 按钮组 输入框俎 导航 分页 标签和徽章 页头 缩率图 进度条 ...
表格
<!--striped条纹 bordered边框 hover悬浮--> <table class="table table-striped table-bordered table-hover"> <tr style="text-align: center"> <th>标题</th> <th>标题</th> <th>标题</th> </tr> <tr> <td>单元格</td> <td>单元格</td> <td>单元格</td> </tr> <!-- 颜色强调,整行tr 或 单元格 th|td --> <tr class="success"> <td>单元格</td> <td>单元格</td> <td>单元格</td> </tr> <tr> <td>单元格</td> <td class="danger">单元格</td> <td>单元格</td> </tr> <tr> <td>单元格</td> <td class="info" colspan="2" style="text-align: center">单元格</td> <!--<td>单元格</td>--> </tr> </table>
表单
<form action=""> <!-- 分行: form-group --> <div class="form-group"> <!--label的for是关联匹配的input的id, 当label点击时会让input获取焦点--> <label for="usr">用户名:</label> <!-- form-control: bs控制 --> <input class="form-control" type="text" name="usr" id="usr"> </div> <div class="form-group"> <label for="pwd">密码:</label> <input class="form-control" type="password" name="pwd" id="pwd"> </div> <div class="form-group checkbox"> <!--复选框--> <label> <input type="checkbox" value="reading" name="sk">请阅读 </label> </div> </form> <!-- 内联表单 --> <form class="form-inline"></form> <!-- label与input同行显示 --> <form action="" class="form-horizontal"> <div class="form-group has-warning"> <label for="usr2" class="col-sm-2 control-label">用户名:</label> <div class="col-sm-10"> <input type="text" class="form-control" name="usr2" id="usr2" placeholder="请输入用户名"> </div> </div> </form>
官方文档