五、响应式网页
解决方案:
媒体查询
@media (条件) { html { background-color: green; } }
Bootstrap
1、媒体查询
@media (媒体特性) { 选择器 { 样式 } }
媒体特性:
- 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> /* 屏幕宽度小于等于768,网页背景是粉色 → max-width */ @media (max-width: 768px) { body { background-color: pink; } } /* 屏幕宽度大于等于1200,网页背景是绿色 → min-width */ @media (min-width: 1200px) { body { background-color: green; } } </style> </head> <body> </body> </html>
书写顺序
- min-width(从小到大)
- max-width(从大到小)
案例
—— 左侧隐藏
需求:网页宽度小于等于768px则隐藏左侧区域
示例:
<!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; } @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>
完整写法 - 了解
@media 关键词 媒体类型 and (媒体特性) { CSS 代码 }
关键词 / 逻辑操作符
- and
- only
- not
媒体类型是用来区分设备类型的的,如屏幕设备、打印设备等、其中手机、电脑、平板都属于屏幕设备
类型名称 值 描述 屏幕 screen 带屏幕的设备 打印预览 打印预览模式 阅读器 speech 屏幕阅读模式 不区分类型 all 默认值,包括以上3种情形 媒体特性主要用来描述媒体类型的具体特征,如当前屏幕的宽高、分辨率、横屏或竖屏等。
特性名称 属性 值 视口的宽和高 width、height 数值 视口最大宽或高 max-width、max-height 数值 视口最小宽或高 min-width、min-height 数值 屏幕方向 orientation portrait: 竖屏
landscape: 横屏
外部CSS
<link rel="stylesheet" media="逻辑符 媒体类型 and (媒体特性)" href="xx.css">
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- 视口宽度小于等于 768px,网页背景色是粉色 --> <link rel="stylesheet" media="(max-width: 768px)" href="./pink.css"> <!-- 视口宽度大于等于 1200px,网页背景色是绿色 --> <link rel="stylesheet" media="(min-width: 1200px)" href="./green.css"> </head> <body> </body> </html>
2、Bootstrap
简介
Bootstrap 是由 Twitter 公司开发维护的前端 UI 框架,它提供了大量编写好的 CSS 样式,允许开发者结合一定 HTML 结构以及JavaScript,快速编写功能完善的网页及常见交互效果。
下载
中文官网:https://www/bootcss.com/
使用步骤:
- 下载:Bootstrap V5 中文文档 → 进入中文文档 → 下载 → 下载 Bootstrap 生产文件
- 使用
使用
使用步骤:
- 引入 Bootstrap CSS 文件
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
- 调用类名:container:响应式布局版心类
<div class="container">测试</div>
栅格系统
栅格化是指将整个王爷的宽度分成12等份,每个盒子占用的对应的份数
例如:一行排4个盒子,则每个盒子占 3份 即可(12 / 4 = 3)
Breakpoint Class infix Dimensions Extra small None <576px Small sm ≥576px Medium md ≥768px Large lg ≥992px Extra large xl ≥1200px Extra extra large xxl ≥1400px
xs sm md lg xl xxl Container max-width
None (auto) 540px 720px 960px 1140px 1320px Class prefix -col-
-col-sm-
-col-md-
-col-lg-
-col-xl-
-col-xxl-
常用布局类
- col-*-*:列(例如:col-xxl-3)
- row:行
示例:
<!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/css/bootstrap.min.css"> </head> <body> <!-- 视口宽度大于等于1200px,一行排4个盒子 视口宽度大于等于768px,一行排2个盒子 视口宽度大于等于576px,一行排1个盒子 --> <!-- 版心 → row --> <div class="container"> <div class="row"> <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>
总结:
- 栅格系统是将网页等分成 12 份。
- Bootstrap 5 中,栅格系统划分了 6 个响应区间。
全局样式
Button类
- btn:默认样式
- btn-success:成功
- btn-warning:警告
- ……
- 按钮尺寸:btn-lg / btn-sm
示例:
<!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/css/bootstrap.min.css"> </head> <body> <button class="btn btn-success btn-sm">按钮1</button> <button class="btn btn-warning btn-lg">按钮2</button> </body> </html>
效果:
表格类:
- table:默认样式
- table-striped:隔行变色
- table-success:表格颜色
- ……
示例:
<!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/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>28</td> <td>女</td> </tr> <tr> <td>王五</td> <td>18</td> <td>男</td> </tr> <tr> <td>赵六</td> <td>28</td> <td>女</td> </tr> </table> </body> </html>
效果:
组件(Components)
- 引入样式表
- 引入 js 表
- 复制结构,修改内容
示例:
<!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/css/bootstrap.min.css"> <style> .bg-body-tertiary { background-color: pink !important; } </style> </head> <body> <!-- 导航 --> <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> <!-- 轮播图 --> <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> <script src="./Bootstrap/js/bootstrap.min.js"></script> </body> </html>
效果:
字体图标
下载:
导航 / Extend:图标库 → 安装 → 下载安装包使用:
- 复制 font 文件夹到项目目录
- 网页引入 bootstrap-icon.css 文件
- 调用 CSS 类名(图标对应的类名)
<i class="bi-android2"></i>
示例:
<!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/font/bootstrap-icons.css"> <style> .bi-apple { font-size: 100px; color: red; } </style> </head> <body> <sapn class="bi-apple"></sapn> </body> </html>
效果: