西安科技大学

安全工程专业课程


在线课件开发


金洪伟

安全科学与工程学院

如何浏览?

  1. 从浏览器地址栏打开 https://zimo.net/help/
  2. 点击链接打开演示文稿,使用空格键或方向键导航;
  3. f键进入全屏播放,再按Esc键退出全屏;
  4. s键打开演讲者视图(在多屏播放时有用);
  5. Alt键同时点击鼠标左键进行局部缩放;
  6. Esco键进入幻灯片浏览视图。

请使用最新版本浏览器访问此演示文稿以获得更好体验。

二维码网址
扫码访问

无法扫描,请访问:https://zimo.net/help/

目 录

1. 概述

1.1 项目背景

安全工程专业在 2022 年下学期将开设一门新课程《安全仿真与模拟基础》。该课程主要讲解计算机技术在安全工程中的应用,其中要展示大量的 Python、MATLAB 代码数学公式,这些内容适宜用最新的 Web 技术展示。因此我们开发了 Web 教学课件,以方便该课程的教学。

1. 概述

1.2 开发目标

基于现有的开源软件进行深度集成和定制,立足于西安科技大学教学软硬件环境,开发一套在线的演示文稿系统,使之能替代传统的 Microsoft PowerPoint 或 WPS 演示文稿,并起到更好的展示、分享效果。

2. 项目实施

  • 技术选型:HTML / JavaScript / CSS,以及各种开源项目(见右侧)。
  • 主要的开发工作:针对具体的教学需求,对字体、段落、版式、动画、放映、多媒体等,使用 CSS 定义了大量可选的样式,实现了 PowerPoint 的主要功能。
  • 撰写了一个详尽的帮助文档,便于初学者使用。

主要用到的开源项目:

3. 特色

  1. 纯网页形式,方便电脑、手机在线访问
    一个演示文稿就是一个网页,可通过链接、二维码等方式分享,并用浏览器或微信自带的网页浏览功能打开。
  2. 支持插入各种文档元素
    可插入链接、图片、表格、公式、代码、视频等,支持 Markdown 格式。
  3. 便于利用各种动态、丰富的网络资源
    便于链接或嵌入巨量的互联网资源,如各种大型音视频网站中的音频和视频,甚至嵌入整个网页。
  4. 丰富多样的演示功能
    支持页面过渡动画、页面元素动画、自动播放、演讲者视图、导航控件、触屏翻页、全览模式、全屏模式,等等。
  5. 方便多人协作编辑
    所生成文稿为 HTML 格式的纯文本,便于多人利用 git 等版本控制软件协作编辑。

3. 特色

  1. 页面样式统一、美观
    精心定制了常见页面元素的样式,如色彩、对齐、大小、字体、行距等,并可以一次性地更改所有文稿的样式。
  2. 支持多种页面版式
    定义了多种页面分栏版式,以及图文框浮动对齐方式。
  3. 可结合学校的智慧教室功能在页面自由书写
    可直接在触摸屏上用手指或触屏笔进行书写或标记。
  4. 可导出为 PDF 文件
    便于分享、归档。
  5. 无限的扩展功能
    借助 HTML、CSS、JavaScript、Canvas 等现代的网页开发技术,使页面展示效果具有无限的提升空间。

4. 准备工作

要制作这种在线的演示文稿需要掌握较多的计算机应用知识,不过一旦熟悉该制作流程,其开发效率反而会更快。


❶ 了解一点超文本标记语言(HyperText Markup Language,HTML)的基础知识,它让你了解网页的背后是什么,建议看这个简单的教程,以及这个进阶教程

❷ 我们定制的演示文稿系统主要基于 reveal.js 开源框架,你可以顺着链接去看看这个框架的文档。它是英文的,如果有点吃力,那么就继续看本演示文稿吧。等你进阶了,再回来看就会更容易一点。

4. 准备工作

❸ 安装必要的软件:

  • 一个功能强大的文本编辑器。Windows 自带的记事本太弱了,对我们的工作完全不可用。建议使用 Visual Studio Code(简称 VSCode),它是开源和免费的,就从这个官网下载,然后安装,安装后基本不用怎么设置,就满足我们的需求了。
  • 一个现代的浏览器。除了老旧的 Internet Explorer 浏览器,其他浏览器都行,想必你的电脑上已经有了。
  • 下载你正在看的这个演示文稿模板。你可以从这个链接下载,下载后请解压到任意你想要放置的位置。

4. 准备工作

VSCode 编辑界面

❹ 打开你刚刚下载的模板。

