外观

14_媒体查询 + Bootstrap 框架
01_媒体查询
01_化简写法
01_媒体查询

媒体特性
max-width
: 最大宽度min-width
: 最小宽度
html
<!-- /code/test.html -->
<!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>
/* 1.屏幕宽度小于等于 768, 网页背景色是粉色 ==> max-width */
@media (max-width: 768px) {
body {
background-color: pink;
}
}
/* 2.屏幕宽度大于等于 1200, 网页背景色是绿色 ==> min-width */
@media (min-width: 1200px) {
body {
background-color: green;
}
}
</style>
</head>
<body>
</body>
</html>
02_书写顺序
需求:
- 默认网页背景色是灰色
- 屏幕宽度大于等于 768px, 网页背景色是粉色
- 屏幕宽度大于等于 992px, 网页背景色是绿色
- 屏幕宽度大于等于 1200px, 网页背景色是天蓝色

提示:
min-width (从小到大)
max-width (从大到小)
html
<!-- /code/test.html -->
<!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>
/* 1.网页默认背景色是灰色 */
body {
background-color: #ccc;
}
/* 2.屏幕宽度 大于等于 768px, 网页背景色是粉色 min */
@media (min-width: 768px) {
body {
background-color: pink;
}
}
/* 3.屏幕宽度 大于等于 992px, 网页背景色是绿色 min */
@media (min-width:992px) {
body {
background-color: green;
}
}
/* 4.屏幕宽度 大于等于 1200px, 网页背景色是天蓝色 min */
@media (min-width: 1200px) {
body {
background-color: skyblue;
}
}
</style>
</head>
<body>
</body>
</html>
02_左侧隐藏案例
01_左侧隐藏案例
需求: 网页宽度 小于等于 768px 则隐藏左侧区域

html
<!-- /code/test.html -->
<!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 {
display: flex;
}
.left {
width: 300px;
height: 500px;
background-color: pink;
}
.main {
flex: 1;
height: 500px;
background-color: skyblue;
}
/* 1.网页宽度 小于等于 768px 则隐藏左侧区域 */
@media (max-width: 768px) {
.left {
display: none;
}
}
</style>
</head>
<body>
<div class="box">
<div class="left">left</div>
<div class="main">
响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效
果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页
效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网
页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式
网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应
式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响
应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果
响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页效
果响应式网页效果响应式网页效果响应式网页效果响应式网页效果响应式网页
效果响应式网页效果响应式网页效果响应式网页效果响应式网页效果
</div>
</div>
</body>
</html>
03_完整写法 + 外部 CSS
01_完整写法

关键字 / 逻辑操作符
- and
- only
- not
媒体类型是用来 区分设备类型
的, 如屏幕设备, 打印设备等, 其中手机, 电脑, 平板都属于屏幕设备

媒体特性主要用来描述 媒体类型的具体特征
, 如当前屏幕的宽高, 分辨率, 横屏或竖屏等


02_外部 CSS


html
<!-- /code/test.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.视口宽度 小于等于 768px, 网页背景色是粉色 -->
<link rel="stylesheet" media="(max-width: 768px)" href="./pink.css">
<!-- 2.视口宽度 大于等于 1200px, 网页背景色是绿色 -->
<link rel="stylesheet" media="(min-width: 1200px)" href="./green.css">
</head>
<body>
</body>
</html>
02_Bootstrap 框架
01_简介
01_简介
Bootstrap 是由 Twitter 公司开发维护的 前端 UI 框架
, 它提供了大量 编写好的 CSS 样式
, 允许开发者结合一定 HTML 结构及 JavaScript, 快速
编写功能完善的 网页
及 常见交互效果

02_下载使用
01_下载使用
中文官网: https://www.bootcss.com/
使用步骤:
- 下载: Bootstrap V5 中文文档 ==> 进入中文文档 ==> 下载 ==> 下载 Bootstrap 生产文件

使用步骤:
- 引入 Bootstrap CSS 文件

- 调用类名:
container
: 响应式布局版心类

html
<!-- /code/test.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.引入 Bootstrap CSS 文件 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<style>
div {
height: 50px;
background-color: pink;
}
</style>
</head>
<body>
<!-- 2.调用类名: container: 响应式布局版心类 -->
<div class="container">1</div>
</body>
</html>
03_栅格系统
01_栅格系统
栅格化是指将整个网页的宽度分成 12
等份, 每个盒子占用的对应的份数
例如: 一行排 4
个盒子, 则每个盒子占 3 份
即可 (12 / 4 = 3)

常用布局类
col-*-*
: 列 (例如: col-xxl-3 )row
: 行
html
<!-- /code/test.html -->
<!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 CSS 文件 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
</head>
<body>
<!-- 1.container 版心 -->
<div class="container">
<!-- 2.roe 一行 -->
<div class="row">
<!-- 3.col-xl-3: 视口宽度大于等于 1200px, 一行排 4 个盒子 -->
<!-- 4.col-md-6: 视口宽度大于等于 768px, 一行排 2 个盒子 -->
<!-- 5.col-sm-12: 视口宽度大于等于 576px, 一行排 1 个盒子 -->
<div class="col-xl-3 col-md-6 col-sm-12">1</div>
<div class="col-xl-3 col-md-6 col-sm-12">2</div>
<div class="col-xl-3 col-md-6 col-sm-12">3</div>
<div class="col-xl-3 col-md-6 col-sm-12">4</div>
</div>
</div>
</body>
</html>
02_总结
栅格系统是将网页等分成多少份?
12 份
Bootstrap 5 中, 栅格系统划分了多少个响应区间?
6 个
响应区间

VSCode 插件: IntelliSense for cSS class names in HTML
, 写入 Bootstrap 的类名时有提示

04_Button 按钮样式 + table 表格样式
01_Button 按钮类
按钮样式
- btn: 默认样式
- btn-success: 成功
- btn-warning: 警告
按钮尺寸
- btn-lg: 大按钮
- btn-sm: 小按钮

html
<!-- /code/test.html -->
<!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 CSS 文件 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
</head>
<body>
<!-- 1.btn 默认样式, btn-success 成功, btn-sm 小按钮 -->
<button class="btn btn-success btn-sm">按钮1</button>
<!-- 2.btn 默认样式, btn-warning 警告, btn-lg 大按钮 -->
<button class="btn btn-warning btn-lg">按钮2</button>
</body>
</html>
02_table 表格类
- table: 默认样式
- table-striped: 隔行变色
- table-success: 表格颜色

html
<!-- /code/test.html -->
<!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 CSS 文件 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
</head>
<body>
<!-- 1.table 默认样式, table-striped 隔行变色, table-hover 鼠标悬停变色 -->
<table class="table table-striped table-hover">
<!-- 2.table-success 表格行颜色 -->
<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>
05_Navbar 导航组件 + Carousel 轮播图组件
01_使用组件
- 引入样式表
- 引入 js 文件
- 复制结构, 修改内容

02_Navbar 导航
html
<!-- /code/test.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.引入样式表 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<style>
/* 3.导航背景色 */
.bg-body-tertiary {
background-color: pink !important;
}
</style>
</head>
<body>
<!-- 2.Navbar 导航 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<!-- 展开导航按钮 -->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- 导航内容 -->
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">课程</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">课程资料</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">视频</a>
</li>
</ul>
</div>
</div>
</nav>
</body>
</html>
03_Carousel 轮播图
html
<!-- /code/test.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.引入样式表 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
</head>
<body>
<!-- 3.Carousel 轮播图 -->
<div id="carouselExampleIndicators" class="carousel slide">
<!-- 指示器 -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="3" aria-label="Slide 4"></button>
</div>
<!-- 图片 -->
<div class="carousel-inner">
<div class="carousel-item active">
<img src="./images/banner_1.jpg" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="./images/banner_2.jpg" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="./images/banner_3.jpg" class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="./images/banner_4.jpg" class="d-block w-100" alt="...">
</div>
</div>
<!-- 上一图, 下一图 -->
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<!-- 2.引入 js 文件 -->
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
06_字体图标
01_字体图标
下载:
- Bootstrap V5 中文文档 ==> 图标库 ==> 安装 ==> 下载最新版本的 ZIP 压缩包 ==> bootstrap-icons-1.11.3.zip
使用:
- 复制
fonts 文件夹
到项目目录- 网页引入
bootstrap-icons.css
文件- 调用
CSS 类名
(图标对应的类名)

html
<!-- /code/test.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.引入 bootstrap-icons.css 文件 -->
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<style>
/* 3.展示的是图标, 本质是字体 */
.bi-android2 {
font-size: 100px;
color: green;
}
</style>
</head>
<body>
<!-- 2.调用 CSS 类名 (图标对应的类名) -->
<span class="bi-android2"></span>
</body>
</html>
03_腾讯前端网页
01_准备工作
01_准备工作

html
<!-- /code/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>腾讯全端</title>
</head>
<!-- 1.网页图标 link:favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<!-- 2.层叠性: 咱们的 css 要 层叠 框架的 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<link rel="stylesheet" href="./css/index.css">
<body>
<!-- 3.引入 Bootstrap 的 js 文件 -->
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
02_导航区域
01_导航区域

