reveal.js 初始化配置项详解及默认值说明
全面解析 reveal.js 初始化配置项及其默认值,涵盖画布尺寸自适应、控制指示器、翻页交互、转场动效、视图加载及插件扩展,提供工程级图解与常用生产配置预设。
reveal.js 在调用 Reveal.initialize(options) 时通过传入配置对象来决定整个演示文稿的运行模式、交互响应和视觉表现。本文系统梳理 reveal.js 的完整初始化配置项及其底层默认值,按功能维度剖析每个参数的运作机制、生效边界及常见避坑点,并提供生产环境推荐配置组合与工程架构解析,帮助开发者精准把控演示文稿的行为。
一、初始化机制与配置调用方式
reveal.js 的初始化本质上是一个异步就绪过程。自 reveal.js 4.0 引入现代化架构后,支持两种初始化形态:全局单例初始化(适用于单一全屏演示页)与多实例构造初始化(适用于页面嵌入多个幻灯片窗口)。
在 HTML 引入脚本与样式后,通常通过以下基础模板进行初始化:
// 方式 A:全局单例模式(最常用)
Reveal.initialize({
hash: true,
slideNumber: 'c/t',
plugins: [ RevealHighlight, RevealNotes ]
}).then(() => {
// 此时幻灯片布局已完成,插件均已注册就绪
console.log('reveal.js 初始化就绪');
});
// 方式 B:指定容器的多实例模式
const deck = new Reveal(document.querySelector('.my-deck'), {
embedded: true,
keyboardCondition: 'focused'
});
deck.initialize();
无论采用哪种方式,配置项对象传入底层后,都会与内置的完整默认值对象进行浅层合并。未显式声明的参数将一律沿用官方默认值。
二、演示画布尺寸与自适应缩放配置项
reveal.js 的核心排版逻辑是“固定画布设计尺寸 + 等比缩放视口”。页面上的每个幻灯片元素并不是直接按屏幕绝对像素排布,而是在一个预设的虚拟逻辑画布中定位,再通过 CSS transform: scale(...) 缩放到当前浏览器窗口中。
| 配置项 (Key) | 数据类型 | 默认值 | 功能定义与行为说明 |
|---|---|---|---|
width |
Number / String | 960 |
演示文稿基础画布逻辑宽度(像素)。支持纯数字或百分比字符串(如 '100%')。 |
height |
Number / String | 700 |
演示文稿基础画布逻辑高度(像素)。默认比例接近 4:3;若制作主流 16:9 幻灯片,建议设置为 width: 1280, height: 720 或 width: 1920, height: 1080。 |
margin |
Number | 0.04 |
画布周围的安全留白比例(0.04 代表留出视口宽高的 4% 作为页边距),防止内容贴边或在投影仪边缘被遮挡。 |
minScale |
Number | 0.2 |
允许的最小缩放比例下限。当浏览器视口极小时,缩放比例不会低于此数值,避免文字缩成无法识别的点。 |
maxScale |
Number | 2.0 |
允许的最大缩放比例上限。当超大 4K 显示器全屏时,缩放系数不会超出 2.0,避免位图图片或低清资源严重马赛克化。 |
disableLayout |
Boolean | false |
若设为 true,reveal.js 将彻底关闭其内置的居中与 scale 变换系统,完全交由外层 CSS 自行控制布局。通常用于定制复杂响应式网页场景。 |
三、导航控制与状态指示配置项
导航指示系统决定了演讲者与听众如何感知当前所处的位置,以及通过何种界面元素进行换页。
| 配置项 | 类型 | 默认值 | 功能定义与注意事项 |
|---|---|---|---|
controls |
Boolean | true |
是否在屏幕右下角显示导航箭头图标。在自主浏览或移动端非常有用;现场演讲通常可设为 false。 |
controlsTutorial |
Boolean | true |
是否向初次访问的用户循环跳动提示导航按钮。若不需要多余动画干扰,建议明确设为 false。 |
controlsLayout |
String | 'bottom-right' |
控制箭头的布局位置。可选值:'bottom-right'(集中在右下角四方向盘)或 'edges'(分散在屏幕四周边缘)。 |
controlsBackArrows |
String | 'faded' |
历史返回箭头的可视状态。可选值:'faded'(半透明淡化)、'hidden'(不可返回时隐藏)、'visible'(始终全高亮显示)。 |
progress |
Boolean | true |
是否在屏幕最底部显示一条随翻页推进的细横向进度条。 |
slideNumber |
Boolean / String | false |
页码显示格式。支持多种预设字符:
|
showSlideNumber |
String | 'all' |
控制何时显示页码。可选值:'all'(始终显示)、'speaker'(仅在演讲者视图中显示)、'print'(仅在 PDF 打印时显示)。 |
hash |
Boolean | false |
是否将当前的幻灯片索引同步写入浏览器 URL 地址栏 hash(如 #/2/1)。开启后支持刷新不丢失进度、前进后退及页面书签直达。在 reveal.js 早期版本中名为 history。
|
respondToHashChanges |
Boolean | true |
当浏览器 URL 的 hash 被外部改动(或点击后退键)时,是否立即将幻灯片切换到对应目标页。 |
hashOneBasedIndex |
Boolean | false |
URL 中的页码是否从 1 开始计(默认为 0 索引,即 #/0 为第一页)。设置为 true 更符合普通阅读者习惯。 |
navigationMode |
String | 'default' |
二维幻灯片的按键导航路由模式:
|
四、翻页交互、自动播放与行为控制
这一组配置控制用户日常操作的灵敏度,包括键盘快捷键的激活范围、鼠标滚轮响应、动画片段行为,以及展台轮播场景下不可或缺的自动翻页逻辑。
| 配置项 | 类型 | 默认值 | 功能定义与注意事项 |
|---|---|---|---|
keyboard |
Boolean / Object | true |
是否开启键盘快捷键监听。可以传入自定义键位绑定对象(如 { 38: 'prev', 40: 'next' })实现按键重映射。 |
keyboardCondition |
String / Function / null | null |
决定键盘事件是否应该被触发的判定条件。默认只要当前文档拥有焦点即可生效;可传 'focused'(要求当前幻灯片容器元素拥有焦点),常用于同一页面嵌入多个组件或含有表单输入的复杂场景。
|
touch |
Boolean | true |
是否在移动端或触摸屏设备上开启滑动手势导航。 |
mouseWheel |
Boolean | false |
是否允许使用鼠标滚轮翻页。务必谨慎开启:许多现代鼠标(如 Magic Mouse)或高精度触控板极易因惯性滚动连跳多页,导致演讲失控。 |
loop |
Boolean | false |
翻页到最后一页后,再次点击下一步是否循环回到第一页。展厅自动宣传屏需设为 true。 |
shuffle |
Boolean | false |
初始化时是否随机打乱所有幻灯片的顺序。通常用于抽奖、随机答题等特殊演示场景。 |
fragments |
Boolean | true |
全局开关。设为 false 时,幻灯片内所有具有 class="fragment" 的逐步展示元素将全部默认直接可见,不再执行步进显示。 |
fragmentInURL |
Boolean | true |
是否将当前显示的片段索引也同步进 URL 地址(如 #/1/2/1)。开启后可以精准将特定动画步骤的页面分享给他人。 |
autoSlide |
Number | 0 |
自动翻页间隔时间(毫秒)。默认 0 表示关闭自动播放。设置为 5000 即表示每隔 5 秒自动切换下一页。单独幻灯片标签可通过 data-autoslide="3000" 属性覆盖全局时长。
|
autoSlideStoppable |
Boolean | true |
当用户进行手动键盘输入或鼠标点击时,是否自动暂停计时翻页。设为 false 时则无论用户如何操作均强制继续轮播。 |
pause |
Boolean | true |
是否允许按下键盘上的 B 或 . 键让屏幕全黑(暂停演讲),再次按下恢复播放。 |
help |
Boolean | true |
是否允许按下问号键 ? 时弹出快捷键帮助说明遮罩窗口。 |
五、转场动画与外观视图配置项
转场过渡直接影响幻灯片的视觉观感与性能消耗。reveal.js 支持对页面切换动画和背景切换动画进行解耦独立配置。
| 配置项 | 类型 | 默认值 | 功能定义与注意事项 |
|---|---|---|---|
transition |
String | 'slide' |
幻灯片内容的切换动效。可选内置值:
'none'(无动效)、'fade'(交叉渐隐)、'slide'(平移滑动)、'convex'(凸面翻转)、'concave'(凹面翻转)、'zoom'(缩放)。单页可用 data-transition="..." 单独覆盖。
|
transitionSpeed |
String | 'default' |
动效速度。可选:'default'(800ms)、'fast'(400ms)、'slow'(1200ms)。 |
backgroundTransition |
String | 'fade' |
幻灯片全屏背景元素(如全屏底色、大图或背景视频)之间的转场过渡模式,默认为平滑的渐隐淡出效果。 |
center |
Boolean | true |
幻灯片内部的文字和内容元素是否在垂直方向自动居中。若设为 false,所有内容将顶格从最上方开始排版。 |
overview |
Boolean | true |
是否允许按下 Esc 或 O 键进入全览矩阵视图(Overview Mode)。在长篇演讲中用于快速定位任意页面。 |
view |
String | 'default' |
视图展示形态。可选 'default'(传统全屏翻页)或 'scroll'(连续流式滚动视图,类似单页文章式长图阅读)。
|
hideInactiveCursor |
Boolean | true |
在无鼠标操作一段时间后,是否自动隐藏鼠标光标指针,保持演播画面纯净。 |
hideCursorTime |
Number | 5000 |
触发隐藏光标所需的静止时间(毫秒),默认 5 秒。 |
六、视距加载、媒体与 PDF 打印导出配置
在包含大量高分辨率图片、嵌入式 iframe 网页或视频的长篇幻灯片中,如果一次性将全部资源加载至 DOM 中,容易造成内存剧增甚至浏览器卡死。为此,reveal.js 提供了懒加载视距管理机制。
| 配置项 | 类型 | 默认值 | 功能定义与注意事项 |
|---|---|---|---|
viewDistance |
Number | 3 |
在当前激活页面前后预先载入并保持可见的幻灯片数量。距离当前页超过此阈值的页面会被暂时移出活跃渲染树以节约内存。 |
mobileViewDistance |
Number | 2 |
移动端设备上的预加载视距。移动设备内存与带宽相对紧张,默认取更小值 2。 |
autoPlayMedia |
Boolean / null | null |
进入幻灯片时是否全局自动播放音频或视频媒体。为 null 时尊重 HTML 标签自身的 data-autoplay 配置。
|
preloadIframes |
Boolean / null | null |
是否提前加载所有 <iframe>。为 null 时遵循懒加载策略,即仅当 iframe 接近视距范围时才加载其实际页面内容。 |
pdfMaxPagesPerSlide |
Number | Infinity |
在将幻灯片导出打印为 PDF 时,单个逻辑页允许拆分出的最大纸张页数(避免超长内容产生无限空白页)。 |
pdfSeparateFragments |
Boolean | true |
打印 PDF 时,每个 fragment 动画步骤是否独立打印为单独一张纸。若希望打印精炼讲义,建议显式改为 false。 |
pdfPageHeightOffset |
Number | -1 |
打印 PDF 时每页高度的微调偏移量(像素)。由于不同浏览器打印引擎对页边距的处理存在微小差异,此选项可避免末尾偶发多出一页空白。 |
七、配置项分类归纳与生产场景推荐预设
在实际项目交付中,直接依赖默认配置往往无法满足特定场合的严谨要求。根据演讲汇报、自动化信息大屏、嵌入式交互组件以及讲义打印等主流诉求,推荐以下配置模板。
典型生产配置示例代码
// 生产推荐:专业技术分享配置方案
Reveal.initialize({
// 1. 采用主流 16:9 物理比例
width: 1280,
height: 720,
margin: 0.06,
minScale: 0.2,
maxScale: 1.8,
// 2. 状态与路由
hash: true,
respondToHashChanges: true,
slideNumber: 'c/t',
showSlideNumber: 'all',
// 3. 控制与安全交互
controls: false, // 隐藏屏幕边缘箭头,画面更干净
progress: true, // 底部保留细进度条
keyboard: true,
keyboardCondition: null,
mouseWheel: false, // 强烈建议禁用,防止滚轮滑步
touch: true,
loop: false,
// 4. 动效与视觉
center: true,
transition: 'fade', // 'fade' 比 'slide' 更加沉稳且性能开销低
transitionSpeed: 'default',
backgroundTransition: 'fade',
// 5. 视图管理
viewDistance: 3,
// 6. 插件集成(语法高亮与演讲者视窗)
plugins: [ RevealHighlight, RevealNotes ]
});
- 投影仪两端被切除或文字超出:检查是否修改了
disableLayout: true。若在小屏幕或异常比例显示器上出现裁切,应适当调大margin(例如设为0.08)或增大minScale的取值范围。 - 动画步骤在 PDF 打印时全部挤成一团:由于
pdfSeparateFragments: true默认会将每个片段单独生成一页纸,若不需要这种分解,将该项设置为false即可合并为最终版面。 - 嵌入其他系统后按键失效:检查
keyboardCondition是否设置为'focused',若设置了该项,必须先通过鼠标点击.reveal容器使之获取焦点,快捷键才会响应。
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
相关标签:








