Skip to content
001

14_媒体查询 + Bootstrap 框架

01_媒体查询

01_化简写法

01_媒体查询

002

媒体特性

  • 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, 网页背景色是天蓝色
image-20250108114144643

提示:

  • 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 则隐藏左侧区域

003
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_完整写法

004

关键字 / 逻辑操作符

  • and
  • only
  • not

媒体类型是用来 区分设备类型 的, 如屏幕设备, 打印设备等, 其中手机, 电脑, 平板都属于屏幕设备

005

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

006007

02_外部 CSS

008009
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, 快速 编写功能完善的 网页常见交互效果

010

中文官网:https://www.bootcss.com/


02_下载使用

01_下载使用

中文官网: https://www.bootcss.com/

使用步骤:

  1. 下载: Bootstrap V5 中文文档 ==> 进入中文文档 ==> 下载 ==> 下载 Bootstrap 生产文件
011

使用步骤:

  1. 引入 Bootstrap CSS 文件
012
  1. 调用类名: container: 响应式布局版心类
013
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)

014

常用布局类

  • 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 个 响应区间
015

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

016

04_Button 按钮样式 + table 表格样式

01_Button 按钮类

按钮样式

  • btn: 默认样式
  • btn-success: 成功
  • btn-warning: 警告

按钮尺寸

  • btn-lg: 大按钮
  • btn-sm: 小按钮
017
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: 表格颜色
018
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>

01_使用组件

  1. 引入样式表
  2. 引入 js 文件
  3. 复制结构, 修改内容
019

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

使用:

  1. 复制 fonts 文件夹 到项目目录
  2. 网页引入 bootstrap-icons.css 文件
  3. 调用 CSS 类名 (图标对应的类名)
020
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_准备工作

021
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_导航区域

022
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_轮播图区域

image-20250108145922527
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_开源项目

023
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;
      }
    }
  }
}

更新时间: