1、bootstrap简介
- 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。
Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的。Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品。
在使用bootstrap之前需要掌握html、css、JavaScript的基础知识
2、为什么使用bootstrap?
1、移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。
2、浏览器支持:所有的主流浏览器都支持bootstrap
3、容易上手 只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习 Bootstrap。
4、响应式设计:Bootstrap 的响应式 CSS 能够自适应于台式机、平板电脑和手机。
3、快速入门
步骤:
1、下载Bootstrap
2、在项目中将这三个文件夹复制
3、创建html页面,引入必要的资源文件
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap快速入门</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="./css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
<!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://fastly.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<h1>你好,世界!</h1>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="./js/jquery-3.2.1.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="./js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</body>
</html>
4、响应式布局
4.1、简介
同一套页面可以简荣芳不同分辨率的设备
bootstrap的实现依赖于栅格系统:
步骤:
>1、定义容器:相当于table
>
> 容器的分类:
>
> 1、container:两边有留白的容器
>
> 2、container-fluid : 每一种设备都是100%的宽度 撑满网页 两边不留白
>
>2、定义行 相当于tr
>
> 样式 row
>
>3、定义元素:制定元素在不同设备上 所占的格子的树木 样式 col-设备代号-格子数目
>
> 设备代号:
> 1. xs:超小屏幕 手机 (<768px):col-xs-12
> 2. sm:小屏幕 平板 (≥768px)
> 3. md:中等屏幕 桌面显示器 (≥992px)
> 4. lg:大屏幕 大桌面显示器 (≥1200px)
>
>* 注意:
> 1. 一行中如果格子数目超过12,则超出部分自动换行。
> 2. 栅格类属性可以向上兼容。栅格类适用于与屏幕宽度大于或等于分界点大小的设备。
> 3. 如果真实设备宽度小于了设置栅格类属性的设备代码的最小值,会一个元素沾满一整行。
4.2、响应式布局快速入门代码
<!--1、定义容器-->
<div class="container-fluid">
<!-- 2、定义行 -->
<div class="row">
<!-- 3、定义元素 一行里面有多少个元素 -->
<div class="col-lg-1 inner">元素1</div>
<div class="col-lg-1 inner">元素2</div>
<div class="col-lg-1 inner">元素3</div>
<div class="col-lg-1 inner">元素4</div>
<div class="col-lg-1 inner">元素5</div>
<div class="col-lg-1 inner">元素6</div>
<div class="col-lg-1 inner">元素7</div>
<div class="col-lg-1 inner">元素8</div>
<div class="col-lg-1 inner">元素9</div>
<div class="col-lg-1 inner">元素a</div>
<div class="col-lg-1 inner">元素b</div>
<div class="col-lg-1 inner">元素c</div>
</div>
</div>
bug解决:
解决方法:
可以设置多个class属性 适配不同分辨率大小的设备
5、css样式
5.1、按钮
浏览官网查看官网文档的示例代码
只需要给按钮绑定一个class属性就可实现不同的按钮样式
<!-- Standard button -->
<button type="button" class="btn btn-default">(默认样式)Default</button>
<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
<button type="button" class="btn btn-primary">(首选项)Primary</button>
<!-- Indicates a successful or positive action -->
<button type="button" class="btn btn-success">(成功)Success</button>
<!-- Contextual button for informational alert messages -->
<button type="button" class="btn btn-info">(一般信息)Info</button>
<!-- Indicates caution should be taken with this action -->
<button type="button" class="btn btn-warning">(警告)Warning</button>
<!-- Indicates a dangerous or potentially negative action -->
<button type="button" class="btn btn-danger">(危险)Danger</button>
<!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
<button type="button" class="btn btn-link">(链接)Link</button>
5.2、图片
<div style="width: 500px;margin: 0 auto">
<img src="./img/bg.png" alt="..." class="img-rounded img-responsive">
<img src="./img/bg.png" alt="..." class="img-circle img-responsive">
<img src="./img/bg.png" alt="..." class="img-thumbnail img-responsive">
</div>
5.3、表格
根据官网介绍 给table标签 加上.table属性就可以给表格添加一些基础样式
我们来试试:
<table class="table table-bordered">
<th>编号</th>
<th>姓名</th>
<th>邮箱</th>
<th>地址</th>
<tr>
<td>1</td>
<td>张三</td>
<td>zhangsan@qq.com</td>
<td>湖南</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>zhangsan@qq.com</td>
<td>广西</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>zhangsan@qq.com</td>
<td>广东</td>
</tr>
<tr>
<td>4</td>
<td>赵六</td>
<td>zhangsan@qq.com</td>
<td>湖北</td>
</tr>
</table>
bootstrap中表格的默认样式
添加 .table-bordered
类为表格和其中的每个单元格增加边框。
通过添加 .table-hover
类可以让 <tbody>
中的每一行对鼠标悬停状态作出响应。
也可以修改某一行的状态
5.4、表单
<form class="form-inline">
<div class="form-group">
<label for="exampleInputName2">Name</label>
<input type="text" class="form-control" id="exampleInputName2" placeholder="Jane Doe">
</div>
<div class="form-group">
<label for="exampleInputEmail2">Email</label>
<input type="email" class="form-control" id="exampleInputEmail2" placeholder="jane.doe@example.com">
</div>
<button type="submit" class="btn btn-default">Send invitation</button>
</form>
6、组件
6.1、导航条
<nav class="navbar navbar-default">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container -->
</nav>
6.2、分页条
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
7、JavaScript插件
7.1、轮播图
<div style="width: 800px;margin: 0 auto">
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="./img/1.png" alt="..." class="img-responsive">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./img/2.png" alt="..." class="img-responsive">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./img/bg.png" alt="..." class="img-responsive">
<div class="carousel-caption">
...
</div>
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
8、案例
使用bootstrap编写一个首页
旅游网案例
【1】确定三个部分
8.1、页眉部分
【2】编写页眉
8.1.1、第一行 背景图
<!-- 第一行 -->
<div class="row">
<img src="./img/top_banner.jpg" class="img-responsive">
</div>
8.1.2、第二行 logo 搜索框
第二行 又分为三列 使用栅格系统
<!-- 第二行 logo 搜索框 -->
<div class="row padding_top">
<div class="col-lg-3">
<img src="./img/logo.png" class="img-responsive">
</div>
<div class="col-lg-6">
<input type="text" placeholder="请输入关键字查询" class="search_input">
<a href="javascript:void(0)" class="search_btn">搜索</a>
</div>
<div class="col-lg-3" style="padding-top: 25px">
<img src="./img/tel.png" alt="">
</div>
</div>
但是样式不好看 我们需要自定义一些样式:
<style>
.padding_top {
padding-top: 15px;
}
.search_input {
float: left;
border: 2px solid rgb(0, 191, 106);
width: 500px;
height: 35px;
padding-left: 10px;
margin-top: 27px;
}
.search_btn {
font-size: 18px;
color: #ffffff;
text-align: center;
line-height: 35px;
float: left;
width: 80px;
height: 35px;
border: 2px solid rgb(0, 191, 106);
background-color: rgb(0, 191, 106);
margin-top: 27px;
}
</style>
8.1.3、第三行 导航栏
导航栏
官网代码:
<!-- 第三行 导航栏 去官网使用官网的导航栏示例代码-->
<div class="row padding_top">
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header navgate">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">首页</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navgate" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav ">
<li><a href="#">酒店</a></li>
<li><a href="#">机票</a></li>
<li><a href="#">火车票</a></li>
<li><a href="#">景点</a></li>
<li><a href="#">周边游</a></li>
<li><a href="#">境内游</a></li>
<li><a href="#">境外游</a></li>
<li><a href="#">游轮</a></li>
<li><a href="#">签证</a></li>
<li><a href="#">攻略</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</div>
8.1.4、第四行 轮播图
轮播图
<!-- 第四行 轮播图 -->
<div class="row">
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="./img/lunbo1.jpg" alt="...">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./img/lunbo2.jpg" alt="...">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./img/lunbo3.jpg" alt="...">
<div class="carousel-caption">
...
</div>
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
8.2、主体部分
主体部分用的容器是container 两边有留白的容器
8.2.1、第一行
<!-- 第一行 -->
<div class="row padding_top" style="border-bottom: 2px solid rgb(0, 191, 106)">
<img src="./img/icon_4.jpg" >
<span>最佳推荐</span>
</div>
8.2.2、第二行
<!-- 第二行 里面有四个元素 每个元素占三个格子 -->
<div class="row padding_top">
<div class="col-md-3">
<div class="thumbnail">
<img src="./img/jiangxuan_1.jpg">
<p>三亚进出+蜈支洲岛+南山佛教文化苑+亚龙湾国际玫瑰谷+天堂森林公园+游艇出海+直升机体验双飞5日跟团游</p>
<font color="red">¥3999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="./img/jiangxuan_1.jpg">
<p>三亚进出+蜈支洲岛+南山佛教文化苑+亚龙湾国际玫瑰谷+天堂森林公园+游艇出海+直升机体验双飞5日跟团游</p>
<font color="red">¥3999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="./img/jiangxuan_1.jpg">
<p>三亚进出+蜈支洲岛+南山佛教文化苑+亚龙湾国际玫瑰谷+天堂森林公园+游艇出海+直升机体验双飞5日跟团游</p>
<font color="red">¥3999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="./img/jiangxuan_1.jpg">
<p>三亚进出+蜈支洲岛+南山佛教文化苑+亚龙湾国际玫瑰谷+天堂森林公园+游艇出海+直升机体验双飞5日跟团游</p>
<font color="red">¥3999</font>
</div>
</div>
</div>
效果图:
8.3、页脚部分
这里我直接截图同程旅游网的页脚 使用一张图片做底部就行
<!--3、页脚-->
<footer class="container-fluid">
<div class="row">
<img src="img/footerbg.png" class="img-responsive">
</div>
</footer>