想必你已经把刚才下载的的 help.zip 文件解压了,并发现其内部包含一个 help 文件夹,其内部又包含了一个 index.html 文件,我们的编辑工作就从这个文件开始,通过如下两种方式打开它:

  • 用 VSCode 打开它。打开后就能查看和编辑该网页的源码了,如右图所示。
  • 用浏览器打开它。打开后就看到漂亮的演示文稿了,如果在 VSCode 那边对文件有所改动,在浏览器中刷新页面(点击工具栏的刷新按钮、或按 Ctrl + R,或按 F5 键)就能看作改动后的显示效果了。

4. 准备工作

一切已经就绪了!


快速输入 HTML
元素标记

再教你一个小诀窍:

是否觉得 VSCode 中各式的 HTML 的元素很难输入?尤其是各种 <>/ 符号,其实并不难,因为 VSCode 中已自带了 Emmet 扩展,你只要输入元素名称,如 pulli,然后按 Table 键就能快速输入元素了。其实还有更多很高级的输入功能,自己去 Emmet 官网查看吧。

当然,如果你实在不想直接编辑 HTML 源码,也可以借助一些所见即所得的 HTML 编辑器(如这个),或借助 Markdown 标记实现编辑输入。

4. 准备工作

现在,假设我们要编写一个名称为Python 程序设计入门的演示文稿,让我们动手吧!

❶ 先将 index.html 文件中的 title 元素内容修改为我们文档标题,再根据文稿属性更改 <meta name="description"><meta name="author"> 元素的 content 属性值。刷新页面,看看浏览器标题栏的题目是不是已经变成我们新设的题目了(后面设置的两项元素不会显示出来)。

4. 准备工作

❷ 现在已经可以新建幻灯片了。往下翻翻 index.html 文件,你将会发现一些 <section>...</section> 元素,全部处于 <div class="slides">...<div> 元素的内部。每个 section 元素对应一页幻灯片。接下来你可以选择两种行动来填充你的文稿:

  1. 全部删除已有的 section 元素,一切从零开始;
  2. 在已有的各类 section 元素基础上进行修改。

如果你是新手,且为了快速建立一个演示文稿,建议选后者。但现在,为了便于讲解,我们选择前者。就请行动起来,删除所有的 section 元素吧!

4. 准备工作

❸ 请输入我们的第一页幻灯片的内容:


				

第 1 节 Python 介绍(示例)

Python 是一种广泛使用的解释型、高级和通用的编程语言。它由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于 1990 年代初设计,作为一门叫作 ABC 语言的替代品。

Python 的设计哲学是优雅明确简单。它的重要准则被称为“Python 之禅”,其中就包括以下格言:

  • 优美优于丑陋。
  • 明了优于隐晦。
  • 简单优于复杂。
  • 复杂优于凌乱。

下面的一整页给出了以上代码的显示效果。

第 1 节 Python 介绍(示例)

Python 是一种广泛使用的解释型、高级和通用的编程语言。它由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于 1990 年代初设计,作为一门叫作 ABC 语言的替代品。

Python 的设计哲学是优雅明确简单。它的重要准则被称为“Python 之禅”,其中就包括以下格言:

  • 优美优于丑陋。
  • 明了优于隐晦。
  • 简单优于复杂。
  • 复杂优于凌乱。

4. 准备工作

❹ 是不是有点被页面内乱乱的内容吓到了?别着急,我们下一节就带你入门。不过在这里,还需要先知道水平幻灯片垂直幻灯片的概念。这里不介绍概念了,请对照下边代码和右图就够了:


					
SLIDE 1
SLIDE 2.1
SLIDE 2.2
SLIDE 2.3
SLIDE 3
SLIDE 4

以上 1、3、4 是水平幻灯片,
2.1、2.2、2.3 是垂直幻灯片。

通过嵌套 section,可以把文稿分成好多小节,每小节包括多个垂直幻灯片。

你可以按下 o 键,看看本文稿的结构。

5. 常用 HTML 元素

让我们简要复习以下一些常用的 HTML 元素,如果你在学习 HTML 时已经学过了,那快速浏览一下就好了。以下直接列出这些常用元素:

常见块级元素
元素 名称 说明 示例 显示效果
p 段落 一块和相邻文本分离的文本。

							

这是一个段落。

这是一个段落。

h1 一级标题 一般用作封面标题。

							

一级标题

一级标题

h2 二级标题 一般用作节标题。

							

二级标题

二级标题

h3 三级标题 一般用作小节标题。

							

三级标题

三级标题

h4 四级标题 较少用。

							

四级标题

四级标题

常见块级元素(续)
元素 名称 说明 示例 显示效果
ul 无序列表 无序列表,或称符号列表,内部包含多个 li 列表项。

							
  • 列表项 1
  • 列表项 2
  • 列表项 3
  • 列表项 1
  • 列表项 2
  • 列表项 3
ol 有序列表 有序列表,或称编号列表,内部包含多个 li 列表项。

							
  1. 列表项 1
  2. 列表项 2
  3. 列表项 3
  1. 列表项 1
  2. 列表项 2
  3. 列表项 3
