16-前端核心技术-Bootstrap框架

第16章-前端核心技术-Bootstrap框架

学习目标

  1. 掌握Bootstrap导航元素 重点
  2. 掌握Bootstrap下拉菜单 重点
  3. 掌握Bootstrap提示工具
  4. 掌握Bootstrap弹出框提示
  5. 掌握Bootstrap轮播图效果 重点
  6. 掌握Bootstrap模态框 重点
  7. 掌握Bootstrap分页插件
  8. 掌握Bootstrap文件上传插件
  9. 掌握Bootstrap网格排版
  10. 掌握Bootstrap表格列表属性 重点
  11. 掌握Bootstrap图文排版
  12. 掌握Bootstrap辅助属性
  13. 掌握Bootstrap标签属性
  14. 掌握Bootstrap表格样式
  15. 掌握Bootstrap字体图标 重点

Bootstrap 概述

Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的一个用于快速开发 Web 应用程序和网站的前端框架。

官网:https://v4.bootcss.com/

为了让 Bootstrap 开发的网站对移动设备友好,确保适当的绘制和触屏缩放,需要在网页的 head 之中添加 viewport meta 标签,如下所示:

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  • width :控制设备的宽度。为了在不同屏幕分辨率的设备浏览,设置为 device-width。
  • initial-scale=1.0 : 确保网页加载时,以 1:1 的比例呈现,不会有任何的缩放。
  • user-scalable=no : 可以禁用其缩放(zooming)功能。
  • maximum-scale=1.0 : 与user-scalable=no 一起使用。这样禁用缩放功能后,用户只能滚动屏幕,能让网站看上去更像原生应用的感觉。这种方式我们并不推荐所有网站使用,还是要看您自己的情况而定!
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

支持的浏览器

Bootstrap4 支持所有主流浏览器和平台的 最新、稳定版本。在 Windows 上,支持 Internet Explorer 10-11 / Microsoft Edge 浏览器。

对于其它使用了最新版本的 WebKit、Blink 或 Gecko 内核的浏览器,或者直接或间接调用了平台的 web view API,都不是明确被支持的。但是,Bootstrap4 应该(大多数情况下)在这些浏览器中是能够正常显示和运行的。

移动设备 Chrome Firefox Safari Android Browser & WebView Microsoft Edge
Android 支持 支持 N/A Android v5.0+ supported 支持
iOS 支持 支持 支持 N/A 支持
Windows 10 Mobile N/A N/A N/A N/A 支持
PC设备 Chrome Firefox Internet Explorer Microsoft Edge Opera Safari
Mac 支持 支持 N/A 支持 支持 支持
Windows 支持 支持 支持, IE10+ 支持 支持 不支持

Bootstrap 安装

bootstrap依赖于Jquery框架,如果没有jquery框架bootstrap的js将无法正常运行,所以需要先下载引入Jquery。下载地址:https://jquery.com/download/

下载jquery后再下载bootstrap的源码,并且引入到项目中才能正常使用,下载地址:https://v4.bootcss.com/docs/getting-started/download/

下载完成后,将如下文件复制到项目即可。

image-20210914113243849

下载完成后,再需要使用bootstrap的页面中引入即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Jquery + Bootstrap</title>
		<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="font/bootstrap-icons.css" />
	<span class="hljs-tag">&lt;<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"jquery/jquery-3.6.0.min.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><span class="javascript"></span><span class="hljs-tag">&lt;/<span class="hljs-title">script</span>&gt;</span>
	<span class="hljs-tag">&lt;<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"js/bootstrap.min.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><span class="javascript"></span><span class="hljs-tag">&lt;/<span class="hljs-title">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span>

</html>

Bootstrap 基础

边距

包括内外边距:

  • m - 对于设置的类 margin
  • p - 对于设置的类 padding

其中*边*是以下之一:

  • t- 对于设置margin-toppadding-top
  • b- 对于设置margin-bottompadding-bottom
  • l- 对于设置margin-leftpadding-left
  • r- 对于设置margin-rightpadding-right
  • x- 对于同时设置*-left和的类*-right
  • y- 对于同时设置*-top和的类*-bottom
  • 空白 - 对于在元素的所有 4 边设置 amargin或 的类padding

其中*size*是以下之一:

  • 0- 对于消除marginpadding通过将其设置为的类0
  • 1-(默认情况下)对于将margin或设置padding$spacer * .25
  • 2-(默认情况下)对于将margin或设置padding$spacer * .5
  • 3-(默认情况下)对于将margin或设置padding$spacer
  • 4-(默认情况下)对于将margin或设置padding$spacer * 1.5
  • 5-(默认情况下)对于将margin或设置padding$spacer * 3
  • auto- 对于设置margin为自动的类

如:

1
2
3
4
<div class="row m-3">
    <div class="col px-5 p-2 border"><div class="p-3 border bg-light">Custom column padding</div></div>
    <div class="col px-5 p-2 border"><div class="p-3 border bg-light">Custom column padding</div></div>
</div>

效果展示

image-20210914192400936

文字颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
<p class="text-primary">.text-primary</p>
<p class="text-secondary">.text-secondary</p>
<p class="text-success">.text-success</p>
<p class="text-danger">.text-danger</p>
<p class="text-warning">.text-warning</p>
<p class="text-info">.text-info</p>
<p class="text-light bg-dark">.text-light</p>
<p class="text-dark">.text-dark</p>
<p class="text-body">.text-body</p>
<p class="text-muted">.text-muted</p>
<p class="text-white bg-dark">.text-white</p>
<p class="text-black-50">.text-black-50</p>
<p class="text-white-50 bg-dark">.text-white-50</p>

效果展示

image-20210914190849195

背景颜色

1
2
3
4
5
6
7
8
9
10
<div class="p-2 m-2 bg-primary text-white">.bg-primary</div>
<div class="p-2 m-2 bg-secondary text-white">.bg-secondary</div>
<div class="p-2 m-2 bg-success text-white">.bg-success</div>
<div class="p-2 m-2 bg-danger text-white">.bg-danger</div>
<div class="p-2 m-2 bg-warning text-dark">.bg-warning</div>
<div class="p-2 m-2 bg-info text-white">.bg-info</div>
<div class="p-2 m-2 bg-light text-dark">.bg-light</div>
<div class="p-2 m-2 bg-dark text-white">.bg-dark</div>
<div class="p-2 m-2 bg-white text-dark">.bg-white</div>
<div class="p-2 m-2 bg-transparent text-dark">.bg-transparent</div>

效果展示

image-20210914191422491

显示隐藏

Screen Size Class
Hidden on all .d-none
Hidden only on xs .d-none .d-sm-block
Hidden only on sm .d-sm-none .d-md-block
Hidden only on md .d-md-none .d-lg-block
Hidden only on lg .d-lg-none .d-xl-block
Hidden only on xl .d-xl-none
Visible on all .d-block
Visible only on xs .d-block .d-sm-none
Visible only on sm .d-none .d-sm-block .d-md-none
Visible only on md .d-none .d-md-block .d-lg-none
Visible only on lg .d-none .d-lg-block .d-xl-none
Visible only on xl .d-none .d-xl-block

如:

1
2
<div class="d-lg-none">hide on lg and wider screens</div>
<div class="d-none d-lg-block">hide on screens smaller than lg</div>

其他

描述
.pull-left 元素浮动到左边
.pull-right 元素浮动到右边
.center-block 设置元素为 display:block 并居中显示
.clearfix 清除浮动
.show 强制元素显示
.hidden 强制元素隐藏
.sr-only 除了屏幕阅读器外,其他设备上隐藏元素
.sr-only-focusable 与 .sr-only 类结合使用,在元素获取焦点时显示(如:键盘操作的用户)
.text-hide 将页面元素所包含的文本内容替换为背景图
.close 显示关闭按钮
.caret 显示下拉式功能

Bootstrap 布局

Bootstrap有三个不同的容器

  • .container, 带有最大宽度 max-width 的响应式模块,每种尺寸最大宽度不同
  • .container-fluid, 带有宽度 width: 100% 的响应式模块
  • .container-type, 带有宽度 width: 100% 的响应式模块,每种尺寸最大宽度不同
类型 特小 <576px 小 ≥576px 中等 ≥768px 大 ≥992px 超大 ≥1200px
.container 100% 540px 720px 960px 1140px
.container-sm 100% 540px 720px 960px 1140px
.container-md 100% 100% 720px 960px 1140px
.container-lg 100% 100% 100% 960px 1140px
.container-xl 100% 100% 100% 100% 1140px
.container-fluid 100% 100% 100% 100% 100%

根据不同的尺寸可以将整个页面分为几种不同的类型

内容 特小 <576px 小 ≥576px 中等 ≥768px 大 ≥992px 超大 ≥1200px
最大宽度 None (auto) 540px 720px 960px 1140px
class属性前缀 .col- .col-sm- .col-md- .col-lg- .col-xl-
总列数 12 12 12 12 12
每列间距 30px 30px 30px 30px 30px
可嵌套 Yes Yes Yes Yes Yes
列有序 Yes Yes Yes Yes Yes

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="container">
  <div class="row">
    <div class="col">
      1 of 3
    </div>
    <div class="col-6">
      2 of 3 (wider)
    </div>
    <div class="col">
      3 of 3
    </div>
  </div>
</div>

效果展示

image-20210914115831776

Bootstrap 按钮

Bootstrap 内置了几种预定义的按钮样式,每种样式都有自己的语义目的

描述
.btn 为按钮添加基本样式
.btn-default 默认/标准按钮
.btn-primary 原始按钮样式(未被操作)
.btn-success 表示成功的动作
.btn-info 该样式可用于要弹出信息的按钮
.btn-warning 表示需要谨慎操作的按钮
.btn-danger 表示一个危险动作的按钮操作
.btn-link 让按钮看起来像个链接 (仍然保留按钮行为)
.btn-lg 制作一个大按钮
.btn-sm 制作一个小按钮
.btn-xs 制作一个超小按钮
.btn-block 块级按钮(拉伸至父元素100%的宽度)
.active 按钮被点击
.disabled 禁用按钮
.text-nowrap 按钮文字不换行
.btn-outline-[type] 带轮廓线的按钮,如:btn-outline-primary

如:

1
2
3
4
5
6
7
8
9
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>

效果展示

image-20210914135928813

1
2
3
4
5
6
7
8
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-outline-success">Success</button>
<button type="button" class="btn btn-outline-danger">Danger</button>
<button type="button" class="btn btn-outline-warning">Warning</button>
<button type="button" class="btn btn-outline-info">Info</button>
<button type="button" class="btn btn-outline-light">Light</button>
<button type="button" class="btn btn-outline-dark">Dark</button>

效果展示

image-20210914140349935

按钮组

按钮组可以管理一组按钮的特性,通过.btn-group定义按钮组。通过.btn-toolbar定义工具类,工具类中使用按钮组是很好的搭配组合。同时可以使用mr-[1-5]ml-[1-5]mt-[1-5]mb-[1-5]等添加外边距

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="btn-toolbar">
  <div class="btn-group mr-2">
    <button type="button" class="btn btn-secondary">1</button>
    <button type="button" class="btn btn-secondary">2</button>
    <button type="button" class="btn btn-secondary">3</button>
    <button type="button" class="btn btn-secondary">4</button>
  </div>
  <div class="btn-group mr-2">
    <button type="button" class="btn btn-secondary">5</button>
    <button type="button" class="btn btn-secondary">6</button>
    <button type="button" class="btn btn-secondary">7</button>
  </div>
  <div class="btn-group">
    <button type="button" class="btn btn-secondary">8</button>
  </div>
</div>

Bootstrap 导航

Bootstrap 中的导航组件都依赖同一个 .nav 类,状态类也是共用的。改变修饰类可以改变样式。

面包屑导航(Breadcrumb)

使用 .breadcrumb 定义面包屑导航

1
2
3
4
5
<ol class="breadcrumb">
    <li class="breadcrumb-item"><a href="#">Home</a></li>
    <li class="breadcrumb-item"><a href="#">Library</a></li>
    <li class="breadcrumb-item active" aria-current="page">Data</li>
</ol>

效果展示

image-20210914153631229

基础导航栏

最简单的导航栏直接使用 .nav 即可,同时可以对a标签使用.active表示被选中,使用 .disabled 表示被禁用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </li>
</ul>

效果展示

image-20210914153927943

菜单对齐

菜单对齐方式有三种

  • 居中 .justify-content-center
  • 右对齐 .justify-content-end
  • 左对齐 .justify-content-start

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav justify-content-center">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </li>
</ul>

效果展示

image-20210914154237592

垂直菜单

垂直菜单使用 .flex-column 或者 .flex-[type]-column 在指定窗口大小时垂直显示

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav flex-column">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </li>
</ul>

效果展示

image-20210914154553500

菜单铺满

使用 .nav-fill 让菜单铺满宽度或者高度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav nav-tabs nav-fill">
    <li class="nav-item">
        <a class="nav-link active" href="#">Active</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#">Much longer nav link</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
    </li>
    <li class="nav-item">
        <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
    </li>
</ul>

效果展示

image-20210914155218497

标签页导航(nav-tabs)

.nav-tabs 类依赖 .nav 基类,一般同时添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </li>
</ul>

效果展示

image-20210914154727572

面包屑导航 (nav-pills)

.nav-pills 类依赖 .nav 基类,一般同时添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </li>
</ul>

效果展示

image-20210914154907664

Bootstrap 折叠

在Bootstrap 中折叠效果很简单就能实现。

  1. 在触发点击的元素上添加 data-toggle="collapse"data-target="#collapseExample"。如果是a标签,第二个可以替换成href="#collapseExample"
  2. 在被折叠的元素上添加 class="collapse"id="collapseExample"
  3. 在被折叠的元素上添加 hide 或者 show 控制元素默认显示隐藏

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
<p>
  <a class="btn btn-primary" data-toggle="collapse" href="#collapseExample">超链接按钮</a>

<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample">
普通按钮
</button>
</p>

<div class="collapse" id="collapseExample">
<div class="card card-body">
被控制显示隐藏的元素,通过id属性来绑定
</div>
</div>

多个同时折叠,或者切换多个分别折叠

  1. 在触发点击的元素上添加 data-toggle="collapse"data-target="#collapseExample"。如果是a标签,第二个可以替换成href="#collapseExample"
  2. 在需要同时别折叠的元素上添加 collapse multi-collapse,并且添加 id属性
  3. data-target对应的所有被折叠的元素都会被折叠,或者切换

案例01:折叠

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<p>
  <a class="btn btn-primary" data-toggle="collapse" href="#multiCollapseExample1">折叠第一个</a>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" >折叠第二个</button>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse">切换折叠第一个和第二个元素</button>
</p>

<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
被折叠的第一个
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
被折叠的第二个
</div>
</div>
</div>
</div>

函数和事件

.collapse(options)

自定义选项参数

1
2
3
$('#myCollapsible').collapse({
  toggle: false
})

.collapse('toggle')

切换显示隐藏

.collapse('show')

显示

.collapse('hide')

隐藏

.collapse('dispose')

销毁折叠效果

事件

Event Type Description
show.bs.collapse 调用 show 方法的瞬间
shown.bs.collapse 当显示可见的时候.
hide.bs.collapse 调用 hide 方法的瞬间
hidden.bs.collapse 当隐藏后的时候.

如:

1
2
3
$('#myCollapsible').on('hidden.bs.collapse', function () {
  // do something...
})

Bootstrap 下拉菜单

下拉菜单需要额外的插件Popper,所有需要将普通bootstrap.min.js换成bootstrap.bundle.min.js

1
2
<!-- <script src="js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script> -->
<script src="js/bootstrap.bundle.min.js" type="text/javascript" charset="utf-8"></script>

下拉菜单也只需要添加几个属性即可使用

  1. 在父类上添加 dropdowndropupdroprightdropleft class属性
  2. 在触发点击的元素上添加 class="dropdown-toggle"data-toggle="dropdown"
  3. 在触发点击的元素中添加子元素下拉菜单,并在下拉菜单上添加class="dropdown-menu"

如:

1
2
3
4
5
6
7
8
9
10
<div class="dropdown">
    <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">下拉菜单</button>
    <div class="dropdown-menu">
        <a class="dropdown-item" href="#">Action22</a>
        <a class="dropdown-item" href="#">Another action</a>
        <a class="dropdown-item" href="#">Something else here</a>
        <div class="dropdown-divider"></div>
        <a class="dropdown-item" href="#">Separated link</a>
    </div>
</div>

Bootstrap 导航栏

Bootstrap 导航栏包括一下几个部分

  • .navbar-brand 上标
  • .navbar-nav 导航栏
  • .navbar-toggler 切换菜单的按钮
  • .form-inline 导航栏中的内联表单
  • .navbar-text 菜单中的菜单文字
  • .collapse.navbar-collapse 响应式可以隐藏的部分

导航栏可以使用.navbar-toggler.navbar-collapse.navbar-expand{-sm|-md|-lg|-xl}类来确定其内容何时折叠在按钮后面。

对于永不折叠的导航栏,请在导航栏上添加.navbar-expand类。对于总是折叠的导航栏,不要添加任何.navbar-expand类。

案例02:导航栏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">LOGO</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
        <span class="navbar-toggler-icon"></span>
    </button>
<span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"collapse navbar-collapse"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"navbarSupportedContent"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">ul</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"navbar-nav mr-auto"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-item active"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-link"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>主页<span class="hljs-tag">&lt;<span class="hljs-title">span</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"sr-only"</span>&gt;</span>(current)<span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-item"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-link"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>菜单<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-item dropdown"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-link dropdown-toggle"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span> <span class="hljs-attribute">data-toggle</span>=<span class="hljs-value">"dropdown"</span>&gt;</span>下拉菜单<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"dropdown-menu"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"dropdown-item"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>子菜单1<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"dropdown-item"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>子菜单2<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"dropdown-divider"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"dropdown-item"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>子菜单3<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-item"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"nav-link disabled"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span> <span class="hljs-attribute">tabindex</span>=<span class="hljs-value">"-1"</span> <span class="hljs-attribute">aria-disabled</span>=<span class="hljs-value">"true"</span>&gt;</span>禁用菜单<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-title">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">form</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"form-inline my-2 my-lg-0"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"form-control mr-sm-2"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"search"</span> <span class="hljs-attribute">placeholder</span>=<span class="hljs-value">"搜索"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">button</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"btn btn-outline-success my-2 my-sm-0"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span>&gt;</span>搜索<span class="hljs-tag">&lt;/<span class="hljs-title">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-title">form</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>

</nav>

Bootstrap 轮播图

轮播图包括

  • carousel 轮播图整体
  • carousel-indicators 轮播图导航器
  • carousel-inner 轮播图内容整体
  • carousel-item 轮播图内容模块
  • carousel-caption 轮播图内容标题
  • carousel-control-prev 左切换按钮
  • carousel-control-next 右切换按钮

案例03:轮播图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
    <ol class="carousel-indicators">
        <li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
        <li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
        <li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
    </ol>
    <div class="carousel-inner">
        <div class="carousel-item active">
            <!-- <img src="..." alt="..." height="400" width="100%"> -->
            <div style="height: 400px;background-color: rgba(0,0,0,0.5);"></div>
            <div class="carousel-caption d-none d-md-block">
                <h5>轮播图标题</h5>
                <p>轮播图内容</p>
            </div>
        </div>
        <div class="carousel-item">
            <!-- <img src="..." alt="..." height="400" width="100%"> -->
            <div style="height: 400px;background-color: rgba(0,0,0,0.5);"></div>
            <div class="carousel-caption d-none d-md-block">
                <h5>轮播图标题</h5>
                <p>轮播图内容</p>
            </div>
        </div>
        <div class="carousel-item">
            <!-- <img src="..." alt="..." height="400" width="100%"> -->
            <div style="height: 400px;background-color: rgba(0,0,0,0.5);"></div>
            <div class="carousel-caption d-none d-md-block">
                <h5>轮播图标题</h5>
                <p>轮播图内容</p>
            </div>
        </div>
    </div>
    <button class="carousel-control-prev" type="button" data-target="#carouselExampleCaptions"
            data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
    </button>
    <button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions"
            data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
    </button>
</div>

效果展示

image-20210914194536603

Bootstrap 表格

描述
.table 为任意 <table> 添加基本样式 (只有横向分隔线)
.table-striped <tbody>内添加斑马线形式的条纹 ( IE8 不支持)
.table-bordered 为所有表格的单元格添加边框
.table-borderless 为所有表格的单元格去除边框
.table-hover <tbody> 内的任一行启用鼠标悬停状态
.table-condensed 让表格更加紧凑
.table-sm 小表格
.table-dark 黑色主题
.thead-light 灰白主题

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="font/bootstrap-icons.css" />
		<link rel="stylesheet" type="text/css" href="style.css" />
	<span class="hljs-tag">&lt;<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"jquery/jquery-3.6.0.min.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><span class="javascript"></span><span class="hljs-tag">&lt;/<span class="hljs-title">script</span>&gt;</span>
	<span class="hljs-tag">&lt;<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"js/bootstrap.min.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><span class="javascript"></span><span class="hljs-tag">&lt;/<span class="hljs-title">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span>
	<span class="hljs-tag">&lt;<span class="hljs-title">table</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"table table-striped table-bordered table-hover table-condensed"</span>&gt;</span>
		<span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Header<span class="hljs-tag">&lt;/<span class="hljs-title">th</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Header<span class="hljs-tag">&lt;/<span class="hljs-title">th</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Header<span class="hljs-tag">&lt;/<span class="hljs-title">th</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Header<span class="hljs-tag">&lt;/<span class="hljs-title">th</span>&gt;</span>
		<span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span>
		<span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
		<span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span>
		<span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
		<span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span>
		<span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
		<span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span>
		<span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
			<span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Data<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span>
		<span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span>
	<span class="hljs-tag">&lt;/<span class="hljs-title">table</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span>

</html>

效果展示

image-20210914120337154

<tr>, <th><td>

用于表格的行或者单元格:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- 添加到行上 -->
<tr class="table-active">...</tr>
<tr class="table-primary">...</tr>
<tr class="table-secondary">...</tr>
<tr class="table-success">...</tr>
<tr class="table-danger">...</tr>
<tr class="table-warning">...</tr>
<tr class="table-info">...</tr>
<tr class="table-light">...</tr>
<tr class="table-dark">...</tr>

<!-- 添加到单元格上 -->
<tr>
<td class="table-active">...</td>
<td class="table-primary">...</td>
<td class="table-secondary">...</td>
<td class="table-success">...</td>
<td class="table-danger">...</td>
<td class="table-warning">...</td>
<td class="table-info">...</td>
<td class="table-light">...</td>
<td class="table-dark">...</td>
</tr>