html
<!-- /code/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>腾讯全端</title>
</head>
<!-- 网页图标 link:favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<!-- 层叠性: 咱们的 css 要 层叠 框架的 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<link rel="stylesheet" href="./css/index.css">
<body>
<!-- 1.导航区域 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
<!-- 版心 -->
<div class="container">
<!-- 图 -->
<a class="navbar-brand" href="#"><img src="./assets/images/logo.png" alt=""></a>
<!-- 展开导航按钮 -->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- 导航内容 -->
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">博客</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Github</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">TWeb Conf</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">SuperStar</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Web 前端导航</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">关于</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- 引入 Bootstrap 的 js 文件 -->
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
less
// /code/less/index.less
// 2.导航区域
.bg-body-tertiary {
background-color: pink !important;
.navbar-collapse {
flex-grow: 0;
}
}
03_轮播图区域
01_轮播图区域

html
<!-- /code/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>腾讯全端</title>
</head>
<!-- 网页图标 link:favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<!-- 层叠性: 咱们的 css 要 层叠 框架的 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<link rel="stylesheet" href="./css/index.css">
<body>
<!-- 导航区域 -->
<!-- ...... -->
<!-- 1.轮播图区域 -->
<div id="carouselExampleIndicators" class="carousel slide">
<!-- 指示器 -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="3" aria-label="Slide 4"></button>
</div>
<!-- 图片 -->
<div class="carousel-inner">
<div class="carousel-item active"></div>
<div class="carousel-item"></div>
<div class="carousel-item"></div>
<div class="carousel-item"></div>
</div>
<!-- 上一图, 下一图 -->
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<!-- 引入 Bootstrap 的 js 文件 -->
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
less
// /code/less/index.less
// 2.轮播图区域
.carousel {
// 响应式 ==> 媒体查询 (视口宽度小于 768px 图片高度 250px; 视口宽度大于等于 768px 图片高度 400px; 视口宽度大于等于 992px 图片高度 500px)
@media (max-width: 768px) {
.carousel-item {
height: 250px;
}
}
@media (min-width: 768px) {
.carousel-item {
height: 400px;
}
}
@media (min-width: 992px) {
.carousel-item {
height: 500px;
}
}
// 轮播图
.carousel-item {
// height: 500px;
background-size: cover;
background-position: center 0;
}
.carousel-item:nth-child(1) {
background-image: url(../assets/uploads/banner_1.jpg);
}
.carousel-item:nth-child(2) {
background-image: url(../assets/uploads/banner_2.jpg);
}
.carousel-item:nth-child(3) {
background-image: url(../assets/uploads/banner_3.jpg);
}
.carousel-item:nth-child(4) {
background-image: url(../assets/uploads/banner_4.jpg);
}
}
.bg-body-tertiary {
// 导航透明
background-color: transparent !important;
}
04_开源项目
01_开源项目

html
<!-- /code/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>腾讯全端</title>
</head>
<!-- 网页图标 link:favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<!-- 层叠性: 咱们的 css 要 层叠 框架的 -->
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<link rel="stylesheet" href="./css/index.css">
<body>
<!-- 导航区域 -->
<!-- ...... -->
<!-- 轮播图区域 -->
<!-- ...... -->
<!-- 1.开源项目 (版心) -->
<div class="project container">
<div class="title">
<h2>OpenSource / 开源项目</h2>
<p>种类众多的开源项目, 让你爱不释手</p>
</div>
<div class="content">
<!-- roe 一行 -->
<div class="row">
<!-- 视口宽度大于 992px; 一行排 4 个盒子, col-lg-3 -->
<!-- 视口宽度大于 768px; 一行排 2 个盒子, col-md-6 -->
<div class="col-lg-3 col-md-6"><a href="#">1</a></div>
<div class="col-lg-3 col-md-6"><a href="#">1</a></div>
<div class="col-lg-3 col-md-6"><a href="#">1</a></div>
<div class="col-lg-3 col-md-6"><a href="#">1</a></div>
</div>
</div>
</div>
<!-- 引入 Bootstrap 的 js 文件 -->
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
less
// /code/less/index.less
// 2.开源项目
.project {
margin-top: 60px;
text-align: center;
.row {
div {
margin-bottom: 10px;
height: 200px;
// background-color: pink;
a {
// 块级的宽度和父级一样大
display: block;
height: 200px;
background-color: green;
border-radius: 4px;
}
&:nth-child(1) a {
background-color: #70c3ff;
}
&:nth-child(2) a {
background-color: #fd6a7f;
}
&:nth-child(3) a {
background-color: #7f8ea0;
}
&:nth-child(4) a {
background-color: #89d04f;
}
}
}
}