dl 定义列表 包含术语定义 dt 及其描述 dd

							
HTML
超文本标记语言,延伸自 SGML。
HTML5
HTML 标准的最新版本。
HTML
超文本标记语言,延伸自 SGML。
HTML5
HTML 标准的最新版本。
常见块级元素(续)
元素 名称 说明 示例 显示效果
blockquote 块级引用 引用他人内容。

							
学而时习之,不亦说乎?
学而时习之,不亦说乎?
figure 图文框 包含独立的一段内容,常包含图像及其标题。

							
雏菊
雏菊

hr 水平线 一条水平分割线。

							

div 内容划分 通用容器,使用时一般同时给定其 classid 属性。

							
第 1 列
第 2 列
第 1 列
第 2 列
常见行内元素
元素 名称 说明 示例 显示效果
a 链接 指向其他网页、文件等 URL 的链接。

							西安科技大学
						
西安科技大学
img 图像 在文档中嵌入图片。

							雏菊
						
雏菊
strong 着重强调 显示为粗体。

							着重强调的文本
						
着重强调的文本
em 强调 显示为斜体。

							强调的文本
						
强调的文本
ins 插入 插入的文本,显示为带下划线。

							插入的文本
						
插入的文本
del 删除 删除的文本,显示为带删除线。

							删除的文本
						
删除的文本
常见行内元素(续)
元素 名称 说明 示例 显示效果
sup 上标 上标文本。

							x2
						
x2
sub 下标 下标文本。

							x2
						
x2
var 变量 变量通常用拉丁字母表示,以斜体显示。

							ax2
						
ax2
code 代码 代码文本,一般用等宽字体显示。

							<code>len("Hello")</code>
						
len("Hello")
cite 引用 表示引用他人作品的标题。

							呼啸山庄
						
呼啸山庄
mark 标记文本 标记或突出显示的文本。

							标记文本
						
标记文本
常见行内元素(续)
元素 名称 说明 示例 显示效果
dfn 定义 表示术语的一个定义。

							Python是一种广泛使用的解释型、高级和通用的编程语言。
						
Python是一种广泛使用的解释型、高级和通用的编程语言。
abbr 缩写 经常为首字母缩写,并通过 title 属性提供完整的描述。

							超文本标记语言的缩写为 HTML
						
超文本标记语言的缩写为 HTML
br 换行符 强制在元素出换行,该元素没有内容。

							

包含一个换行符
的段落。

包含一个换行符
的段落。

span 通用的行内元素,使用时一般同时给定其 classid 属性。

							的声音
						
的声音

5. 常用 HTML 元素

简单总结:

  • 段落最常用,用 p 来标记;
  • 标题分多级,常用一至四 h1h4
  • 列表分两种,无序 ul 和有序 ol,内部有多项 li
  • 图文框 figure 小世界,内部包万象;
  • 链接 a 锚(anchor)他物,href 赋 URL;
  • 粗体最重要(strong),斜体较重要(emphasize » em);
  • 上标 sup 与下标 sub,区分 p 与 b;
  • 变量 var 用斜体,该用就得用。

6. 插入多媒体

除了向演示文稿中插入文字,还可以插入其他媒介,如图像、表格、公式、代码、视频以及更复杂的网页。

注:不像 Microsoft PowerPoint 可以直接用鼠标拖动操作,许多时候,向网页中插入多媒体并不容易,需要查阅或记住各种元素的结构。但借助互联网上各种强大的 JavaScript 库,我们可以把我们的演示文稿变得无比强大。比如,向演示文稿中插入一个实时变化的股价走势图。

6.1 插入图像

前面已经说过怎么插入图像了,img 元素的格式如下:


			当链接的图像不存在时的替换文字
		

另外还可以为其指定 widthheight 等属性。一般将图像文件放在 images 子目录中,如下:


			

西科徽标:

其显示效果为:

西科徽标:

6.1 插入图像

另外,在 img 元素中,我们常用 data-src 属性代替其 src 属性,data-src 具有延迟加载的功效:即当显示到包含图片的这页幻灯片时,才开始从网上下载并加载此图像,从而避免在仅查看少数几页时加载所有页的图片。

以下代码使用 data-src 属性代替 src 属性:


			

西科徽标:

6.2 插入图文框

前面插入的图像属于行内元素,即其完全处于文本流中。有时需要插入相对独立的图文框,其中往往包含图像、图像标题以及其他说明文本。这种功能可用 figure 元素实现。示例如下:


					
雏菊
雏菊

雏菊是菊科雏菊属的一种,别名长命菊、延命菊,原产于欧洲,原种被视为丛生的杂草,开花期在春季。

雏菊
雏菊

雏菊是菊科雏菊属的一种,别名长命菊、延命菊,原产于欧洲,原种被视为丛生的杂草,开花期在春季。

6.3 插入表格

表格的编辑比较复杂,对于以下表格,其要求的最简代码见右图。大多数时候,我们还是建议在其他 HTML 编辑器中编辑表格,然后将源代码复制过来;或者在其他软件中编辑表格,然后将其存储为图片显示。

表格标题
第 1 行第 1 列 第 1 行第 2 列 第 1 行第 3 列
第 2 行第 1 列 第 2 行第 2 列 第 2 行第 3 列
第 3 行第 1 列 第 3 行第 2 列 第 3 行第 3 列

				
表格标题
第 1 行第 1 列 第 1 行第 2 列 第 1 行第 3 列
第 2 行第 1 列 第 2 行第 2 列 第 2 行第 3 列
第 3 行第 1 列 第 3 行第 2 列 第 3 行第 3 列

6.4 插入公式

以前在网页中显示公式一直是一个老大难问题,不过现在借助 MathJaxKaTeX 等开源公式渲染引擎,已经能够做到在网页中显示精美的公式了。本演示文稿模板自带了 KaTeX 库(对应 katex 目录),因此能够向网页中插入 LaTeX 文本格式的公式了。以下是一个一元二次方程的求根公式:

$$x_{1,2}=\frac{-b\pm \sqrt{b^2-4ac}}{2a}$$

要插入该公式,需要在单独的一行中输入如下代码:


			$$x_{1,2}=\frac{-b\pm \sqrt{b^2-4ac}}{2a}$$
		

6.4 插入公式

公式也分为行内公式块级公式。要插入行内公式需要用一对 $ ... $\( ... \) 符号将公式包括起来。如下所示:


			

令 $\Delta =b^2-4ac$,当 $\Delta >0$ 时,方程有两个不同的实数根。

其显示效果如下:

令 $\Delta =b^2-4ac$,当 $\Delta >0$ 时,方程有两个不同的实数根。

要插入块级公式,需要用一对 $$ ... $$\[ ... \] 符号将公式包括起来,且在单独的一行中输入公式,如上一页幻灯片所示。

6.4 插入公式

需要以写作学术论文常用的 LaTeX 格式的文本表示公式,该格式学起来可并不容易。所幸的是,你也可以不必学习这些枯燥的东西,而仅仅使用公式编辑器就可以可视化地编辑公式,并将他们导出为 LaTeX 格式。这里推荐几个公式编辑器:

  • EqnEditor:一个在线的公式编辑器;
  • LaTeXLive:另一个在线的公式编辑器,国人创作;
  • MathType:老牌的桌面端公式编辑器,可将公式导出为多种格式,价格不菲;
  • AxMath:国人创作的桌面端公式编辑器,价格低,功能够用。

当然,若你致力于高端学术创作,也推荐以硬核的方式学习 LaTeX,那么建议先查看这个英文维基百科页面,它详细列出了各种 LaTeX 公式元素的表示法。

6.4 插入公式

有些时候,我们的公式非常简单,完全可以使用 HTML 格式表达,这时可以通过为公式添加 formulablockformula 类来以合适的样式显示公式。如下为一个包含行内公式的段落:


			

在公式 y = a x2 + b x + c 中。

其显示效果为:

在公式 y = a x2 + b x + c 中。

这里将公式用通用的行内标记 span 包括起来,并为其添加 formula 类。在公式中,将各个变量分别用 var 标记(不用此标记也行,但变量将不会显示为斜体),而上下标分别用 supsub 标记。

6.4 插入公式

同样,若要以 HTML 格式显示行内公式,也可以通过为元素添加 blockformula 类来实现。如下所示:


			

y = a x2 + b x + c

其显示效果为:

y = a x2 + b x + c

另外,如果公式很复杂,无法用 HTML 格式表示,但又不想用 LaTeX 格式,也可以将公式保存为图片格式,从而用 img 元素显示,不过要仔细地设置好图片的高度属性 height,避免其过高或过低。

6.4 插入公式

若要为公式添加编号,可以在公式后面添加一个 <span class="number"> 标签项,如下所示:


			

y = a x2 + b x + c (1)

其显示效果为:

y = a x2 + b x + c (1)

其中 <span class="formula"> 标签内的公式也可以是 LaTeX 公式。

6.5 插入代码

我们经常需要在演示文稿中插入各种编程语言的代码片段,这些代码也分两种:行内代码代码块。其中行内代码直接用 code 标记,如 <code>bytes</code> 将显示为 bytes。我们改变了代码的文字颜色和背景色,并用等宽字体显示,从而使行内代码更容易被辨识。

代码块的表示要复杂一点,通常会设置代码块的背景色,用等宽字体显示文字,禁用自动换行,同时根据语法用不同的颜色高亮显示各类代码元素。

本演示文稿使用开源的语法高亮库 highlight.js 实现代码块的语法高亮显示。它支持近 200 种语言,并有很多预设的显示样式。

6.5 插入代码

通常要插入代码块,可以使用如下方式:


			<pre><code class="language-<name>" data-trim>
    <!-- 多行代码 -->
</code></pre>

在具体使用时,应将 <name> 替换为具体的语言名称。以下片段插入了一段 Python 代码:


			<pre><code class="language-python" data-trim>
# add list items
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
</code></pre>

6.5 插入代码

上页代码的显示效果为:


			# add list items
			thislist = ["apple", "banana", "cherry"]
			thislist.append("orange")
			print(thislist)
		

以上 data-trim 表示要删除 code 元素开头和结尾的所有空白

还可以为 code 元素添加 data-line-numbers 属性而在左侧显示行号,甚至可以突出显示部分行。另外,也可添加 data-noescape 属性设定是否对 HTML 标记进行自动转义。详见 此页

6.6 插入视频

有两个方法可以插入视频:

❶ 使用 video 元素:


			<video controls data-autoplay data-src="path/to/the/video.mp4">你的浏览器不支持播放此视频。</video>
		

其中 data-src 是指向视频文件位置的 URL。同 img 一样,这里用 data-src 而不是 src 以达到延迟加载的目的。controls 用于添加视频播放控制的相关控件,data-autoplay 表示自动播放此视频。还可以使用 widthheight 设定视频框的宽度或高度,一般两者只设置一个即可。

所插入的视频格式应该是浏览器支持能直接播放的,一般使用 MPEG-4 (.mp4) 或 WebM (.webm) 格式。

6.6 插入视频

对于 videos/flower.webm 视频文件,插入方式为:


			<video controls data-autoplay data-src="videos/flower.webm" height="400px"></video>
		

6.6 插入视频

❷ 使用内联框架元素 iframe

许多视频网站出于版权保护需求,会隐藏视频文件 URL 以防止被下载,但会提供另外的方法在网页中嵌入视频播放页。如哔哩哔哩网站每个视频播放器下方的分享按钮下就提供了各种分享方式,点击其中的嵌入代码就能得到嵌入代码了。如下所示:


			
		

上面把从 B 站复制的代码稍作修改:将 src 改为 data-src 以实现延迟加载,又添加了 widthheight 属性以控制播放器的大小。同时在 data-src 指向的 URL 开头添加了具体的协议名称 https:,否则,由于浏览器的同源策略,当只通过本地文件方式打开演示文稿,而没有将其部署到一个网站服务器时,用 iframe 插入的内容有时是不会显示的。下页为以上视频的显示结果。

6.7 插入其他媒体

除了用 iframe 插入视频,也可以插入其他媒体。如以下代码可以嵌入百度地图的搜索结果:


			
		

7. 调整样式

在制作演示文稿时,通常需要尽可能保证同类元素样式的统一,但有时会出于各种各样的原因,需要对默认样式进行调整。我们定义了许多辅助性的class),以实现对默认样式的调整。这样调整包括:字体大小、字体颜色、文本对齐方式、幻灯片背景、各种提醒框,等等。

7.1 调整字体大小

可以通过给容纳字体的元素添加如下类来改变字体大小:

调整字体大小的类
类名称 .xxxs .xxs .xs .sm .lg .xl .xxl .xxxl
缩放倍数 0.5 0.625 0.75 0.875 1.125 1.25 1.5 2.0

示例:


			

这是一段大号显示的文字。

显示效果:

这是一段大号显示的文字。

7.1 调整字体大小

可以将上页给出的类添加到任何元素上,但一般添加到块级元素上。如可以用 <section class="sm"> 将整个幻灯片页面的字体按比例缩小。又如,如果要同时调整多个段落的字体大小,可以将这些段落用一个通用的块级元素 div 包括,并给给元素添加适当的类,如下所示:


			

第一个段落。

第二个段落。

第三个段落。

7.2 颜色

通常不推荐直接设置文字的颜色,但若在某些特殊情况下确有必要设置,则可以通过为元素添加颜色名称的 class 来设置颜色,如 <span class="red">红色文字</span> 将显示为红色文字

另外,也可以通过在颜色名称前加 bg- 前缀来为元素设置浅淡的背景色。如 <span class="bg-green">绿色背景文字</span> 将显示为绿色背景文字

除了上面在 span 元素上设置颜色,也可以对其他各种元素如段落 p、表格 table、表格单元格 td 等设置颜色。

下页列出了本演示文稿支持的颜色名称及显示效果。

7.2 颜色

预设的前景色名称及显示效果
red (红)
orange (橙)
yellow (黄)
green (绿)
cyan (青)
blue (蓝)
purple (紫)
pink (粉红)
black (黑)
gray (灰)
silver (银)
white (白)

预设的背景色名称及显示效果
bg-red (红)
bg-orange (橙)
bg-yellow (黄)
bg-green (绿)
bg-cyan (青)
bg-blue (蓝)
bg-purple (紫)
bg-pink (粉红)
bg-black (黑)
bg-gray (灰)
bg-silver (银)
bg-white (白)

7.3 文本对齐

默认情况下,文稿中的常用块级元素如 pblockquoteli 等都采用分散对齐的方式,这使段落文字的排列显得很整齐。若要改变块级元素的文字对齐方式,请为这些元素分别添加 .leftcenterrightjustify 类,他们分别表示左、中、右及分散对齐。如下所示:


			

一段文字。

其显示效果为:

一段文字。

7.4 暗淡的文字

有时候,对于一些不太重要的段落文字,希望将其颜色设置得暗淡一点,这时可以通过为元素 p 添加 .dim 类实现。如下所示:


			

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

其显示效果为:

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

可以看出,不光段落中常规文字的颜色变淡了,其内部包含的其他带颜色的行内元素的颜色也变淡了。

7.5 淡化标题

通常情况下,幻灯片的标题是比较醒目的。但当标题反复出现时,我们更希望强调其下一级标题,或幻灯片中的内容,这时可以通过为标题添加 muted 类来淡化显示标题。如下是各级标题淡化前后的对比:

一级标题

一级标题

二级标题

二级标题

三级标题

三级标题

四级标题

四级标题

7.6 幻灯片背景

可以为某页幻灯片指定背景,该背景可以是单一的颜色,或者是图片、视频甚至某个网页。

可以通过为 section 添加 data-background-color 属性来指定颜色值。如本页幻灯片的背景色是通过如下方式指定的:


			

一旦为幻灯片指定了深色背景,则其前景色会自动变为浅色,从而能更清晰的呈现文字内容。

不知道怎么选择颜色?这里有一个颜色表可供参考。

7.6 幻灯片背景

可以通过为 section 添加 data-background-image 属性来为其设置背景图片。如本页幻灯片的背景图片是通过如下方式设定的:


			<section data-background-image="images/bg2.jpg"
    data-background-color="#1565c0">
    <!-- 幻灯片内容 -->
</section>

若图片整体较暗淡,则会导致幻灯片的文字不清晰,这时可同时为幻灯片设置一个深色的 data-background-color 值来使前景色反向。

7.6 幻灯片背景

可以通过为 section 添加 data-background-video 属性来为其设置背景视频。如本页幻灯片的背景视频是通过如下方式设定的:


			<section data-background-video="videos/flower.webm"
    data-background-video-loop="true"
    data-background-color="#1565c0">
    <!-- 幻灯片内容 -->
</section>

有关幻灯片背景的更多设置细节,请见此页面

7.7 隐藏某页幻灯片

如果由于某种原因需要暂时隐藏某页幻灯片,可以简单地向 section 添加 data-visibility="hidden" 属性名称-值对来实现此功能。如下所示:


			

8. 动画

借助于现代的 Web 技术,可以向演示文稿添加多种动画功能,包括分段动画、幻灯片切换效果、幻灯片自动放映、自动动画。

注意:虽然为幻灯片设置一些动画会显得很炫酷,但请尽量只在必要的时候使用。他们会分散读者的注意力,并且当设备性能不强时,一些动画效果甚至会出现卡顿,反而使体验下降。

8.1 分段动画

分段动画和 Microsoft PowerPoint 的动画一样,可以按次序并以不同的效果呈现各个元素,它用于强调某些元素,或展示事物间的逻辑关系。

要给幻灯片中的元素设置分段动画,需要为该元素添加 fragment 类,并设置其出现时的动画效果。若不设置动画效果,元素只是简单地出现。


			

这段文字在下一步将会消失。

这段文字在下一步将会消失。

8.1 分段动画


			

问:Python 语言的发明者是谁?

答:Guido van Rossum

问:为什么 Python 被称为胶水语言?

答:Python 是一种高端动态语言,常像“胶水”一样被用来连接软件组件。

问:Python 语言的发明者是谁?

答:Guido van Rossum

问:为什么 Python 被称为胶水语言?

答:Python 是一种高端动态语言,常像“胶水”一样被用来连接软件组件。

8.1 分段动画

下表列出所有支持的动画效果。

所有支持的动画效果
名称 效果
fade-out 淡出:开始时可见,然后淡出。
fade-up 向上滑入:从下向上滑入并逐渐显现。
fade-down 向下滑入:从上向下滑入并逐渐显现。
fade-left 向左滑入:从右向左滑入并逐渐显现
fade-right 向右滑入:从左向右滑入并逐渐显现。
fade-in-then-out 淡入淡出:先淡出,在下一步时淡入。
fade-in-then-semi-out 淡入后半淡出:先淡入,在下一步颜色变为原来的 50%。
grow 生长:放大。

8.1 分段动画

所有支持的动画效果(续)
名称 效果
semi-fade-out 半淡出:颜色变为原来的 50%。
shrink 收缩:缩小。
strike 删除线:文字出现删除线。
highlight-red 红色强调:文字变为红色。
highlight-green 绿色强调:文字变为绿色。
highlight-blue 蓝色强调:文字变为蓝色。
highlight-current-red 当前红色强调:文字先变为红色,在下一步时恢复颜色。
highlight-current-green 当前绿色强调:文字先变为绿色,在下一步时恢复颜色。
highlight-current-blue 当前蓝色强调:文字先变为蓝色,在下一步时恢复颜色。

8.1 分段动画

当分段动画嵌套出现时,将先执行外层动画,再执行内层动画。

示例:


			
				
					
						淡入 > 红色强调 > 淡出
					
				
			
		

淡入 > 红色强调 > 淡出

8.1 分段动画

可以通过 data-fragment-index 属性为元素指定动画顺序。如果多个元素的索引值相同,这些元素的动画将同时执行。如下所示:


			
  • 最后出现
  • 第二个出现
  • 最先出现
  • 第二个出现
  • 最后出现
  • 第二个出现
  • 最先出现
  • 第二个出现

8.2 幻灯片切换效果

本演示文稿还可以定义每页幻灯片的切换方式,这通过给 section 元素指定不同的 data-transition 属性来实现,其可取的属性值见下表,这些属性值同时对幻灯片内容及其背景起作用。

幻灯片切换效果
名称 效果
none 无:立刻切换背景。
fade 叠变:淡入淡出,这是幻灯片背景的默认切换方式。
slide 滑动:滑入滑出,这是幻灯片内容的默认切换方式。
convex 凸起:以一个凸起角度滑动。
concave 凹面:以一个凹陷角度滑动。
zoom 缩放:将下一页幻灯片向上缩放,使其从屏幕中心向内扩展。

本页幻灯片的切换效果为 concave

8.2 幻灯片切换效果

可以为 section 添加 data-transition-speed="fast" 使其更快速地完成切换。

也可以同时为一个幻灯片分别指定切入和切出属性,这需要分别在上页表格的属性值后面加上 -in-out 后缀。以下是本页幻灯片的切换方式:


			<section data-transition="zoom-in concave-out"
    data-transition-speed="fast"
    data-background-image="images/bg2.jpg"
    data-background-color="#455a64">
</section>

8.3 自动放映

可以设置自动放映演示文稿,只需要在文件末尾的 Reveal.initialize({ ... }); 中加入如下两行即可:


			Reveal.initialize({
				autoSlide: 5000,
				loop: true
			});
		

这样将每 5000ms 切换一次幻灯片,一旦用户对幻灯片有操作,将停止自动放映,这时可单击左下角的播放按钮或按 a 键继续自动放映。

8.3 自动放映

还可以在像上页那样全局设置所有幻灯片的自动切换时间的前提下,单独设置具体某页幻灯片的切换时间,如下所示:


			

8.4 自动动画

当两个紧邻的幻灯片的 section 标签上都有 data-auto-animate 属性,则将自动为幻灯片中匹配的元素生成过渡动画。自动动画是一项高级功能,更多细节请查看此页。下面代码的显示效果见下页。


			

8.4 自动动画

这是一个段落。

8.4 自动动画

这是一个段落。

8.4 自动动画

这是一个段落。

这是又一个段落。

8.4 自动动画

这是一个段落。

这是又一个段落。

这是最后一个段落。

8.4 自动动画

这是一个段落。

8.4 自动动画

这是一个段落。

8.4 自动动画

这是一个段落。

这是又一个段落。

8.4 自动动画

这是一个段落。

这是又一个段落。

这是最后一个段落。

9. 版式

为了满足常见的内容排布需要,我们额外定义了许多幻灯片版式。

9.1 分栏

分栏是将一个幻灯片沿水平方向分为多列。最常见的分栏代码如下:


			
第 1 栏
第 2 栏
第 3 栏

其显示效果为:

第 1 栏
第 2 栏
第 3 栏

9.1 分栏

上页代码中的 .row 类表示开启一行分栏,而三个 .col 类表示将一行均分为三列。如果有更少或更多的 .col,将仍然进行均分。

如果不想均分,则可以使用 .col-1, .col-2, ..., .col-6 这样的列,分别表示该列占总宽度的 1/6, 2/6, ..., 6/6。并且每行所有列的后缀数字加起来不能大于 6(最好是等于 6,这样才能将一行的空间占满)。


			
第 1 栏
第 2 栏
第 2 栏