效果展示

image-20210914120934722

响应式表格

通过给表格添加.table-responsive{-sm|-md|-lg|-xl},可以让表格响应的变化

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div class="table-responsive-sm">
  <table class="table">
    ...
  </table>
</div>

<div class="table-responsive-md">
<table class="table">
...
</table>
</div>

<div class="table-responsive-lg">
<table class="table">
...
</table>
</div>

<div class="table-responsive-xl">
<table class="table">
...
</table>
</div>

Bootstrap分页

自带分页样式

Class 描述
.pagination 添加该 class 来在页面上显示分页。
.disabled, .active 您可以自定义链接,通过使用 .disabled 来定义不可点击的链接,通过使用 .active 来指示当前的页面。
.pagination-lg, .pagination-sm 使用这些 class 来获取不同大小的项。

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<nav aria-label="Page navigation example">
    <ul class="pagination">
        <li class="page-item"><a class="page-link" href="#">Previous</a></li>
        <li class="page-item"><a class="page-link" href="#">1</a></li>
        <li class="page-item"><a class="page-link" href="#">2</a></li>
        <li class="page-item"><a class="page-link" href="#">3</a></li>
        <li class="page-item"><a class="page-link" href="#">Next</a></li>
    </ul>
</nav>

<ul class="pagination justify-content-center">
<li class="page-item disabled">
<a class="page-link" href="#" tabindex="-1" aria-disabled="true">Previous</a>
</li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item">
<a class="page-link" href="#">Next</a>
</li>
</ul>

<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end">
<li class="page-item disabled">
<a class="page-link" href="#" tabindex="-1" aria-disabled="true">Previous</a>
</li>
<li class="page-item"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item">
<a class="page-link" href="#">Next</a>
</li>
</ul>
</nav>

效果展示

image-20210914204445963

Bootstrap 列表组

列表可以罗列内容,配合badge一起使用很方便

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<div class="list-group">
    <a href="#" class="list-group-item list-group-item-action">default
        <span class="badge badge-primary badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-primary">primary
        <span class="badge badge-secondary badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-secondary">secondary
        <span class="badge badge-success badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-success">success
        <span class="badge badge-danger badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-danger">danger
        <span class="badge badge-warning badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-warning">warning
        <span class="badge badge-info badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-info">info
        <span class="badge badge-light badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-light">light
        <span class="badge badge-dark badge-pill">14</span>
    </a>
    <a href="#" class="list-group-item list-group-item-action list-group-item-dark">dark
        <span class="badge badge-primary badge-pill">14</span>
    </a>
</div>

效果展示

image-20210914195627688

Bootstrap 模态框

模态框就是弹出窗口,可以作为提示,使用方法

  1. 在按钮上添加data-toggle="modal"data-target="#staticBackdrop" 绑定哪一个模态框,并可打开模态框
  2. 在模态框中按钮上添加data-dismiss="modal" 绑定哪一个模态框,并可关闭模态框
  3. 在模态框上添加class="modal fade"id="staticBackdrop"

案例04:模态框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#staticBackdrop">
    打开模态框
</button>

<!-- Modal -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">标题</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
内容
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary">确定</button>
</div>
</div>
</div>
</div>

模态框大小

Size Class Modal max-width
Small .modal-sm 300px
Default None 500px
Large .modal-lg 800px
Extra large .modal-xl 1140px

模态框选项

Name Type Default Description
backdrop boolean | 'static' true 包括一个模态背景元素。或者,为点击时不关闭模态的背景指定静态。
keyboard boolean true 按下Esc键时关闭模态
focus boolean true 初始化时将焦点放在模态上。
show boolean true 显示初始化时的模态。

模态框函数

