2、响应式布局
2.1、什么响应式布局
响应式布局是一种网页设计的方法,能够使网站在不同的设备上(如桌面电脑、平板电脑、手机等)呈现出最佳的用户体验。其核心思想是使网页能够根据用户的设备和屏幕尺寸自动调整布局和内容,以适应不同的屏幕大小和分辨率。
根据获取屏幕的宽度、调整页面布局、其核心就是利用媒体查询、让对应的css
生效、来达到响应式的效果
例如 https://alloyteam.com/ 腾讯全端这个网站、他只有一个页面、在不同设备下、进行来回的相应。
市面上如京东、淘宝、他们都是有两个团队、开发了两套页面,其目的是、给与用户更好的体验。但是非常的耗费开发成本。
2.2、媒体查询
我们实现响应式布局的核心就是采用媒体查询动态的监听、我们视口的宽度,来达到响应式的效果
前面讲移动端适配的时候我们学习过了媒体查询,只不过当时我们写的都是固定的值,如下
@media(width:1000px){body{background-color:pink}
}
缺点是,我正好是1000的时候变化,或者800的时候变化、那八百到1000怎么办?
我们能不能写一个范围值
开发当中的常用写法 max-width 最大宽度 / min-width 最小宽度
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* @media (width:1000px) {body{background-color: pink;}} *//* 视口宽度小于等于768px,网页颜色为绿色 d最大是768px */@media(max-width:768px){body{background-color: pink;}}/* 视口的宽度大于等于1200,网页颜色为红色 */@media(min-width:1200px){body{background-color: red;}}</style>
</head>
<body><!-- 小于等于用max-width 大于等于用min-width -->
</body>
</html>
2.3、媒体查询的顺序问题
同时满足两个、后写的的样式层叠掉写先写的样式、比如、1300满足大于1200、也满足大于900,因为900这个是后写的所以1200设置的这个媒体查询不会生效
写min-width 从小到大、写max-width 从大到小
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 如果我们,我们先设置了最小宽度是red,就是小于等于1200w往下的都是红色,你会发现,red没了,假如你宽度为900,他满足大于等于1200,有满足,大于等于992, 原因是样式层叠了*//* 视口宽度>=1200px 背景颜色为红色 */@media(min-width:1200px){body{background-color: red;}}/* 视口宽度<768px 背景颜色为黄色 */@media(max-width:768px){body{background-color: yellow;}}/* 视口宽度>=768px 背景颜色为粉色 */@media(min-width:768px){body{background-color: pink;}}/* 视口宽度>=992px 背景颜色为蓝色 */@media(min-width:992px){body{background-color: blue;}}</style>
</head>
<body></body>
</html>
2.4、媒体查询完整写法
@media mediatype and|not|only (media feature){css-code;
}
关键词
and:用于将多个媒体查询规则组合成单条媒体查询
not:用于否定媒体查询,如果不满足这个条件则返回true,否则返回false。
only:仅在整个查询匹配时才用于应用样式。
, (逗号):逗号用于将多个媒体查询合并为一个规则。
<style>/*比如下面表示:屏幕宽度大于500,小于700的时候,body背景颜色为红色;*/@media (min-width: 500px) and (max-width: 800px) {body {background-color: orange;}}
</style>
媒体类型
媒体是用来区分设备类型的,如屏幕设备、打印设备等,其中手机、电脑、平板都属于屏幕设备。
媒体特征
媒体特性主要用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏等。
2.5、外链式媒体查询
格式:
<link rel="stylesheet" media="逻辑符 媒体类型 and (媒体特性)" href="xx.css">
例子:
<link rel="stylesheet" href="./one" media="screen and (min-width:992px)">
<link rel="stylesheet" href="./one" media="screen and (min-width:120px)">
媒体查询通常配合rem来使用
2.6、京东盒子隐藏案例
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;}.box{width: 1190px;height: 480px;background-color: pink;margin: 0 auto;display: flex;justify-content: space-between;margin-top: 100px;}.a1{width: 190px;height: 480px;background-color: yellow;}.a2{width: 590px;height: 480px;background-color: skyblue;}.a3{width: 190px;height: 480px;background: purple;}.a4{width: 190px;height: 480px;background-color: red;}/* 小于等于1348px时,我们就让a3这个盒子消失 */@media (max-width: 1348px) {.a3{display: none;}.box{width: 990px;}}</style>
</head>
<body><div class="box"><div class="a1"></div><div class="a2"></div><div class="a3"></div><div class="a4"></div></div>
</body>
</html>
2.7、bootstrap概述
1、UI
框架的基本概念
什么是UI
框架
将常见效果进行统一封装后形成的一套代码,例如:BootStrap
UI
框架的作用
基于框架开发,效率高、稳定性高
BootStrap
的作用
主要是做我们响应式网站的开发
2、Bootstrap简介
Bootstrap
是由Twitter公司开发维护的前端UI
框架,他提供了大量==编写好的CSS
样式,允许开发者结合一定的HTML结构==及JavaScript,快速编写功能完善的网页
及常见的交互效果
中文官网:https://www.bootcss.com/
现在的Bootstrap已经出到第五个版本了,但是我们一般用的话还是用Bootstrap5
,原因是他比较稳定
3、Bootstrap下载
生产环境用第一个、因为是压缩过的,上传下载速度回很快、如果你要看源码,就第二个、如果说你有Sass项目要用他,就用第三个
下载下来的目录结构
2.8、bootstrap初体验
运行如下代码你会发现、我们并没有给div设置宽度、但是他不是一个通栏的盒子、这是因为,bootstrap给他设置了,盒子的宽度
.container是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,默认已被指定宽度且居中。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 引入bootstrap文件 --><link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"><style>.container{height: 40px;background-color: pink;}</style>
</head>
<body><div class="container"></div>
</body>
</html>
2.9、bootstrap栅格系统
Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport
)尺寸的增加,系统会自动分为最多12列。
简述为栅格化是指将网页的宽度分成若干等份,BootStrap3
默认将网页分成了12等份
栅格系统(grid systems),也叫“网格系统,它是通过一系列的行(row)与列(column)的组合创建页面布局。 我们的内容可以直接放入BootStrap
栅格系统面。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 引入bootstrap文件 --><link rel="stylesheet" href="./bootstrap-3.4.1-dist/css/bootstrap.min.css"><style>.container div{height: 50px;background-color: pink;}</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>
container-fluid也是 Bootstrap 中专门提供的类名,所有应用该类名的盒子,宽度均为 100%。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><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{height: 50px;background-color: pink;}.container-fluid{height: 50px;background-color: blue;}</style>
</head>
<body><!-- 版心盒子 有宽度,且居中 --><div class="container">111</div><!-- 通栏的盒子 注意:左右自带padding值15px css3的盒子模型:box-sizing:border-box;边框往内收--><div class="container-fluid">222</div></body>
</html>
分别使用.row类名和 .col类名定义栅格布局的行和列。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><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{height: 50px;background-color: pink;}.container-fluid{height: 50px;background-color: blue;}.abc{background-color: red;height: 50px;}.abc div{height: 50px;background-color: yellow;}</style>
</head>
<body><!-- 版心盒子 有宽度,且居中 --><div class="container">111</div><!-- 通栏的盒子 注意:左右自带padding值15px css3的盒子模型:box-sizing:border-box;边框往内收--><div class="container-fluid">222</div><div class="container abc"><!-- row 会把container的padding值去掉 --><div class="row"></div></div>
</body>
</html>
2.1、使用全局样式
BootStrap预定义了大量类用来美化页面,掌握手册的查找方法是学习全局样式的重点。
网站首页 → BootStrap3
中文文档 → 全局CSS样式
→ 按分类导航查找目标类
全局样式分为、布局样式和内容美化样式,
按钮样式
btn
: 基准样式btn-info; btn-success
: 设置按钮背景色btn-block
: 设置按钮为块元素btn-lg; btn-sm; btn-xs
: 设置按钮大小
<button class="基本样式类,具体样式类">成功</button>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><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{margin-top: 100px;/* height: 50px;background-color: pink; */}</style></style>
</head>
<body><div class="container"><!-- 表示成功或积极的操作 --><button type="button" class="btn btn-success">(成功)Success</button></div>
</body>
</html>
表格
table
: 基本类名, 初始化表格默认样式table-bordered
: 边框线table-striped
: 隔行变色table-hover
: 鼠标悬停效果table-responsive
: 表格宽溢出滚动
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><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><table class="table table-striped table-hover"><!-- 表头类名 --><tr class="table-success"><th>姓名</th><th>年龄</th><th>性别</th></tr><tr><td>张三</td><td>18</td><td>男</td></tr><tr><td>李四</td><td>20</td><td>女</td></tr><tr><td>王五</td><td>18</td><td>男</td></tr><tr><td>赵六</td><td>20</td><td>女</td></tr> </table>
</body>
</html>
表单
form-control
: 设置表单元素input, select, textarea
的样式
checkbox 和 radio
: 设置复选框和单选框的样式
form-inline
: 设置表单元素水平排列
disabled
: 设置表单禁用状态样式
input-lg; input-sm, input-sm
: 设置表单元素的大小
<form class="form-inline"><div class="form-group"><label class="sr-only" for="exampleInputEmail3">Email address</label><input type="email" class="form-control" id="exampleInputEmail3" placeholder="Email"></div><div class="form-group"><label class="sr-only" for="exampleInputPassword3">Password</label><input type="password" class="form-control" id="exampleInputPassword3" placeholder="Password"></div><div class="checkbox"><label><input type="checkbox"> Remember me</label></div><button type="submit" class="btn btn-default">Sign in</button>
</form>
图片美化
img-responsive
: 图片自适应img-rounded
: 图片设置圆角img-circle
: 图片设置正圆img-thumbnail
: 图片添加边框线
布局辅助类
- pull-right : 强制元素右浮动
- pull-left : 强制元素左浮动
- clearfix : 清除浮动元素的影响
- text-left文 : 本左对齐
- text-right : 文本右对齐
- text-center : 文本居中对齐
- center-block : 块元素居中
布局响应式工具
- 不同屏幕尺寸隐藏或显示页面内容
2.2、组件
什么是组件?
所谓组件就是:BootStrap
提供的常见功能,包含了HTML
结构和CSS
样式。
使用方式?
引入BootStrap
样式
复制结构,修改内容
其中包含例如、轮播图组件、导航组件、代码过去简单不在粘贴
2.3、字体图标
Glyphicons
字体图标的使用步骤
- HTML页面引入BootStrap样式文件
- 空标签调用对应类名
- 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>字体图标</title><link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css"><style>.bi-android2 {font-size: 100px;color: green;}</style></head><body><span class="bi-android2"></span></body>
</html>
2.4、插件
BootStrap
提供的常见效果, 包含了HTML结构,CSS
样式与JavaScript
插件的使用步骤
- 引入
BootStrap
样式 - 引入
js
文件:jQuery.js
+BootStrap.min.js
复制HTML结构, 并适当调整结构或内容
2.5、定制
我们可以能够根据项目需求定制bootstrap框架
导航菜单 → 定制
输入目标变量值
编译并下载,使用定制后的框架