一套代码可以适配不同大小的屏幕和设备
一、媒体查询
1、媒体查询
目标:能够根据设备宽度的变化,设置差异化样式
之前的媒体查询,通过检测视口宽度设置根字号
在响应式布局中,媒体查询是一个范围。
- 媒体特性常用写法
max-width
min-width
它能实现比如说宽度小于670px时,网页背景色为蓝色
<style>
@media(max-width:670px){
body{
background-color: aqua;
}
}
</style>
2、书写顺序
需求
默认网页背景色是灰色
屏幕宽度在768-992之间, 网页背景色是粉色
屏幕宽度在992-1200之间, 网页背景色是skyblue
屏幕宽度大于1200, 网页背景色是绿色
<style>
@media(min-width:768px){ ①
body{
background-color: pink;
}
}
@media (min-width:992px) { ②
body{
background-color: skyblue;
}
}
@media (min-width:1200px) { ③
body{
background-color: green;
}
}
</style>
如果这三个媒体查询书写顺序变了,就不会有这样的效果,因为css有层叠性,如果先写③,再写①②,③会被②覆盖,导致大于992px都是蓝色。
所以
min-width(从小到大)
max-width(从大到小)
3、(了解)完整写法
-
关键字:and、only、not
-
媒体类型:媒体是用来区分设备类型的,如屏幕设备、打印设备等,其中手机、电脑、平板都属于屏幕设备
-
媒体特性:主要用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏等
4、外链式CSS引入
上面的媒体查询写法都是在style中直接写的,可以使用外链式引入
如大于等于992粉色,大于等于1200绿色
<!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">
<title>Document</title>
<link rel="stylesheet" href="./a.css" media="(min-width:992px)">
<link rel="stylesheet" href="./b.css" media="(min-width:1200px)">
<style>
</style>
</head>
<body>
</body>
</html>
5、隐藏
一般电商网站,如果宽度变小,有的小banner图就会隐藏
如下图,想要实现随着窗口变小,左边蓝色的框框隐藏的效果
<style>
*{
padding: 0;
margin: 0;
}
.box{
display: flex;
width: 100%;
}
.left{
width: 300px;
min-height: 500px;
background-color: aqua;
}
.right{
flex: 1;
min-height: 500px;
background-color: blueviolet;
}
@media(max-width:500px){ //小于一定宽度,隐藏
.left{
display: none;
}
}
</style>
<body>
<div class="box">
<div class="left"></div>
<div class="right">dknsnfknfcjdfkvnjfvbfjvbofjropir3pf43pojf3ofjiogjtrkghtrjghiughtuihgtuigtruihreiofroir4-frjirogvjiojvbgibhfgioeir0i03</div>
</div>
</body>
二、BootStrap
1、UI框架概念
将常见效果进行统一封装后形成的一套代码, 例如:BootStrap。
作用:基于框架开发,效率高,稳定性高。
2、BootStrap简介
Bootstrap 是由 Twitter 公司开发维护的前端 UI 框架,它提供了大量编写好的 CSS 样式,允许开发者结合一定HTML 结构及JavaScript,快速编写功能完善的网页及常见交互效果。
中文官网: https://www.bootcss.com/
- 下载
- 使用步骤
- 引入: BootStrap提供的CSS代码
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
调用只能bootstrap.css或者bootstrap.min.css,bootstrap.min.css是压缩过的bootstrap.css,体积小,方便用户下载
- 调用类:使用BootStrap提供的样式
container:响应式布局版心类
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
<style>
div{
background-color: pink;
height: 50px;
}
</style>
</head>
<body>
<div class="container">1</div>
</body>
</html>
3、BootStrap栅格系统
目标:使用BootStrap栅格系统布局响应式网页
栅格化是指将整个网页的宽度分成若干等份
BootStrap3默认将网页分成12等份
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
<style>
.container div{
background-color: pink;
height: 50px;
}
</style>
</head>
<body>
<div class="container">
<div class="col-lg-3 col-md-6 col-sm-12">1</div>
<div class="col-lg-3 col-md-6 col-sm-12">2</div>
<div class="col-lg-3 col-md-6 col-sm-12">3</div>
<div class="col-lg-3 col-md-6 col-sm-12">4</div>
</div>
</body>
</html>
当视口宽度大于1200时:
当视口宽度位于992-1200px时:
当视口宽度小于992时:
3、其他类名
- .container是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。
- .container-fluid也是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,宽度均为 100%。
- 分别使用.row类名和 .col类名定义栅格布局的行和列。
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css">
<style>
div{
background-color: pink;
height: 50px;
margin-bottom: 50px;
}
</style>
</head>
<body>
<!-- container有内边距15px -->
<div class="container">1</div>
<!-- 使用.row将有-15的外边距,可以抵消container的内边距 -->
<div class="container">
<div class="row">2</div>
</div>
<!-- container-fluid宽度100%,左右各15px内边距 -->
<div class="container-fluid">3</div>
</body>
</html>
4、全局样式
目标:掌握BootStrap手册用法,使用全局CSS样式美化标签
手册用法:
BootStrap预定义了大量类用来美化页面,掌握手册的查找方法是学习全局样式的重点。
网站首页 → BootStrap3中文文档 → 全局CSS样式 → 按分类导航查找目标类
使用方法
引入BootStrap样式
引入对应的效果名称作为类名
- 表格
table : 基本类名, 初始化表格默认样式
table-bordered : 边框线
table-striped : 隔行变色
table-hover : 鼠标悬停效果
table-responsive : 表格宽溢出滚动
如新建一个表格,隔行变色
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"> ①
<style>
</style>
</head>
<body>
<table class="table table-striped"> //here ②
<tr>
<th>数字1</th>
<th>数字2</th>
<th>数字3</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
</body>
</html>
- 按钮
btn : 基准样式
btn-info; btn-success : 设置按钮背景色
btn-block : 设置按钮为块元素
btn-lg; btn-sm; btn-xs : 设置按钮大小
还有很多全局CSS样式,都可以通过手册查看并引用
5、组件
目标:使用BootStrap组件快速布局网页,包括字体图标、下拉菜单、导航、警告框、弹出框等更多功能
- 组件
BootStrap提供的常见功能,包含了HTML结构和CSS样式。 - 使用方法
引入BootStrap样式
复制结构,修改内容
(1)字体图标使用
- Glyphicons字体图标的使用步骤
- HTML页面引入BootStrap样式文件(注意路径css/bootstrap.min.css)
- 空标签调用对应类名
glyphicon
图标类
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"> ①
</head>
<body>
<i class="glyphicon glyphicon-plus"></i> ②
</body>
</html>
(2)下拉菜单
- 使用方法
引入BootStrap样式
复制结构,修改内容
6、插件
实现常见的交互效果,如下拉菜单下拉后弹出子菜单
BootStrap提供的常见效果, 包含了HTML结构,CSS样式与JavaScript
- 插件的使用步骤
①引入BootStrap样式
②引入js文件:jQuery.js + BootStrap.min.js(顺序不能颠倒)
③复制HTML结构, 并适当调整结构或内容
(1)利用插件实现下拉菜单
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"> ①
</head>
<body>
<div class="dropdown">
<button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dLabel"> ③
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
<script src="./移动端/js/jquery.js"></script> ②
<script src="./移动端/04-框架素材/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</body>
</html>
(2)利用插件实现轮播图
<!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">
<title>Document</title>
<link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"> ①
</head>
<body>
<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="./product.jpeg" alt="..."> ③
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./bg.png" alt="...">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="./taobao.png" 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>
<script src="./移动端/js/jquery.js"></script> ②
<script src="./移动端/04-框架素材/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</body>
</html>
7、实战演练 AlloyTeam
(1)轮播图(JS插件)
- ①去bootcss拷贝轮播图的代码
- ②发现需求和已有模板不同,需求:
// 视口<768 高250
// 视口<992 高400
// 视口>992 高500
所以在css中写媒体查询
一般改变高度都是改面的大盒子,然后让里面的内容,如图片100%充满
@media(max-width:992px){
.item{
height:400px;
}
}
@media(max-width:768px){
.item{
height: 250px;
}
}
@media(min-width:992px){
.item{
height: 500px;
}
}
- ③发现图没有撑满,找到其标签让它100%
img{
height: 100%!important; //!important可以提高等级,防止等级不够
}
- ④还有其他一些小的格式的不同,如框架代码下面是圆点滑动,这里只需根据检查需求样式,找到选择器再添加宽高。
(2)导航(组件)
- ① 在组件里面找到导航,修修改改,找到多余的类名删掉,少的找类似的复制添加
- ②导航条固定在顶端,找框架复制黏贴改格式,修改颜色从最大的盒子往里面找
- ③此项目在视口小于992px时,导航条会折叠,boot框架默认在768折叠,定制解决,修改这个值。
然后重新下载,解压,重新引入(link)
(3)栅栏式,使用BootStrap快速布局网页
视口宽度>992时,一行排四个
视口宽度>768时,一行排两个
视口宽度<768时,一行排一个
<div class="container">
<div class="col-xs-12 col-sm-6 col-md-3"><a href="#">1</a></div>
<div class="col-xs-12 col-sm-6 col-md-3"><a href="#">2</a></div>
<div class="col-xs-12 col-sm-6 col-md-3"><a href="#">3</a></div>
<div class="col-xs-12 col-sm-6 col-md-3"><a href="#">4</a></div>
</div>
加个背景,效果如下图
发现自带间隙,是因为col类有自带空白,并且这个空白不能通过给div加margin实现,因为col实现一行四个是通过width:25%,没有地方加margin,是里面的内容的padding形成有空白的视觉效果。
不过这个col类自带padding:-15,不用另外加了。
(4)适合做成响应式的网站:
①企业站
②内容少
电商站内容太多,不合适,一般是PC端一个网站,移动端一个网站。