其显示效果为:

第 1 栏
第 2 栏
第 2 栏

9.1 分栏

有时希望栏目的宽度根据其内部内容的宽度进行缩放,这时可使用 .col-auto 这样的列。若各列全部为 .col-auto 时,各列的宽度在本身宽度的基础上缩放。


			
第 1 栏
第 2 栏

以上两栏的总宽度为 300px,远小于页面宽度,但实际仍占满页宽:

第 1 栏
第 2 栏

9.1 分栏

另外还可以使用 .col-none,它与 .col-auto 相反,即当空间不足时,各列不会自动增加而占满页宽。


			
第 1 栏
第 2 栏
第 1 栏
第 2 栏

最后,还可以组合使用 .col.col-n.col-auto.col-none,其情况较复杂,请多尝试。

9.2 浮动

美丽的花儿

当图文混排时,常使图文框浮动到页面的右侧或左侧。这可以通过为图文框 figure 添加 .push-right.push-left 类来实现。

另外,还应把图文框放在混排文字而最上方,这样在浮动显示后,他们的顶部正好平齐。


右侧图文框的代码如下:


			
美丽的花儿

9.2 浮动

美丽的花儿

当不指定图文框及其内部图片的宽度时,图文框的最大宽度不超过幻灯片宽度的 45%。有时,我们想使图文框更大或更小,这时可以通过分别为 figure 添加 .wide.narrow 类来实现。这两种情况下,图文框宽度分别占幻灯片页面宽度的 2/3 和 1/3。

左侧图文框的代码如下:


			
美丽的花儿

9.3 标题幻灯片

幻灯片标题用 h1h2h3h4 标签来表示,他们分别表示一到四级标题。幻灯片的标题不仅标明了本页幻灯片的内容主题,同时其标题等级也说明了演示文稿的大纲。

除了标题幻灯片可能要用到一级标题(h1),其他类型的幻灯片的最高标题等级一般小于等于二级。例如,本页幻灯片的标题为:


			

9.3 标题幻灯片

9.3 标题幻灯片

有时,一个标题可能在多个页面反复出现,当不再是第一次出现时,我们更希望突出幻灯片内容而非标题,这时可以为该标题添加 .muted 类而使其减淡。被减淡的标题字号更小,颜色更淡。例如,本页的幻灯片标题为:


			

9.3 标题幻灯片

10. 手写

想必你早就注意到屏幕左下角的涂写按钮了。点击它,将会弹出一系列按钮,其意义不讲自明。它使我们能在屏幕上画出平滑且有一点点书法效果的标记,尤其对可以随意用手指涂写的大屏幕特别有用。

该功能通过集成 Signature Pad 这一开源的 JavaScript 库实现。

11. Markdown

可能对你来说,手写 HTML 确实挺难的,那就来试试用 Markdown 吧,它真的是简单又好用。或许它能给你打开一扇新的文档写作之门。

Markdown 是一种轻量级标记语言,它可以使我们用简单格式的纯文本编写文档,并转换为 HTML 或其他格式的文档。

这里有一些 Markdown 的中文教程,你可能很快就能学会,不过要达到熟练应用,还需要多多练习。

11. Markdown

通常需要以如下方式在文档中插入 Markdown 页面:


			<section data-markdown>
    <textarea data-template>
        ## 幻灯片 1
        一个包含一些文字及一个[链接](https://chingli.com/)的段落。
        ---
        ## 幻灯片 2
        ---
        ## 幻灯片 3
    </textarea>
</section>

其中单独占一行的水平线 --- 将上下的 Markdown 文本分割为多个水平幻灯片。

11. Markdown

有关在文档中使用 Markdown 的更多介绍,请参见这里

了解了 Markdown 之后,或许你已欢呼雀跃,决定只使用 Markdown 而不再用 HTML 了。不过这里还是需要给你泼点冷水:当你的文档格式比较简单时,用 Markdown 是没问题的;但一旦你的格式比较复杂,或使用本文档自定义的许多功能(需要为元素添加类),用 Markdown 就无能为力了。毕竟 Markdown 连上下标都无法标记。因此,多数时候,还是老老实实地使用 HTML 吧。

另外,如果你不怕精神分裂,混合使用 HTML 和 Markdown 也是可行的。

12. 结论与展望

  1. 借助各种开源软件开发了一套几乎媲美 PowerPoint 的在线演示文稿系统;
  2. 编写了一个详尽的在线文稿制作帮助文档。

所开发的在线课件系统能够满足《安全仿真与模拟基础》的教学要求,为该课程的教学创新打下了基础。

下一步工作:为课件中的 Python 代码添加在线解释执行功能。

   谢谢!

↞ 返回首页