Options: .modal(options) 把内容作为模态框激活。接受一个可选的选项对象。 $(‘#identifier’).modal({keyboard: false})
.modal(‘toggle’) 手动切换模态框。 $(‘#identifier’).modal(‘toggle’)
.modal(‘show’) 手动打开模态框。 $(‘#identifier’).modal(‘show’)
.modal(‘hide’) 手动隐藏模态框。 $(‘#identifier’).modal(‘hide’)
.modal(options) 自定义选项 $(‘#myModal’).modal({ keyboard: false })

事件

事件 描述 实例
show.bs.modal 在调用 show 方法后触发。 $(‘#identifier’).on(‘show.bs.modal’, function () { // 执行一些动作…})
shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 $(‘#identifier’).on(‘shown.bs.modal’, function () { // 执行一些动作…})
hide.bs.modal 当调用 hide 实例方法时触发。 $(‘#identifier’).on(‘hide.bs.modal’, function () { // 执行一些动作…})
hidden.bs.modal 当模态框完全对用户隐藏时触发。 $(‘#identifier’).on(‘hidden.bs.modal’, function () { // 执行一些动作…})

Bootstrap 字体图标

字体图标需要额外下载,下载地址:https://icons.bootcss.com/

image-20210926174708723

点击右上方下载按钮下载

image-20210914201334052

将font文件夹拷贝到项目中

image-20210914201431208

案例05:参考图标

image-20210914201531499

使用方法

<i class="bi bi-alarm"></i>

Font Awesome4

下载地址:http://fontawesome.dashgame.com/

image-20210914202003339

引入图标

<link rel="stylesheet" type="text/css" href="FontAwesome4/css/font-awesome.min.css"/>

基本图标

可以将Font Awesome图标使用在几乎任何地方,只需要使用CSS前缀 fa ,再加上图标名称。 Font Awesome是为使用内联元素而设计的。我们通常更喜欢使用<i> ,因为它更简洁。 但实际上使用 <span>才能更加语义化。

<i class="fa fa-camera-retro"></i>

如果修改了图标容器的字体大小,图标大小会随之改变。同样的变化也会发生在颜色、阴影等其它任何CSS支持的效果上。

图标大小

使用 fa-lg (33%递增)、fa-2x、 fa-3x、fa-4x,或者 fa-5x 类 来放大图标

1
2
3
4
5
<i class="fa fa-camera-retro fa-lg"></i> fa-lg
<i class="fa fa-camera-retro fa-2x"></i> fa-2x
<i class="fa fa-camera-retro fa-3x"></i> fa-3x
<i class="fa fa-camera-retro fa-4x"></i> fa-4x
<i class="fa fa-camera-retro fa-5x"></i> fa-5x

image-20210914202257092

如果图标的底部和顶部被截断了,需要增加行高来解决此问题。

可旋转

这些图标在.fa-spin类的作用下表现优异。

  • 使用 .fa-spin 类来使任意图标旋转动画

  • 还可以使用 .fa-pulse 来使其进行8角形旋转动画

  • 使用 .fa-rotate-*.fa-flip-* 类可以对图标进行任意旋转和翻转。

如:

1
2
3
4
5
6
<i class="fa fa-shield"></i> normal<br>
<i class="fa fa-shield fa-rotate-90"></i> fa-rotate-90<br>
<i class="fa fa-shield fa-rotate-180"></i> fa-rotate-180<br>
<i class="fa fa-shield fa-rotate-270"></i> fa-rotate-270<br>
<i class="fa fa-shield fa-flip-horizontal"></i> fa-flip-horizontal<br>
<i class="fa fa-shield fa-flip-vertical"></i> icon-flip-vertical

作业

实现后台管理框架

  1. 实现bootstarp自适应布局案例。地址:http://www.youzhan.org/
    </article>
posted @ 2021-11-20 16:01  柠檬色的橘猫  阅读(234)  评论(0)    收藏  举报