1.Bootstrap简介
框架:
就是一台架构,有较为完整的网页功能解决方案,而且控制权在框架本身,有预制样式库、组件和插件。使用者要按照框架规定的规范进行开发
参考:
中文官网:http://www.bootcss.com
官网:http://getbootstrap.com
推荐使用:http://www.bootstrap.css88.com
优点:
标准化的html+css编码规范
提供了一套简洁、直观、强悍的组件
有自己的生态圈,不断的更新迭代
开发更简单,提高开发的效率
2.Bootstrap使用
创建文件夹结构
创建html骨架结构
引入相关样式文件
书写内容:
可以使用bootstrap预定义样式
可以修改bootstrap原先样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.left{
background-color: pink;
}
</style>
</head>
<body>
<div class="btn-group" role="group" aria-label="...">
<button type="button" class="btn btn-default left">Left</button>
<button type="button" class="btn btn-default">Middle</button>
<button type="button" class="btn btn-default">Right</button>
</div>
</body>
</html>
3.布局容器
Bootstrap需要为页面内容和栅格系统包裹一个.container容器,Bootstrap预先定义好了这个类,叫.container,它提供了两个作此用处的类
3.1 .container类
- 响应式布局的容器,固定宽度
- 大屏(>=1200px),宽度定为1170px
- 中屏(>=992px),宽度定为970px
- 小屏(>=768px),宽度定为750px
- 超小屏(100%)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.left{
background-color: pink;
}
</style>
</head>
<body>
<div class="container">
<div class="btn-group" role="group" aria-label="...">
<button type="button" class="btn btn-default left">Left</button>
<button type="button" class="btn btn-default">Middle</button>
<button type="button" class="btn btn-default">Right</button>
</div>
</div>
</body>
</html>
container-fluid类
- 流式布局容器百分百宽度
- 占据全部视口viewport的容器
- 适合单独做移动端开发
4.Boorstrap栅格系统
grid systems,将页面布局划分为等宽的列,然后通过列数的 定义来模块化页面布局
Bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口viewport尺寸的增加,系统会自动分为最多12列
4.1栅格系统使用
栅格系统用于通过一系列的行row和列colum的组合来创建页面布局,内容可以放入这些创建好的布局中
4.1.1 大屏幕下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
[class^="col"]{
border: 1px solid green;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-6">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
</div>
</div>
</body>
</html>
共12份,按照不同子盒子所设置的数字进行划分,所有数字相加等于12时,孩子会占满整个container的宽度
如果孩子数字相加小于12或大于12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
[class^="col"]{
border: 1px solid green;
}
</style>
</head>
<body>
<div class="container">
<!-- 孩子份数相加等于12,就占满整个container宽度 -->
<div class="row">
<div class="col-lg-6">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
</div>
<br>
<!-- 孩子份数相加小于12,不会占满整个container宽度,会有空白 -->
<div class="row">
<div class="col-lg-6">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-1">1</div>
</div>
<br>
<!-- 孩子份数相加大于12,多余的一列换行展示 -->
<div class="row">
<div class="col-lg-6">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-2">1</div>
<div class="col-lg-3">1</div>
</div>
</div>
</body>
</html>
4.1.2 不同屏幕下调节内容布局
宽屏 中等屏幕下 小屏 超小屏
可以给盒子设置多个类名,不同类名表示不同屏幕下盒子占有的份数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
[class^="col"]{
border: 1px solid green;
}
</style>
</head>
<body>
<div class="container">
<!-- 孩子份数相加等于12,就占满整个container宽度 -->
<div class="row">
<div class="col-lg-6 col-md-4 col-sm-6 col-xs-12">1</div>
<div class="col-lg-2 col-md-4 col-sm-6 col-xs-12">1</div>
<div class="col-lg-2 col-md-4 col-sm-6 col-xs-12">1</div>
<div class="col-lg-2 col-md-4 col-sm-6 col-xs-12">1</div>
</div>
</div>
</body>
</html>
小屏一个盒子占6份:共12份
超小屏一个盒子占12份,占满屏幕
4.1.3 bootstrap列嵌套
一个盒子里嵌套其他子盒子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 要求当前网页使用IE浏览器最高版本内核进行渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
[class^="col"]{
border: 1px solid green;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
<!-- 列嵌套时最好加一个行row,这样可以取消父元素的padding值,而且高度会和父级一样高 -->
<div class="row">
<div class="col-md-6">a</div>
<div class="col-md-6">b</div>
</div>
</div>
<div class="col-md-4">2</div>
<div class="col-md-4">3</div>
</div>
</div>
</body>
</html>
如果不加一个row,就会有padding,嵌套时不是从盒子边开始划分的
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
<!-- 列嵌套时如果不加row,就会有padding值把子盒子挤到中间 -->
<div class="col-md-6">a</div>
<div class="col-md-6">b</div>
</div>
<div class="col-md-4">2</div>
<div class="col-md-4">3</div>
</div>
</div>
</body>
4.1.4bootstrap列偏移
使用.col-md-offset-* 这个类,可以将列向右偏移,这些类实际是通过使用 *选择器为当前元素增加左侧的边距margin
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.row div {
background-color: pink;
height: 50px;
}
</style>
</head>
<body>
<div class="container">
<!-- 两个盒子两边对齐 -->
<div class="row">
<div class="col-md-3">左侧</div>
<!-- 偏移的份数=12-两个盒子占的总份数 -->
<div class="col-md-3 col-md-offset-6">右侧</div>
</div>
<!-- 盒子在中间水平居中对齐 -->
<div class="row">
<!-- 只有一个盒子,偏移份数=(12-8)/2 -->
<div class="col-md-8 col-md-offset-2">中间盒子</div>
</div>
</div>
</body>
</html>
4.1.5 bootstrap列排序
使用.col-md-push-* 和.md-pull-* 类可以改变列的顺序
将左侧和右侧的盒子互换位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.row div{
height: 50px;
background-color: pink;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-push-8">左侧</div>
<div class="col-md-8 col-md-pull-4">右侧</div>
</div>
</div>
</body>
</html>
互换之前:
互换之后:
4.1.6 响应式工具
隐藏内容
为了加快对移动设备友好的页面开发工作,利用媒体查询功能,并使用这些工具类可以方便的针对不同设备展示或隐藏页面内容
场景:在大屏可见,切换小屏后隐藏不可见
练习:在大屏可以看见绿色魔术区,小屏和中屏隐藏不可见
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.row div{
background-color: pink;
height: 100px;
}
.row div:nth-child(3){
background-color: chartreuse;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-3">1</div>
<div class="col-xs-3">2</div>
<div class="col-xs-3 hidden-md hidden-xs">魔术区</div>
<div class="col-xs-3">4</div>
</div>
</div>
</body>
</html>
大屏展示效果:
小屏展示效果:
显示内容
与隐藏相反,visible-xs visible-sm visible-md visible-lg是显示某个页面内容
练习:
当是大屏时,第一个盒子里展示“我会显示”这几个字,小屏、中屏不展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=0">
<!-- 1、解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题 -->
<!-- 2、解决ie9以下浏览器对css3 Media Query的不识别 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
<!-- 引入bootstrap样式 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<title>Document</title>
<style>
.row div{
background-color: pink;
height: 100px;
}
.row div:nth-child(3){
background-color: chartreuse;
}
span{
font-size: 50px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-3">1
<span class="visible-lg">我会显示</span>
</div>
<div class="col-xs-3">2</div>
<div class="col-xs-3 hidden-md hidden-xs">魔术区</div>
<div class="col-xs-3">4</div>
</div>
</div>
</body>
</html>
大屏:
中屏: