web-presentation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
⚠️ READ THIS ENTIRE FILE BEFORE CREATING A WEB PRESENTATION ⚠️
⚠️ 创建网页演示文稿前请通读此文件 ⚠️

Web Presentation Skill

网页演示文稿制作指南

Create elegant, interactive presentations powered by Reveal.js. Supports two modes:
  1. Single-file mode: Self-contained HTML presentations for quick sharing
  2. Repository mode: Multi-presentation management system with GitHub Pages deployment and auto-generated index
Perfect for product launches, technical talks, educational content, and building a complete presentation portfolio.
基于Reveal.js创建精美、交互式的演示文稿。支持两种模式
  1. 单文件模式:独立的HTML演示文稿,便于快速分享
  2. 仓库模式:多演示文稿管理系统,支持GitHub Pages部署和自动生成索引页
非常适合产品发布、技术演讲、教育内容制作,以及搭建完整的演示文稿作品集。

Overview

概述

This skill supports two distinct modes:
本指南支持两种截然不同的模式:

Mode 1: Single Presentation (Quick & Simple)

模式1:单演示文稿(快速简易)

Creates self-contained HTML presentations with:
  • 🎬 Advanced animations - Fragment animations, auto-animate, parallax effects
  • 🎤 Speaker notes - Dedicated speaker view with notes and timer (press S)
  • 🔍 Overview mode - Bird's-eye view of all slides (press ESC)
  • 🎨 Professional transitions - Multiple transition effects (slide/fade/zoom/convex/concave)
  • 📐 Multiple layouts - Title, content, two-column, image+text, quotes, sections
  • 🎯 Vertical navigation - Nested slides for hierarchical content
  • ⌨️ Keyboard shortcuts - Full keyboard control including fullscreen mode
  • 📊 Progress tracking - Visual progress bar and slide counter
  • 📱 Responsive design - Automatic scaling to fit any screen size (desktop, tablet, mobile)
  • 🔌 Plugin ecosystem - Markdown, code highlighting, math equations, search
  • 🚀 Single-file output - Everything via CDN, no build process required
  • 🛠️ Full API access - Complete Reveal.js API for advanced customization
创建独立的HTML演示文稿,具备以下特性:
  • 🎬 高级动画 - 片段动画、自动动画、视差效果
  • 🎤 演讲者备注 - 专用演讲者视图,包含备注和计时器(按S键打开)
  • 🔍 概览模式 - 所有幻灯片的鸟瞰视图(按ESC键打开)
  • 🎨 专业切换效果 - 多种切换动画(滑动/淡入淡出/缩放/凸面/凹面)
  • 📐 多种布局 - 标题页、内容页、双栏布局、图文结合、引用页、章节分隔页
  • 🎯 垂直导航 - 嵌套幻灯片,支持层级内容
  • ⌨️ 键盘快捷键 - 完整的键盘控制,包括全屏模式
  • 📊 进度跟踪 - 可视化进度条和幻灯片计数器
  • 📱 响应式设计 - 自动适配任意屏幕尺寸(桌面、平板、移动设备)
  • 🔌 插件生态系统 - Markdown、代码高亮、数学公式、搜索功能
  • 🚀 单文件输出 - 所有资源通过CDN加载,无需构建流程
  • 🛠️ 完整API访问 - 完整的Reveal.js API,支持高级定制

Responsive Design Features

响应式设计特性

Smart Screen Adaptation
  • Automatic scaling - Presentations automatically scale to fill available screen space while maintaining proper aspect ratio
  • Viewport optimization - Dynamic sizing based on window dimensions (16:9 aspect ratio)
  • Mobile-friendly - Optimal font sizes and layouts for devices of all sizes
  • Margin management - Configurable margins to ensure content stays readable on any screen
  • Window resize handling - Presentations reflow automatically when browser is resized
🎯 Configuration Options
  • minScale
    /
    maxScale
    - Control minimum (20%) and maximum (200%) scaling ranges
  • margin
    - Set presentation margins (default 5%) to ensure breathing room
  • width
    /
    height
    - Use 100% to fill available space with responsive sizing
智能屏幕适配
  • 自动缩放 - 演示文稿自动缩放以填充可用屏幕空间,同时保持正确的宽高比
  • 视口优化 - 根据窗口尺寸动态调整(16:9宽高比)
  • 移动端友好 - 针对各种尺寸设备优化字体大小和布局
  • 边距管理 - 可配置边距,确保内容在任意屏幕上都清晰可读
  • 窗口大小调整处理 - 浏览器窗口调整大小时,演示文稿自动重新排版
🎯 配置选项
  • minScale
    /
    maxScale
    - 控制最小(20%)和最大(200%)缩放范围
  • margin
    - 设置演示文稿边距(默认5%),确保内容有足够呼吸空间
  • width
    /
    height
    - 设置为100%可实现响应式尺寸填充可用空间

Mode 2: Presentation Repository (Professional & Scalable)

模式2:演示文稿仓库(专业可扩展)

Manages multiple presentations with:
  • 📁 Organized structure - Each presentation in its own folder with metadata
  • 🖼️ Auto-generated index - Beautiful gallery page showing all presentations
  • 🏷️ Metadata system - JSON metadata files for each presentation (title, author, date, tags, etc.)
  • 🌐 GitHub Pages ready - One-command deployment to GitHub Pages
  • 📸 Thumbnail support - Visual previews for each presentation
  • 🔍 Searchable & filterable - Index page with tags and categories
  • 🛠️ Build scripts - Automated index generation via Node.js
  • 📦 Template system - Quick creation of new presentations from templates
管理多个演示文稿,具备以下特性:
  • 📁 结构化组织 - 每个演示文稿存放在独立文件夹中,包含元数据
  • 🖼️ 自动生成索引 - 精美的画廊页面,展示所有演示文稿
  • 🏷️ 元数据系统 - 每个演示文稿对应JSON元数据文件(标题、作者、日期、标签等)
  • 🌐 适配GitHub Pages - 一键部署到GitHub Pages
  • 📸 缩略图支持 - 每个演示文稿的可视化预览
  • 🔍 可搜索可筛选 - 带标签和分类的索引页
  • 🛠️ 构建脚本 - 通过Node.js自动生成索引
  • 📦 模板系统 - 从模板快速创建新演示文稿

When to Use Each Mode

何时使用各模式

Single Presentation Mode - Use for: ✅ Quick one-off presentations ✅ Sharing a single deck via email or chat ✅ Embedding in documents or websites ✅ Claude.ai artifacts ✅ No-setup requirements
Repository Mode - Use for: ✅ Managing multiple presentations ✅ Building a presentation portfolio ✅ Team/organization presentation library ✅ GitHub Pages publication ✅ Categorized presentation collections ✅ Professional presentation website
单演示文稿模式 - 适用于: ✅ 快速创建一次性演示文稿 ✅ 通过电子邮件或聊天分享单个演示文稿 ✅ 嵌入到文档或网站中 ✅ Claude.ai 工件 ✅ 无需任何设置
仓库模式 - 适用于: ✅ 管理多个演示文稿 ✅ 搭建演示文稿作品集 ✅ 团队/组织演示文稿库 ✅ GitHub Pages发布 ✅ 分类演示文稿集合 ✅ 专业演示文稿网站

Common Use Cases

常见使用场景

Use this skill for: ✅ Product presentations and pitches ✅ Conference talks and tech presentations ✅ Educational slideshows and lectures ✅ Company all-hands or team updates ✅ Portfolio showcases ✅ Workshop materials ✅ Documentation walkthroughs ✅ Presentation portfolio websites ✅ Team presentation libraries
Don't use for: ❌ Static documents (use docx skill instead) ❌ Printable handouts (use pdf skill instead) ❌ Spreadsheet data (use xlsx skill instead) ❌ Rich media editing (needs external tools)

本指南适用于: ✅ 产品演示和推介 ✅ 会议演讲和技术分享 ✅ 教育幻灯片和讲座 ✅ 公司全员会议或团队更新 ✅ 作品集展示 ✅ 研讨会资料 ✅ 文档演练 ✅ 演示文稿作品集网站 ✅ 团队演示文稿库
不适用于: ❌ 静态文档(请使用docx相关工具) ❌ 可打印讲义(请使用pdf相关工具) ❌ 电子表格数据(请使用xlsx相关工具) ❌ 富媒体编辑(需要外部工具)

Repository Structure (Repository Mode)

仓库结构(仓库模式)

When using repository mode, the following structure is created:
presentation-repo/
├── index.html                    # Auto-generated index page (DO NOT EDIT)
├── .nojekyll                     # GitHub Pages config
├── package.json                  # Project configuration
├── package-lock.json             # Dependencies lock file
├── presentations/                # All presentations directory
│   ├── my-first-presentation/    # Individual presentation folder
│   │   ├── index.html           # Presentation HTML file
│   │   ├── metadata.json        # Presentation metadata
│   │   └── thumbnail.png        # Presentation thumbnail (800x600)
│   └── another-presentation/
│       ├── index.html
│       ├── metadata.json
│       └── thumbnail.png
├── templates/                    # Template files
│   ├── presentation-template.html   # Presentation template
│   ├── metadata-template.json       # Metadata template
│   └── index-template.html          # Index page template
├── scripts/                      # Build scripts
│   └── generate-index.js        # Index generation script
├── assets/                       # Shared resources
│   └── css/
│       └── custom.css           # Custom global styles
└── README.md                     # Repository documentation
使用仓库模式时,将创建以下结构:
presentation-repo/
├── index.html                    # 自动生成的索引页(请勿编辑)
├── .nojekyll                     # GitHub Pages配置文件
├── package.json                  # 项目配置文件
├── package-lock.json             # 依赖锁定文件
├── presentations/                # 所有演示文稿目录
│   ├── my-first-presentation/    # 单个演示文稿文件夹
│   │   ├── index.html           # 演示文稿HTML文件
│   │   ├── metadata.json        # 演示文稿元数据
│   │   └── thumbnail.png        # 演示文稿缩略图(800x600)
│   └── another-presentation/
│       ├── index.html
│       ├── metadata.json
│       └── thumbnail.png
├── templates/                    # 模板文件目录
│   ├── presentation-template.html   # 演示文稿模板
│   ├── metadata-template.json       # 元数据模板
│   └── index-template.html          # 索引页模板
├── scripts/                      # 构建脚本目录
│   └── generate-index.js        # 索引生成脚本
├── assets/                       # 共享资源目录
│   └── css/
│       └── custom.css           # 自定义全局样式
└── README.md                     # 仓库说明文档

Metadata JSON Schema

元数据JSON Schema

Each presentation has a
metadata.json
file:
json
{
  "id": "my-presentation",              // Unique identifier
  "title": "My Awesome Presentation",   // Display title
  "description": "A brief description", // Short description
  "author": "Author Name",              // Author name
  "date": "2026-02-10",                // Date (YYYY-MM-DD)
  "tags": ["tech", "tutorial"],        // Tags array
  "thumbnail": "thumbnail.png",         // Thumbnail filename
  "slides": 15,                         // Number of slides
  "language": "zh-CN",                  // Language code
  "category": "Tutorial"                // Category
}

每个演示文稿都有一个
metadata.json
文件:
json
{
  "id": "my-presentation",              # 唯一标识符
  "title": "My Awesome Presentation",   # 显示标题
  "description": "A brief description", # 简短描述
  "author": "Author Name",              # 作者名称
  "date": "2026-02-10",                # 日期(YYYY-MM-DD)
  "tags": ["tech", "tutorial"],        # 标签数组
  "thumbnail": "thumbnail.png",         # 缩略图文件名
  "slides": 15,                         # 幻灯片数量
  "language": "zh-CN",                  # 语言代码
  "category": "Tutorial"                # 分类
}

Workflow

工作流程

🎯 CRITICAL: First determine which mode the user needs, then follow the appropriate workflow.
🎯 关键提示:首先确定用户需要哪种模式,然后遵循相应的工作流程。

Decision: Which Mode?

决策:选择哪种模式?

Ask the user:
您需要创建什么类型的演示文稿项目?

1. **单个演示文稿** - 创建一个独立的HTML文件
   - 适合:快速分享、一次性演讲、嵌入文档
   
2. **演示文稿仓库** - 创建一个完整的演示文稿管理系统
   - 适合:多个演示文稿、团队库、GitHub Pages发布、演示文稿作品集

请选择:[1] 单个演示文稿  [2] 演示文稿仓库

询问用户:
您需要创建什么类型的演示文稿项目?

1. **单个演示文稿** - 创建一个独立的HTML文件
   - 适合:快速分享、一次性演讲、嵌入文档
   
2. **演示文稿仓库** - 创建一个完整的演示文稿管理系统
   - 适合:多个演示文稿、团队库、GitHub Pages发布、演示文稿作品集

请选择:[1] 单个演示文稿  [2] 演示文稿仓库

Workflow A: Single Presentation Mode

工作流程A:单演示文稿模式

This workflow uses an interactive, question-guided approach. Always ask questions to understand the user's needs before generating any code.
此工作流程采用交互式、引导式提问方法。在生成任何代码之前,务必先提问以了解用户需求。

Step 1: Initial Discovery (Ask Questions)

步骤1:初始调研(提问)

ALWAYS start by asking these questions to the user:
让我为您创建一个精彩的演示文稿!首先,我需要了解一些信息:

📌 **内容方面:**
1. 演示文稿的主题是什么?
2. 目标受众是谁?(客户、团队、学生、投资人?)
3. 核心信息是什么?(3-5个主要观点)
4. 预计需要多少张幻灯片?(快速演讲5-10张 / 标准演示15-25张 / 长篇讲座30+张)

🎨 **视觉风格:**
5. 您偏好什么视觉风格?
   - □ 专业商务(深色、简约)
   - □ 创意活泼(彩色、动感)
   - □ 极简主义(留白、聚焦)
   - □ 技术感(代码、图表)
   
6. 是否有品牌颜色要求?(如果有,请提供色值)

✨ **动画效果:**
7. 您需要什么程度的动画效果?
   - □ 基础(简单淡入淡出)
   - □ 中等(逐步显示要点)
   - □ 高级(元素变换、数据可视化动画)

🎤 **特殊功能:**
8. 是否需要以下功能?
   - □ 演讲者备注(用于演讲提示)
   - □ 代码高亮显示
   - □ 数学公式支持
   - □ 垂直嵌套幻灯片(章节内子主题)
Wait for user responses before proceeding to Step 2.
务必首先向用户询问以下问题:
让我为您创建一个精彩的演示文稿!首先,我需要了解一些信息:

📌 **内容方面:**
1. 演示文稿的主题是什么?
2. 目标受众是谁?(客户、团队、学生、投资人?)
3. 核心信息是什么?(3-5个主要观点)
4. 预计需要多少张幻灯片?(快速演讲5-10张 / 标准演示15-25张 / 长篇讲座30+张)

🎨 **视觉风格:**
5. 您偏好什么视觉风格?
   - □ 专业商务(深色、简约)
   - □ 创意活泼(彩色、动感)
   - □ 极简主义(留白、聚焦)
   - □ 技术感(代码、图表)
   
6. 是否有品牌颜色要求?(如果有,请提供色值)

✨ **动画效果:**
7. 您需要什么程度的动画效果?
   - □ 基础(简单淡入淡出)
   - □ 中等(逐步显示要点)
   - □ 高级(元素变换、数据可视化动画)

🎤 **特殊功能:**
8. 是否需要以下功能?
   - □ 演讲者备注(用于演讲提示)
   - □ 代码高亮显示
   - □ 数学公式支持
   - □ 垂直嵌套幻灯片(章节内子主题)
等待用户回复后再进行步骤2。

Step 2: Content Planning (Collaborative Structure)

步骤2:内容规划(协作式结构设计)

Based on user's answers, propose a slide structure and ask for confirmation:
根据您的需求,我建议以下结构:

📋 **建议的幻灯片结构:**

1. 标题页 - [主题]
2. 议程 - 本次演示的内容概览
3. 【第一部分】章节分隔符 - [第一个主要话题]
   ├─ 4. [子主题1]
   ├─ 5. [子主题2]
   └─ 6. [子主题3]
4. 【第二部分】章节分隔符 - [第二个主要话题]
   ├─ 7. [子主题1]
   └─ 8. [子主题2]
5. 总结 - 核心要点回顾
6. 结束页 - 致谢与问答

这个结构符合您的需求吗?是否需要调整?
Wait for user confirmation or adjustment before proceeding.
根据用户的回答,提出幻灯片结构建议并请求确认:
根据您的需求,我建议以下结构:

📋 **建议的幻灯片结构:**

1. 标题页 - [主题]
2. 议程 - 本次演示的内容概览
3. 【第一部分】章节分隔符 - [第一个主要话题]
   ├─ 4. [子主题1]
   ├─ 5. [子主题2]
   └─ 6. [子主题3]
4. 【第二部分】章节分隔符 - [第二个主要话题]
   ├─ 7. [子主题1]
   └─ 8. [子主题2]
5. 总结 - 核心要点回顾
6. 结束页 - 致谢与问答

这个结构符合您的需求吗?是否需要调整?
等待用户确认或调整后再进行下一步。

Step 3: Animation & Feature Selection

步骤3:动画与功能选择

Ask about specific animation and feature requirements:
现在让我们确定动画和交互细节:

🎭 **动画配置:**
1. 幻灯片切换效果偏好?
   - slide(滑动,默认)
   - fade(淡入淡出)
   - zoom(缩放)
   - convex(凸出)
   - concave(凹陷)

2. 要点列表是否需要逐条显示?(推荐)
   ☐ 是,要点逐条淡入
   ☐ 否,一次全部显示

3. 是否需要特殊动画?
   ☐ 元素自动变换(数字变化、图形变形)
   ☐ 高亮强调(当前要点高亮)
   ☐ 代码逐行显示

📝 **演讲者功能:**
4. 每张幻灯片是否需要演讲者备注?
   ☐ 是,我会提供每页的讲解提示
   ☐ 否,仅幻灯片内容

选择您需要的选项,我将据此创建演示文稿。
Wait for user's selections.
询问具体的动画和功能需求:
现在让我们确定动画和交互细节:

🎭 **动画配置:**
1. 幻灯片切换效果偏好?
   - slide(滑动,默认)
   - fade(淡入淡出)
   - zoom(缩放)
   - convex(凸出)
   - concave(凹陷)

2. 要点列表是否需要逐条显示?(推荐)
   ☐ 是,要点逐条淡入
   ☐ 否,一次全部显示

3. 是否需要特殊动画?
   ☐ 元素自动变换(数字变化、图形变形)
   ☐ 高亮强调(当前要点高亮)
   ☐ 代码逐行显示

📝 **演讲者功能:**
4. 每张幻灯片是否需要演讲者备注?
   ☐ 是,我会提供每页的讲解提示
   ☐ 否,仅幻灯片内容

选择您需要的选项,我将据此创建演示文稿。
等待用户选择。

Step 4: Read the Template

步骤4:阅读模板

CRITICAL: Before writing any code, read the Reveal.js template file:
templates/viewer-reveal.html
This template contains:
  • Reveal.js integration: CDN links to Reveal.js 5.x core and plugins
  • Theme system: CSS custom properties for brand colors
  • Layout classes: Pre-built styles for all 6 layout types
  • Configuration object:
    PRESENTATION_CONFIG
    with all Reveal.js options
  • Plugin setup: Code highlighting, Markdown, Math, Notes, Zoom, Search
  • Full API access: Complete Reveal.js API exposed via
    window.PresentationAPI
The template is your foundation. Copy it and customize the content sections.
关键提示: 在编写任何代码之前,请先阅读Reveal.js模板文件:
templates/viewer-reveal.html
该模板包含:
  • Reveal.js集成:Reveal.js 5.x核心和插件的CDN链接
  • 主题系统:用于品牌颜色的CSS自定义属性
  • 布局类:预构建的6种布局样式
  • 配置对象:包含所有Reveal.js选项的
    PRESENTATION_CONFIG
  • 插件设置:代码高亮、Markdown、数学公式、备注、缩放、搜索
  • 完整API访问:通过
    window.PresentationAPI
    暴露完整的Reveal.js API
模板是您的基础。复制模板并自定义内容部分。

Step 5: Generate Slide Content

步骤5:生成幻灯片内容

Create slides using standard HTML
<section>
tags within
.reveal .slides
:
Basic structure:
html
<div class="reveal">
    <div class="slides">
        <!-- Each <section> is a slide -->
        <section class="slide-title">
            <h1>Title</h1>
        </section>
        
        <section class="slide-content">
            <h2>Content</h2>
            <ul>
                <li class="fragment">Point 1</li>
                <li class="fragment">Point 2</li>
            </ul>
            
            <!-- Speaker notes -->
            <aside class="notes">
                This is what you'll say...
            </aside>
        </section>
        
        <!-- Nested slides (vertical navigation) -->
        <section>
            <section><h2>Main Topic</h2></section>
            <section><h3>Subtopic 1</h3></section>
            <section><h3>Subtopic 2</h3></section>
        </section>
    </div>
</div>
Fragment animations (progressive reveal):
html
<ul>
    <li class="fragment">Appears first</li>
    <li class="fragment">Appears second</li>
    <li class="fragment fade-in">Fades in</li>
    <li class="fragment fade-up">Slides up</li>
    <li class="fragment highlight-red">Highlights in red</li>
</ul>
Available fragment animations:
  • fragment
    - Basic fade in
  • fragment fade-in
    - Fade in
  • fragment fade-out
    - Fade out
  • fragment fade-up
    - Slide up
  • fragment fade-down
    - Slide down
  • fragment grow
    - Grow larger
  • fragment shrink
    - Shrink smaller
  • fragment highlight-red
    - Highlight in red
  • fragment highlight-blue
    - Highlight in blue
  • fragment highlight-current-blue
    - Highlight current item
使用标准HTML
<section>
标签在
.reveal .slides
内创建幻灯片:
基本结构:
html
<div class="reveal">
    <div class="slides">
        <!-- 每个<section>代表一张幻灯片 -->
        <section class="slide-title">
            <h1>Title</h1>
        </section>
        
        <section class="slide-content">
            <h2>Content</h2>
            <ul>
                <li class="fragment">Point 1</li>
                <li class="fragment">Point 2</li>
            </ul>
            
            <!-- 演讲者备注 -->
            <aside class="notes">
                This is what you'll say...
            </aside>
        </section>
        
        <!-- 嵌套幻灯片(垂直导航) -->
        <section>
            <section><h2>Main Topic</h2></section>
            <section><h3>Subtopic 1</h3></section>
            <section><h3>Subtopic 2</h3></section>
        </section>
    </div>
</div>
片段动画(逐步显示):
html
<ul>
    <li class="fragment">Appears first</li>
    <li class="fragment">Appears second</li>
    <li class="fragment fade-in">Fades in</li>
    <li class="fragment fade-up">Slides up</li>
    <li class="fragment highlight-red">Highlights in red</li>
</ul>
可用的片段动画:
  • fragment
    - 基础淡入
  • fragment fade-in
    - 淡入
  • fragment fade-out
    - 淡出
  • fragment fade-up
    - 从下方滑入
  • fragment fade-down
    - 从上方滑入
  • fragment grow
    - 放大
  • fragment shrink
    - 缩小
  • fragment highlight-red
    - 红色高亮
  • fragment highlight-blue
    - 蓝色高亮
  • fragment highlight-current-blue
    - 当前项高亮

Step 6: Configure Presentation

步骤6:配置演示文稿

Update the
PRESENTATION_CONFIG
object:
javascript
const PRESENTATION_CONFIG = {
    // Basic info
    title: "Your Presentation Title",
    author: "Your Name",
    date: "2026年2月3日",
    
    // Theme colors
    theme: {
        primary: "#2E86AB",      // Main color
        secondary: "#A23B72",    // Secondary color
        accent: "#F18F01",       // Accent color
        background: "#0a0a0a",   // Background
        text: "#ffffff",         // Text color
        textMuted: "#cccccc"     // Muted text
    },
    
    // Reveal.js options
    revealOptions: {
        transition: 'slide',      // slide/fade/zoom/convex/concave
        controls: true,           // Show arrow controls
        progress: true,           // Show progress bar
        center: true,             // Vertical centering
        slideNumber: 'c/t',       // Show slide numbers
        hash: true,               // URL routing
        
        // Animation speed
        transitionSpeed: 'default', // default/fast/slow
        
        // Auto-advance (0 = disabled)
        autoSlide: 0,
        
        // Plugins (always included)
        plugins: [
            RevealMarkdown,
            RevealHighlight,
            RevealNotes,
            RevealZoom,
            RevealSearch,
            RevealMath.KaTeX
        ]
    }
};
Full configuration options: https://revealjs.com/config/
更新
PRESENTATION_CONFIG
对象:
javascript
const PRESENTATION_CONFIG = {
    // 基本信息
    title: "Your Presentation Title",
    author: "Your Name",
    date: "2026年2月3日",
    
    // 主题颜色
    theme: {
        primary: "#2E86AB",      // 主色调
        secondary: "#A23B72",    // 次要色调
        accent: "#F18F01",       // 强调色
        background: "#0a0a0a",   // 背景色
        text: "#ffffff",         // 文本颜色
        textMuted: "#cccccc"     // 弱化文本颜色
    },
    
    // Reveal.js选项
    revealOptions: {
        transition: 'slide',      // slide/fade/zoom/convex/concave
        controls: true,           // 显示箭头控制
        progress: true,           // 显示进度条
        center: true,             // 垂直居中
        slideNumber: 'c/t',       // 显示幻灯片编号
        hash: true,               // URL路由
        
        // 动画速度
        transitionSpeed: 'default', // default/fast/slow
        
        // 自动前进(0 = 禁用)
        autoSlide: 0,
        
        // 插件(始终包含)
        plugins: [
            RevealMarkdown,
            RevealHighlight,
            RevealNotes,
            RevealZoom,
            RevealSearch,
            RevealMath.KaTeX
        ]
    }
};
完整配置选项: https://revealjs.com/config/

Step 7: Add Advanced Features (Optional)

步骤7:添加高级功能(可选)

Speaker notes (press S to open):
html
<section>
    <h2>Slide Title</h2>
    <p>Public content...</p>
    
    <aside class="notes">
        Remember to emphasize this point.
        Mention the case study here.
        Time: 2 minutes on this slide.
    </aside>
</section>
Code highlighting with line numbers:
html
<section>
    <h2>Code Example</h2>
    <pre><code class="language-javascript" data-trim data-line-numbers="1-2|4-6">
function hello(name) {
    console.log(`Hello, ${name}!`);
}

// Usage
hello('World');
    </code></pre>
</section>
Math equations (KaTeX):
html
<section>
    <h2>Mathematical Formula</h2>
    <p>The quadratic formula:</p>
    <p>$$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$</p>
</section>
Auto-animate (element transitions):
html
<section data-auto-animate>
    <h2 style="margin-top: 100px;">Animate</h2>
</section>
<section data-auto-animate>
    <h2 style="margin-top: 400px; color: red;">Animate</h2>
</section>
Custom backgrounds:
html
<section data-background-color="#ff0000">
    <h2>Red Background</h2>
</section>

<section data-background-image="url.jpg">
    <h2>Image Background</h2>
</section>

<section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)">
    <h2>Gradient Background</h2>
</section>
演讲者备注(按S键打开):
html
<section>
    <h2>Slide Title</h2>
    <p>Public content...</p>
    
    <aside class="notes">
        Remember to emphasize this point.
        Mention the case study here.
        Time: 2 minutes on this slide.
    </aside>
</section>
带行号的代码高亮:
html
<section>
    <h2>Code Example</h2>
    <pre><code class="language-javascript" data-trim data-line-numbers="1-2|4-6">
function hello(name) {
    console.log(`Hello, ${name}!`);
}

// Usage
hello('World');
    </code></pre>
</section>
数学公式(KaTeX):
html
<section>
    <h2>Mathematical Formula</h2>
    <p>The quadratic formula:</p>
    <p>$$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$</p>
</section>
自动动画(元素过渡):
html
<section data-auto-animate>
    <h2 style="margin-top: 100px;">Animate</h2>
</section>
<section data-auto-animate>
    <h2 style="margin-top: 400px; color: red;">Animate</h2>
</section>
自定义背景:
html
<section data-background-color="#ff0000">
    <h2>Red Background</h2>
</section>

<section data-background-image="url.jpg">
    <h2>Image Background</h2>
</section>

<section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)">
    <h2>Gradient Background</h2>
</section>

Step 8: Validate and Test

步骤8:验证与测试

Generate the HTML file and verify:
  1. Open in browser - File loads correctly
  2. Navigate all slides - Arrow keys work (→ = next, ↓ = nested)
  3. Test fragments - Progressive reveals work
  4. Speaker view - Press S (opens in new window)
  5. Overview mode - Press ESC (thumbnail view)
  6. Fullscreen - Press F
  7. Search - Press Ctrl+Shift+F
  8. Zoom - Alt+Click to zoom in
  9. Help overlay - Press ? for shortcuts
Common issues:
  • Slides not showing: Check
    <section>
    tags are inside
    .reveal .slides
  • Fragments not working: Ensure
    class="fragment"
    is set
  • Speaker notes not appearing: Press S, check
    <aside class="notes">
  • Code not highlighted: Verify
    class="language-xxx"
    on
    <code>
生成HTML文件并验证:
  1. 在浏览器中打开 - 文件加载正常
  2. 导航所有幻灯片 - 箭头键可用(→ = 下一张,↓ = 嵌套幻灯片)
  3. 测试片段动画 - 逐步显示功能正常
  4. 演讲者视图 - 按S键(在新窗口打开)
  5. 概览模式 - 按ESC键(缩略图视图)
  6. 全屏 - 按F键
  7. 搜索 - 按Ctrl+Shift+F
  8. 缩放 - Alt+点击放大区域
  9. 帮助 overlay - 按?键查看快捷键
常见问题:
  • 幻灯片不显示:检查
    <section>
    标签是否在
    .reveal .slides
  • 片段动画不工作:确保设置了
    class="fragment"
  • 演讲者备注不显示:按S键,检查
    <aside class="notes">
    标签
  • 代码不高亮:验证
    <code>
    标签上的
    class="language-xxx"

Step 9: Deliver with Instructions

步骤9:交付并提供说明

Provide the HTML file with clear instructions:
File name:
[topic]-presentation.html
Output location: Save the HTML file to the
docs/
directory in your project
Usage instructions:
🎯 打开方式:在任何现代浏览器中打开此 HTML 文件

⌨️ 快捷键:
  → / Space    下一张幻灯片
  ←            上一张幻灯片
  ↓            向下进入子幻灯片(如果有)
  ↑            向上返回
  ESC          概览模式(查看所有幻灯片)
  S            演讲者视图(包含备注和计时器)
  F            全屏模式
  ?            显示所有快捷键
  Ctrl+Shift+F 搜索
  Alt+Click    放大区域

📱 移动端:左右滑动切换幻灯片

🎤 演讲提示:
  - 按 S 打开演讲者视图,可以看到备注、下一张预览和计时器
  - 建议使用双屏,一个屏幕给观众,一个屏幕给自己(演讲者视图)
Editing note:
如需修改内容,在 HTML 文件中找到 <div class="slides"> 部分,
编辑对应的 <section> 标签即可。

提供HTML文件和清晰的使用说明:
文件名:
[topic]-presentation.html
输出位置: 将HTML文件保存到项目的
docs/
目录
使用说明:
🎯 打开方式:在任何现代浏览器中打开此 HTML 文件

⌨️ 快捷键:
  → / Space    下一张幻灯片
  ←            上一张幻灯片
  ↓            向下进入子幻灯片(如果有)
  ↑            向上返回
  ESC          概览模式(查看所有幻灯片)
  S            演讲者视图(包含备注和计时器)
  F            全屏模式
  ?            显示所有快捷键
  Ctrl+Shift+F 搜索
  Alt+Click    放大区域

📱 移动端:左右滑动切换幻灯片

🎤 演讲提示:
  - 按 S 打开演讲者视图,可以看到备注、下一张预览和计时器
  - 建议使用双屏,一个屏幕给观众,一个屏幕给自己(演讲者视图)
编辑说明:
如需修改内容,在 HTML 文件中找到 <div class="slides"> 部分,
编辑对应的 <section> 标签即可。

Workflow B: Presentation Repository Mode

工作流程B:演示文稿仓库模式

Use this workflow when the user wants to manage multiple presentations with GitHub Pages deployment.
当用户需要管理多个演示文稿并部署到GitHub Pages时,使用此工作流程。

Step 1: Repository Initialization

步骤1:仓库初始化

Ask initial questions:
让我为您创建一个演示文稿管理仓库!首先:

📁 **仓库基本信息:**
1. 仓库名称是什么?(例如:my-presentations, tech-talks, company-slides)
2. 仓库放在哪个目录?(默认:当前工作目录)
3. 是否要立即创建示例演示文稿?(推荐:是)

📋 **初始内容:**
4. 如果创建示例,主题是什么?
5. 您的GitHub用户名是什么?(用于GitHub Pages配置)
Wait for responses.
询问初始问题:
让我为您创建一个演示文稿管理仓库!首先:

📁 **仓库基本信息:**
1. 仓库名称是什么?(例如:my-presentations, tech-talks, company-slides)
2. 仓库放在哪个目录?(默认:当前工作目录)
3. 是否要立即创建示例演示文稿?(推荐:是)

📋 **初始内容:**
4. 如果创建示例,主题是什么?
5. 您的GitHub用户名是什么?(用于GitHub Pages配置)
等待用户回复。

Step 2: Create Repository Structure

步骤2:创建仓库结构

Create the complete repository structure:
  1. Create directories:
bash
mkdir -p {repo-name}/{presentations,templates,scripts,assets/css}
  1. Copy template files:
    • scripts/generate-index.js
      - Index generation script
    • templates/presentation-template.html
      - Presentation template
    • templates/metadata-template.json
      - Metadata template
    • templates/index-template.html
      - Index page template
    • templates/README-template.md
      - README template
    • templates/.gitignore-template
      - .gitignore template
    • templates/custom-css-template.css
      - Custom CSS template
  2. Generate package.json with build scripts
  3. Create .nojekyll for GitHub Pages
  4. Create assets/css/custom.css for shared styles
  5. Create README.md with usage instructions
创建完整的仓库结构:
  1. 创建目录:
bash
mkdir -p {repo-name}/{presentations,templates,scripts,assets/css}
  1. 复制模板文件:
    • scripts/generate-index.js
      - 索引生成脚本
    • templates/presentation-template.html
      - 演示文稿模板
    • templates/metadata-template.json
      - 元数据模板
    • templates/index-template.html
      - 索引页模板
    • templates/README-template.md
      - README模板
    • templates/.gitignore-template
      - .gitignore模板
    • templates/custom-css-template.css
      - 自定义CSS模板
  2. 生成带构建脚本的package.json
  3. 创建适配GitHub Pages的.nojekyll
  4. 创建共享样式assets/css/custom.css
  5. 创建使用说明README.md

Step 3: Optional - Create Example Presentation

步骤3:可选 - 创建示例演示文稿

If user requested an example:
  1. Create
    presentations/example-presentation/
    directory
  2. Copy and customize presentation-template.html → index.html
  3. Create metadata.json with provided information
  4. Create or generate placeholder thumbnail.png (800x600)
如果用户要求创建示例:
  1. 创建
    presentations/example-presentation/
    目录
  2. 复制并自定义presentation-template.html → index.html
  3. 使用提供的信息创建metadata.json
  4. 创建或生成占位符thumbnail.png(800x600)

Step 4: Initialize and Build

步骤4:初始化与构建

bash
cd {repo-name}
npm install
npm run build
This generates the initial
index.html
with the presentation gallery.
bash
cd {repo-name}
npm install
npm run build
这将生成初始的
index.html
和演示文稿画廊。

Step 5: GitHub Pages Setup Instructions

步骤5:GitHub Pages设置说明

Provide step-by-step deployment instructions:
📚 仓库已创建!现在设置GitHub Pages:

**1. 初始化Git并推送到GitHub:**
```bash
cd {repo-name}
git init
git add .
git commit -m "Initial commit: Presentation repository"
git remote add origin https://github.com/{username}/{repo-name}.git
git push -u origin main
2. 配置GitHub Pages:
  1. 访问 https://github.com/{username}/{repo-name}/settings/pages
  2. Source: Deploy from a branch
  3. Branch: main / (root)
  4. 点击 Save
3. 等待部署(约1-3分钟) 您的演示文稿集合将在以下地址可访问: https://{username}.github.io/{repo-name}/
4. 添加新的演示文稿:
bash
undefined
提供分步部署说明:
📚 仓库已创建!现在设置GitHub Pages:

**1. 初始化Git并推送到GitHub:**
```bash
cd {repo-name}
git init
git add .
git commit -m "Initial commit: Presentation repository"
git remote add origin https://github.com/{username}/{repo-name}.git
git push -u origin main
2. 配置GitHub Pages:
  1. 访问 https://github.com/{username}/{repo-name}/settings/pages
  2. 源:从分支部署
  3. 分支:main / (root)
  4. 点击保存
3. 等待部署(约1-3分钟) 您的演示文稿集合将在以下地址可访问: https://{username}.github.io/{repo-name}/
4. 添加新的演示文稿:
bash
undefined

创建新演示文稿目录

创建新演示文稿目录

mkdir presentations/my-new-talk
mkdir presentations/my-new-talk

复制模板

复制模板

cp templates/presentation-template.html presentations/my-new-talk/index.html cp templates/metadata-template.json presentations/my-new-talk/metadata.json
cp templates/presentation-template.html presentations/my-new-talk/index.html cp templates/metadata-template.json presentations/my-new-talk/metadata.json

编辑内容和元数据

编辑内容和元数据

然后重新生成索引并部署

然后重新生成索引并部署

npm run deploy

**本地预览:**
```bash
npm run dev
访问 http://localhost:8080 查看索引页
undefined
npm run deploy

**本地预览:**
```bash
npm run dev
访问 http://localhost:8080 查看索引页
undefined

Step 6: Optional - Create GitHub Action for Auto-Deploy

步骤6:可选 - 创建GitHub Action自动部署

Ask user:
是否要创建GitHub Action自动部署?
这样每次push都会自动重新生成索引页。

[是] [否]
If yes, create
.github/workflows/deploy.yml
:
yaml
name: Generate Index and Deploy

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: Install dependencies
        run: npm install
      
      - name: Generate index
        run: npm run build
      
      - name: Commit and push if changed
        run: |
          git config --global user.name 'GitHub Action'
          git config --global user.email 'action@github.com'
          git add index.html
          git diff --quiet && git diff --staged --quiet || (git commit -m "Auto-generate index [skip ci]" && git push)
询问用户:
是否要创建GitHub Action自动部署?
这样每次push都会自动重新生成索引页。

[是] [否]
如果是,创建
.github/workflows/deploy.yml
yaml
name: Generate Index and Deploy

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: Install dependencies
        run: npm install
      
      - name: Generate index
        run: npm run build
      
      - name: Commit and push if changed
        run: |
          git config --global user.name 'GitHub Action'
          git config --global user.email 'action@github.com'
          git add index.html
          git diff --quiet && git diff --staged --quiet || (git commit -m "Auto-generate index [skip ci]" && git push)

Repository Mode Summary

仓库模式总结

After completion, the user has:
  • ✅ Complete presentation repository structure
  • ✅ Auto-generated index page with gallery view
  • ✅ Templates for quick presentation creation
  • ✅ Build scripts for automation
  • ✅ GitHub Pages deployment ready
  • ✅ npm scripts for common tasks
  • ✅ (Optional) GitHub Action for auto-deployment
Next steps for the user:
  1. Run
    npm run dev
    to preview locally
  2. Edit presentations and metadata
  3. Run
    npm run build
    after changes
  4. Run
    npm run deploy
    to push to GitHub
  5. Visit their GitHub Pages URL to see the live site

完成后,用户将拥有:
  • ✅ 完整的演示文稿仓库结构
  • ✅ 自动生成的画廊视图索引页
  • ✅ 用于快速创建演示文稿的模板
  • ✅ 自动化构建脚本
  • ✅ 适配GitHub Pages的部署
  • ✅ 用于常见任务的npm脚本
  • ✅ (可选)自动部署的GitHub Action
用户后续步骤:
  1. 运行
    npm run dev
    本地预览
  2. 编辑演示文稿和元数据
  3. 更改后运行
    npm run build
  4. 运行
    npm run deploy
    推送到GitHub
  5. 访问GitHub Pages URL查看在线站点

Available Layouts (with Reveal.js)

可用布局(基于Reveal.js)

All layouts are implemented as CSS classes applied to
<section>
elements. Combine with Reveal.js features for enhanced interactivity.
所有布局都通过应用到
<section>
元素的CSS类实现。结合Reveal.js功能增强交互性。

1. Title Slide (
class="slide-title"
)

1. 标题幻灯片(
class="slide-title"

Use for: Opening, closing, major section breaks
html
<section class="slide-title" data-transition="zoom">
    <h1>Main Title</h1>
    <p class="subtitle">Subtitle or description</p>
    <p class="author">Author Name | Date</p>
</section>
Features:
  • Full-screen, centered
  • Gradient background (primary → secondary colors)
  • White text with shadow
  • Large, impactful typography
  • Recommended transition:
    zoom
    or
    fade
With animation:
html
<section class="slide-title" data-transition="zoom">
    <h1 class="fragment">Main Title</h1>
    <p class="subtitle fragment">Subtitle appears second</p>
    <p class="author fragment">Author appears last</p>
</section>

用途: 开场、结束、主要章节分隔
html
<section class="slide-title" data-transition="zoom">
    <h1>Main Title</h1>
    <p class="subtitle">Subtitle or description</p>
    <p class="author">Author Name | Date</p>
</section>
特性:
  • 全屏、居中
  • 渐变背景(主色调→次要色调)
  • 带阴影的白色文本
  • 大尺寸、有冲击力的排版
  • 推荐切换效果:
    zoom
    fade
带动画:
html
<section class="slide-title" data-transition="zoom">
    <h1 class="fragment">Main Title</h1>
    <p class="subtitle fragment">Subtitle appears second</p>
    <p class="author fragment">Author appears last</p>
</section>

2. Content Slide (
class="slide-content"
)

2. 内容幻灯片(
class="slide-content"

Use for: Main content, bullet points, text, code
html
<section class="slide-content">
    <h2>Slide Title</h2>
    <p>Introduction paragraph...</p>
    <ul>
        <li class="fragment">Point one appears first</li>
        <li class="fragment">Point two appears second</li>
        <li class="fragment">Point three appears last</li>
    </ul>
    
    <aside class="notes">
        Speaker notes: Emphasize point two.
    </aside>
</section>
With code highlighting:
html
<section class="slide-content">
    <h2>Code Example</h2>
    <pre><code class="language-python" data-trim data-line-numbers="1-3|5-7">
def calculate_total(items):
    total = sum(item.price for item in items)
    return total
用途: 主要内容、项目符号、文本、代码
html
<section class="slide-content">
    <h2>Slide Title</h2>
    <p>Introduction paragraph...</p>
    <ul>
        <li class="fragment">Point one appears first</li>
        <li class="fragment">Point two appears second</li>
        <li class="fragment">Point three appears last</li>
    </ul>
    
    <aside class="notes">
        Speaker notes: Emphasize point two.
    </aside>
</section>
带代码高亮:
html
<section class="slide-content">
    <h2>Code Example</h2>
    <pre><code class="language-python" data-trim data-line-numbers="1-3|5-7">
def calculate_total(items):
    total = sum(item.price for item in items)
    return total

Usage example

Usage example

items = [Item(10), Item(20)] result = calculate_total(items) </code></pre>
</section> ```
Supported elements:
  • <h2>
    ,
    <h3>
    - Headings (styled with theme colors)
  • <p>
    - Paragraphs
  • <ul>
    ,
    <ol>
    ,
    <li>
    - Lists with custom bullets
  • <code>
    - Inline code (monospace font)
  • <pre><code>
    - Code blocks with syntax highlighting
  • <strong>
    - Bold (colored with accent)
  • <em>
    - Italic (colored with primary)

items = [Item(10), Item(20)] result = calculate_total(items) </code></pre>
</section> ```
支持的元素:
  • <h2>
    ,
    <h3>
    - 标题(使用主题颜色样式)
  • <p>
    - 段落
  • <ul>
    ,
    <ol>
    ,
    <li>
    - 带自定义项目符号的列表
  • <code>
    - 行内代码(等宽字体)
  • <pre><code>
    - 带语法高亮的代码块
  • <strong>
    - 粗体(使用强调色)
  • <em>
    - 斜体(使用主色调)

3. Two-Column Layout (
class="two-column"
)

3. 双栏布局(
class="two-column"

Use for: Comparisons, before/after, pros/cons
html
<section>
    <h2>Comparison</h2>
    <div class="two-column">
        <div class="fragment">
            <h3>Before</h3>
            <ul>
                <li>Slow performance</li>
                <li>Complex setup</li>
                <li>Limited features</li>
            </ul>
        </div>
        <div class="fragment">
            <h3>After</h3>
            <ul>
                <li>2x faster ✨</li>
                <li>One-click setup</li>
                <li>Full-featured</li>
            </ul>
        </div>
    </div>
</section>
Best practices:
  • Balance content between columns
  • Use parallel structure
  • Animate columns separately with fragments
  • Works great with auto-animate

用途: 对比、前后对比、优缺点
html
<section>
    <h2>Comparison</h2>
    <div class="two-column">
        <div class="fragment">
            <h3>Before</h3>
            <ul>
                <li>Slow performance</li>
                <li>Complex setup</li>
                <li>Limited features</li>
            </ul>
        </div>
        <div class="fragment">
            <h3>After</h3>
            <ul>
                <li>2x faster ✨</li>
                <li>One-click setup</li>
                <li>Full-featured</li>
            </ul>
        </div>
    </div>
</section>
最佳实践:
  • 平衡两栏内容
  • 使用平行结构
  • 用片段动画分别显示两栏
  • 结合自动动画效果更佳

4. Image + Text (
class="image-text"
)

4. 图文布局(
class="image-text"

Use for: Product showcases, visual explanations, diagrams
html
<section>
    <div class="image-text">
        <div>
            <h2>Feature Name</h2>
            <p>Description of the feature...</p>
            <ul>
                <li class="fragment">Benefit one</li>
                <li class="fragment">Benefit two</li>
                <li class="fragment">Benefit three</li>
            </ul>
        </div>
        <div class="fragment">
            <img src="https://via.placeholder.com/600x400" alt="Feature screenshot">
        </div>
    </div>
</section>
Image options:
  • External URLs: Quick and easy (requires internet)
  • Data URIs: Embed for offline use
  • SVG inline: Best for diagrams and icons
With auto-animate:
html
<section data-auto-animate>
    <div class="image-text">
        <div><h2>Initial State</h2></div>
        <img src="before.png" data-id="product">
    </div>
</section>
<section data-auto-animate>
    <div class="image-text">
        <div><h2>After Transformation</h2></div>
        <img src="after.png" data-id="product">
    </div>
</section>

用途: 产品展示、可视化说明、图表
html
<section>
    <div class="image-text">
        <div>
            <h2>Feature Name</h2>
            <p>Description of the feature...</p>
            <ul>
                <li class="fragment">Benefit one</li>
                <li class="fragment">Benefit two</li>
                <li class="fragment">Benefit three</li>
            </ul>
        </div>
        <div class="fragment">
            <img src="https://via.placeholder.com/600x400" alt="Feature screenshot">
        </div>
    </div>
</section>
图片选项:
  • 外部URL:快速简便(需要联网)
  • Data URIs:嵌入以便离线使用
  • 内联SVG:最适合图表和图标
带自动动画:
html
<section data-auto-animate>
    <div class="image-text">
        <div><h2>Initial State</h2></div>
        <img src="before.png" data-id="product">
    </div>
</section>
<section data-auto-animate>
    <div class="image-text">
        <div><h2>After Transformation</h2></div>
        <img src="after.png" data-id="product">
    </div>
</section>

5. Quote Slide (
class="slide-quote"
)

5. 引用幻灯片(
class="slide-quote"

Use for: Testimonials, impactful statements, emphasis
html
<section class="slide-quote" data-background-gradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)">
    <blockquote class="fragment">
        An impactful quote that emphasizes a key message
        and inspires the audience.
    </blockquote>
    <cite class="fragment">— Author Name, Title</cite>
</section>
Features:
  • Large italic font
  • Centered layout
  • Border-left accent
  • Works great with background gradients
  • Perfect for breaks between sections

用途: 推荐语、有冲击力的陈述、强调
html
<section class="slide-quote" data-background-gradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)">
    <blockquote class="fragment">
        An impactful quote that emphasizes a key message
        and inspires the audience.
    </blockquote>
    <cite class="fragment">— Author Name, Title</cite>
</section>
特性:
  • 大尺寸斜体字体
  • 居中布局
  • 左侧强调边框
  • 结合背景渐变效果更佳
  • 非常适合章节之间的过渡

6. Section Divider (
class="slide-section"
)

6. 章节分隔幻灯片(
class="slide-section"

Use for: Major topic transitions, chapter breaks
html
<section class="slide-section" data-background-gradient="linear-gradient(135deg, #A23B72 0%, #F18F01 100%)">
    <h2 class="fragment">Part Two</h2>
</section>
Features:
  • Full-screen colored background
  • Large white text with shadow
  • Creates visual rhythm
  • Use sparingly (2-4 per presentation)
  • Recommended transition:
    convex
    or
    zoom

用途: 主要主题过渡、章节分隔
html
<section class="slide-section" data-background-gradient="linear-gradient(135deg, #A23B72 0%, #F18F01 100%)">
    <h2 class="fragment">Part Two</h2>
</section>
特性:
  • 全屏彩色背景
  • 带阴影的大尺寸白色文本
  • 营造视觉节奏
  • 谨慎使用(每个演示文稿2-4个)
  • 推荐切换效果:
    convex
    zoom

7. Nested Slides (Vertical Navigation)

7. 嵌套幻灯片(垂直导航)

Use for: Hierarchical content, deep dives, optional details
html
<!-- Main topic (horizontal) -->
<section>
    <section>
        <h2>Main Topic</h2>
        <p>Press ↓ to dive deeper</p>
    </section>
    
    <!-- Subtopic 1 (vertical) -->
    <section>
        <h3>Subtopic 1</h3>
        <p>Detailed explanation...</p>
    </section>
    
    <!-- Subtopic 2 (vertical) -->
    <section>
        <h3>Subtopic 2</h3>
        <p>More details...</p>
    </section>
</section>

<!-- Next main topic (horizontal) -->
<section>
    <h2>Next Topic</h2>
</section>
Best practices:
  • Use for optional deep dives
  • Main topics go horizontal (→)
  • Subtopics go vertical (↓)
  • Visual indicator in controls
  • Great for Q&A sections

用途: 层级内容、深入讲解、可选细节
html
<!-- 主主题(水平) -->
<section>
    <section>
        <h2>Main Topic</h2>
        <p>Press ↓ to dive deeper</p>
    </section>
    
    <!-- 子主题1(垂直) -->
    <section>
        <h3>Subtopic 1</h3>
        <p>Detailed explanation...</p>
    </section>
    
    <!-- 子主题2(垂直) -->
    <section>
        <h3>Subtopic 2</h3>
        <p>More details...</p>
    </section>
</section>

<!-- 下一个主主题(水平) -->
<section>
    <h2>Next Topic</h2>
</section>
最佳实践:
  • 用于可选的深入讲解
  • 主主题使用水平导航(→)
  • 子主题使用垂直导航(↓)
  • 控件中有视觉指示器
  • 非常适合问答环节

Reveal.js Advanced Features

Reveal.js高级特性

Fragment Animations

片段动画

Progressive reveal of content within a slide:
Basic fragments:
html
<ul>
    <li class="fragment">Fade in (default)</li>
    <li class="fragment fade-in">Also fades in</li>
    <li class="fragment fade-out">Fades out</li>
    <li class="fragment fade-up">Slides in from bottom</li>
    <li class="fragment fade-down">Slides in from top</li>
    <li class="fragment fade-left">Slides in from right</li>
    <li class="fragment fade-right">Slides in from left</li>
</ul>
Emphasis fragments:
html
<ul>
    <li class="fragment grow">Grow larger</li>
    <li class="fragment shrink">Shrink smaller</li>
    <li class="fragment strike">Strike through</li>
    <li class="fragment highlight-red">Highlight in red</li>
    <li class="fragment highlight-blue">Highlight in blue</li>
    <li class="fragment highlight-green">Highlight in green</li>
    <li class="fragment highlight-current-red">Highlight current</li>
</ul>
Fragment index (control order):
html
<p class="fragment" data-fragment-index="3">Appears third</p>
<p class="fragment" data-fragment-index="1">Appears first</p>
<p class="fragment" data-fragment-index="2">Appears second</p>
Combining fragments:
html
<span class="fragment fade-in">
    <span class="fragment highlight-red">
        <span class="fragment fade-out">
            Text fades in, highlights red, then fades out
        </span>
    </span>
</span>

幻灯片内内容的逐步显示:
基础片段:
html
<ul>
    <li class="fragment">Fade in (default)</li>
    <li class="fragment fade-in">Also fades in</li>
    <li class="fragment fade-out">Fades out</li>
    <li class="fragment fade-up">Slides in from bottom</li>
    <li class="fragment fade-down">Slides in from top</li>
    <li class="fragment fade-left">Slides in from right</li>
    <li class="fragment fade-right">Slides in from left</li>
</ul>
强调片段:
html
<ul>
    <li class="fragment grow">Grow larger</li>
    <li class="fragment shrink">Shrink smaller</li>
    <li class="fragment strike">Strike through</li>
    <li class="fragment highlight-red">Highlight in red</li>
    <li class="fragment highlight-blue">Highlight in blue</li>
    <li class="fragment highlight-green">Highlight in green</li>
    <li class="fragment highlight-current-red">Highlight current</li>
</ul>
片段索引(控制顺序):
html
<p class="fragment" data-fragment-index="3">Appears third</p>
<p class="fragment" data-fragment-index="1">Appears first</p>
<p class="fragment" data-fragment-index="2">Appears second</p>
组合片段:
html
<span class="fragment fade-in">
    <span class="fragment highlight-red">
        <span class="fragment fade-out">
            Text fades in, highlights red, then fades out
        </span>
    </span>
</span>

Auto-Animate

自动动画

Smooth transitions between slide states:
Basic example:
html
<section data-auto-animate>
    <h2>Auto-Animate</h2>
</section>
<section data-auto-animate>
    <h2 style="margin-top: 100px; color: red;">Auto-Animate</h2>
</section>
Element matching (using data-id):
html
<section data-auto-animate>
    <div data-id="box" style="height: 50px; background: red;"></div>
</section>
<section data-auto-animate>
    <div data-id="box" style="height: 200px; background: blue;"></div>
</section>
Code morphing:
html
<section data-auto-animate>
    <pre><code data-trim data-line-numbers>
let x = 10;
    </code></pre>
</section>
<section data-auto-animate>
    <pre><code data-trim data-line-numbers>
let x = 10;
let y = 20;
let sum = x + y;
    </code></pre>
</section>
Auto-animate settings:
html
<section data-auto-animate data-auto-animate-easing="cubic-bezier(0.770, 0.000, 0.175, 1.000)">
<section data-auto-animate data-auto-animate-duration="2.0">

幻灯片状态之间的平滑过渡:
基础示例:
html
<section data-auto-animate>
    <h2>Auto-Animate</h2>
</section>
<section data-auto-animate>
    <h2 style="margin-top: 100px; color: red;">Auto-Animate</h2>
</section>
元素匹配(使用data-id):
html
<section data-auto-animate>
    <div data-id="box" style="height: 50px; background: red;"></div>
</section>
<section data-auto-animate>
    <div data-id="box" style="height: 200px; background: blue;"></div>
</section>
代码变形:
html
<section data-auto-animate>
    <pre><code data-trim data-line-numbers>
let x = 10;
    </code></pre>
</section>
<section data-auto-animate>
    <pre><code data-trim data-line-numbers>
let x = 10;
let y = 20;
let sum = x + y;
    </code></pre>
</section>
自动动画设置:
html
<section data-auto-animate data-auto-animate-easing="cubic-bezier(0.770, 0.000, 0.175, 1.000)">
<section data-auto-animate data-auto-animate-duration="2.0">

Speaker Notes

演讲者备注

Visible only in speaker view (press S):
Basic notes:
html
<section>
    <h2>Slide Title</h2>
    <p>Public content...</p>
    
    <aside class="notes">
        These notes are only visible in speaker view.
        - Remember to mention the case study
        - Emphasize the 2x performance improvement
        - Allow 2 minutes for this slide
    </aside>
</section>
Formatted notes:
html
<aside class="notes">
    <h4>Key Points:</h4>
    <ul>
        <li>Point one</li>
        <li>Point two</li>
    </ul>
    
    <p><strong>Time:</strong> 3 minutes</p>
</aside>
Speaker view features:
  • Current slide on left
  • Next slide preview on right
  • Speaker notes in center
  • Timer and slide counter
  • Can be full-screen on second monitor

仅在演讲者视图中可见(按S键):
基础备注:
html
<section>
    <h2>Slide Title</h2>
    <p>Public content...</p>
    
    <aside class="notes">
        These notes are only visible in speaker view.
        - Remember to mention the case study
        - Emphasize the 2x performance improvement
        - Allow 2 minutes for this slide
    </aside>
</section>
格式化备注:
html
<aside class="notes">
    <h4>Key Points:</h4>
    <ul>
        <li>Point one</li>
        <li>Point two</li>
    </ul>
    
    <p><strong>Time:</strong> 3 minutes</p>
</aside>
演讲者视图特性:
  • 左侧显示当前幻灯片
  • 右侧显示下一张幻灯片预览
  • 中间显示演讲者备注
  • 计时器和幻灯片计数器
  • 可在第二个显示器上全屏显示

Transitions

切换效果

Control slide transitions:
Per-slide transition:
html
<section data-transition="zoom">
    <h2>This slide zooms in</h2>
</section>

<section data-transition="fade">
    <h2>This slide fades</h2>
</section>
Available transitions:
  • none
    - Instant cut
  • fade
    - Cross-fade
  • slide
    - Slide horizontally (default)
  • convex
    - Slide at a convex angle
  • concave
    - Slide at a concave angle
  • zoom
    - Scale in/out
Separate in/out transitions:
html
<section data-transition="slide-in fade-out">
    <h2>Slides in, fades out</h2>
</section>
Transition speed:
html
<section data-transition-speed="fast">
    <h2>Quick transition</h2>
</section>
<!-- Options: default, fast, slow -->

控制幻灯片切换:
单张幻灯片切换:
html
<section data-transition="zoom">
    <h2>This slide zooms in</h2>
</section>

<section data-transition="fade">
    <h2>This slide fades</h2>
</section>
可用切换效果:
  • none
    - 即时切换
  • fade
    - 交叉淡入淡出
  • slide
    - 水平滑动(默认)
  • convex
    - 凸面角度滑动
  • concave
    - 凹面角度滑动
  • zoom
    - 缩放
分开的进入/退出切换效果:
html
<section data-transition="slide-in fade-out">
    <h2>Slides in, fades out</h2>
</section>
切换速度:
html
<section data-transition-speed="fast">
    <h2>Quick transition</h2>
</section>
<!-- 选项:default, fast, slow -->

Backgrounds

背景

Customize slide backgrounds:
Color backgrounds:
html
<section data-background-color="#ff0000">
    <h2>Red background</h2>
</section>
Gradient backgrounds:
html
<section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)">
    <h2>Gradient background</h2>
</section>
Image backgrounds:
html
<section data-background-image="url.jpg">
    <h2>Image background</h2>
</section>

<section data-background-image="url.jpg" data-background-size="cover">
<section data-background-image="url.jpg" data-background-opacity="0.3">
Video backgrounds:
html
<section data-background-video="video.mp4" data-background-video-loop data-background-video-muted>
    <h2>Video background</h2>
</section>
iframe backgrounds:
html
<section data-background-iframe="https://example.com" data-background-interactive>
    <h2>Interactive webpage background</h2>
</section>

自定义幻灯片背景:
颜色背景:
html
<section data-background-color="#ff0000">
    <h2>Red background</h2>
</section>
渐变背景:
html
<section data-background-gradient="linear-gradient(to bottom, #283b95, #17b2c3)">
    <h2>Gradient background</h2>
</section>
图片背景:
html
<section data-background-image="url.jpg">
    <h2>Image background</h2>
</section>

<section data-background-image="url.jpg" data-background-size="cover">
<section data-background-image="url.jpg" data-background-opacity="0.3">
视频背景:
html
<section data-background-video="video.mp4" data-background-video-loop data-background-video-muted>
    <h2>Video background</h2>
</section>
iframe背景:
html
<section data-background-iframe="https://example.com" data-background-interactive>
    <h2>Interactive webpage background</h2>
</section>

Code Highlighting

代码高亮

Syntax highlighting with Highlight.js:
Basic code block:
html
<pre><code class="language-javascript">
function hello(name) {
    console.log(`Hello, ${name}!`);
}
</code></pre>
Line numbers:
html
<pre><code class="language-python" data-line-numbers>
def calculate(x, y):
    result = x + y
    return result
</code></pre>
Highlight specific lines:
html
<pre><code class="language-java" data-line-numbers="1-2|4-6|8">
public class Hello {
    private String name;
    
    public Hello(String name) {
        this.name = name;
    }
    
    public void greet() {
        System.out.println("Hello, " + name);
    }
}
</code></pre>
Line number offset:
html
<pre><code data-line-numbers="10-15">
// Code starting at line 10
</code></pre>
Supported languages: JavaScript, Python, Java, C++, C#, Ruby, PHP, Go, Rust, TypeScript, SQL, HTML, CSS, Markdown, Bash, and 150+ more

使用Highlight.js实现语法高亮:
基础代码块:
html
<pre><code class="language-javascript">
function hello(name) {
    console.log(`Hello, ${name}!`);
}
</code></pre>
行号:
html
<pre><code class="language-python" data-line-numbers>
def calculate(x, y):
    result = x + y
    return result
</code></pre>
高亮特定行:
html
<pre><code class="language-java" data-line-numbers="1-2|4-6|8">
public class Hello {
    private String name;
    
    public Hello(String name) {
        this.name = name;
    }
    
    public void greet() {
        System.out.println("Hello, " + name);
    }
}
</code></pre>
行号偏移:
html
<pre><code data-line-numbers="10-15">
// Code starting at line 10
</code></pre>
支持的语言: JavaScript、Python、Java、C++、C#、Ruby、PHP、Go、Rust、TypeScript、SQL、HTML、CSS、Markdown、Bash以及150+种其他语言

Math Equations

数学公式

KaTeX integration for beautiful math:
Inline math:
html
<p>The formula $E = mc^2$ shows energy-mass equivalence.</p>
Display math:
html
<p>$$\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$</p>
Complex equations:
html
<section>
    <h2>Quadratic Formula</h2>
    <p>
    $$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$
    </p>
    
    <aside class="notes">
        Explain each component of the formula.
    </aside>
</section>
Multi-line equations:
html
<p>
$$
\begin{aligned}
a &= b + c \\
&= d + e + f
\end{aligned}
$$
</p>

集成KaTeX实现精美的数学公式:
行内数学公式:
html
<p>The formula $E = mc^2$ shows energy-mass equivalence.</p>
块级数学公式:
html
<p>$$\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$</p>
复杂公式:
html
<section>
    <h2>Quadratic Formula</h2>
    <p>
    $$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$
    </p>
    
    <aside class="notes">
        Explain each component of the formula.
    </aside>
</section>
多行公式:
html
<p>
$$
\begin{aligned}
a &= b + c \\
&= d + e + f
\end{aligned}
$$
</p>

Markdown Support

Markdown支持

Write slides in Markdown:
External Markdown file:
html
<section data-markdown="slides.md" data-separator="^\n---\n$" data-separator-vertical="^\n--\n$"></section>
Inline Markdown:
html
<section data-markdown>
    <textarea data-template>
        ## Slide Title
        
        - Bullet point one
        - Bullet point two
        
        **Bold text** and *italic text*
        
        ```javascript
        const code = "highlighted";
        ```
    </textarea>
</section>
Markdown with fragments:
html
<section data-markdown>
    <textarea data-template>
        ## Progressive Reveal
        
        - Item 1 <!-- .element: class="fragment" -->
        - Item 2 <!-- .element: class="fragment" -->
        - Item 3 <!-- .element: class="fragment" -->
    </textarea>
</section>

使用Markdown编写幻灯片:
外部Markdown文件:
html
<section data-markdown="slides.md" data-separator="^\n---\n$" data-separator-vertical="^\n--\n$"></section>
内联Markdown:
html
<section data-markdown>
    <textarea data-template>
        ## Slide Title
        
        - Bullet point one
        - Bullet point two
        
        **Bold text** and *italic text*
        
        ```javascript
        const code = "highlighted";
        ```
    </textarea>
</section>
带片段动画的Markdown:
html
<section data-markdown>
    <textarea data-template>
        ## Progressive Reveal
        
        - Item 1 <!-- .element: class="fragment" -->
        - Item 2 <!-- .element: class="fragment" -->
        - Item 3 <!-- .element: class="fragment" -->
    </textarea>
</section>

Interactive Features

交互特性

Search (Ctrl+Shift+F):
  • Automatically enabled with RevealSearch plugin
  • Searches all slide content
  • Highlights matches
  • Navigate between results
Zoom (Alt+Click):
  • Click any element while holding Alt
  • Zooms in to that element
  • Click again to zoom out
  • Great for highlighting details
Overview Mode (ESC):
  • Shows all slides as thumbnails
  • Click to jump to any slide
  • Great for navigation during Q&A
  • Shows slide hierarchy (horizontal/vertical)
Help Overlay (?):
  • Shows all keyboard shortcuts
  • Customizable
  • Automatically includes plugin shortcuts

搜索(Ctrl+Shift+F):
  • 随RevealSearch插件自动启用
  • 搜索所有幻灯片内容
  • 高亮匹配项
  • 在结果之间导航
缩放(Alt+点击):
  • 按住Alt键点击任意元素
  • 放大到该元素
  • 再次点击缩小
  • 非常适合突出细节
概览模式(ESC):
  • 显示所有幻灯片的缩略图
  • 点击跳转到任意幻灯片
  • 非常适合问答环节导航
  • 显示幻灯片层级(水平/垂直)
帮助Overlay(?):
  • 显示所有键盘快捷键
  • 可自定义
  • 自动包含插件快捷键

Reveal.js API Usage

Reveal.js API使用

The template exposes the full Reveal.js API via
window.PresentationAPI
:
Basic navigation:
javascript
// Access Reveal instance
const reveal = window.PresentationAPI.reveal;

// Navigate programmatically
reveal.slide(3);          // Go to slide 3
reveal.slide(2, 1);       // Go to slide 2, vertical slide 1
reveal.next();            // Next slide
reveal.prev();            // Previous slide
reveal.left();            // Navigate left
reveal.right();           // Navigate right
reveal.down();            // Navigate down (nested)
reveal.up();              // Navigate up (nested)
State management:
javascript
// Get current state
const state = reveal.getState();
console.log(state);  // {indexh: 2, indexv: 0, indexf: 1}

// Get total slides
const total = reveal.getTotalSlides();

// Get current slide element
const currentSlide = reveal.getCurrentSlide();

// Check if at first/last
reveal.isFirstSlide();
reveal.isLastSlide();
Toggle features:
javascript
// Toggle overview mode
reveal.toggleOverview();

// Toggle pause
reveal.togglePause();

// Toggle help overlay
reveal.toggleHelp();

// Toggle auto-slide
reveal.toggleAutoSlide();
Event listeners:
javascript
// Slide changed event
reveal.on('slidechanged', event => {
    console.log('Now on slide:', event.indexh);
    // Send analytics
    // Update external UI
    // Trigger custom logic
});

// Fragment shown/hidden
reveal.on('fragmentshown', event => {
    console.log('Fragment shown:', event.fragment);
});

reveal.on('fragmenthidden', event => {
    console.log('Fragment hidden:', event.fragment);
});

// Ready event
reveal.on('ready', event => {
    console.log('Presentation ready');
});

// Overview toggled
reveal.on('overviewshown', () => {
    console.log('Overview mode activated');
});

reveal.on('overviewhidden', () => {
    console.log('Overview mode deactivated');
});
Sync with external systems:
javascript
// Send slide changes to server
reveal.on('slidechanged', async event => {
    await fetch('/api/analytics', {
        method: 'POST',
        body: JSON.stringify({
            slide: event.indexh,
            timestamp: Date.now()
        })
    });
});

// Multi-screen synchronization
reveal.on('slidechanged', event => {
    // Broadcast to other windows
    localStorage.setItem('currentSlide', JSON.stringify(event));
});

window.addEventListener('storage', e => {
    if (e.key === 'currentSlide') {
        const {indexh, indexv} = JSON.parse(e.newValue);
        reveal.slide(indexh, indexv);
    }
});
Dynamic content:
javascript
// Load slide content dynamically
reveal.on('slidechanged', async event => {
    const slideId = event.currentSlide.getAttribute('data-slide-id');
    if (slideId) {
        const data = await fetch(`/api/slides/${slideId}`).then(r => r.json());
        event.currentSlide.innerHTML = data.content;
    }
});
Custom theme switching:
javascript
// Change theme colors dynamically
function changeTheme(themeName) {
    const themes = {
        blue: { primary: '#2E86AB', secondary: '#A23B72', accent: '#F18F01' },
        green: { primary: '#2d6a4f', secondary: '#52b788', accent: '#d8f3dc' },
        red: { primary: '#9d0208', secondary: '#dc2f02', accent: '#f48c06' }
    };
    
    const theme = themes[themeName];
    Object.entries(theme).forEach(([key, value]) => {
        const cssVar = `--color-${key}`;
        document.documentElement.style.setProperty(cssVar, value);
    });
}

// Usage: changeTheme('green')
Complete API reference: https://revealjs.com/api/

模板通过
window.PresentationAPI
暴露完整的Reveal.js API:
基础导航:
javascript
// 访问Reveal实例
const reveal = window.PresentationAPI.reveal;

// 程序化导航
reveal.slide(3);          // 跳转到第3张幻灯片
reveal.slide(2, 1);       // 跳转到第2张幻灯片的第1个垂直子幻灯片
reveal.next();            // 下一张幻灯片
reveal.prev();            // 上一张幻灯片
reveal.left();            // 向左导航
reveal.right();           // 向右导航
reveal.down();            // 向下导航(嵌套幻灯片)
reveal.up();              // 向上导航(嵌套幻灯片)
状态管理:
javascript
// 获取当前状态
const state = reveal.getState();
console.log(state);  // {indexh: 2, indexv: 0, indexf: 1}

// 获取总幻灯片数
const total = reveal.getTotalSlides();

// 获取当前幻灯片元素
const currentSlide = reveal.getCurrentSlide();

// 检查是否在第一张/最后一张
reveal.isFirstSlide();
reveal.isLastSlide();
切换特性:
javascript
// 切换概览模式
reveal.toggleOverview();

// 切换暂停
reveal.togglePause();

// 切换帮助overlay
reveal.toggleHelp();

// 切换自动前进
reveal.toggleAutoSlide();
事件监听器:
javascript
// 幻灯片切换事件
reveal.on('slidechanged', event => {
    console.log('Now on slide:', event.indexh);
    // 发送分析数据
    // 更新外部UI
    // 触发自定义逻辑
});

// 片段显示/隐藏
reveal.on('fragmentshown', event => {
    console.log('Fragment shown:', event.fragment);
});

reveal.on('fragmenthidden', event => {
    console.log('Fragment hidden:', event.fragment);
});

// 就绪事件
reveal.on('ready', event => {
    console.log('Presentation ready');
});

// 概览模式切换
reveal.on('overviewshown', () => {
    console.log('Overview mode activated');
});

reveal.on('overviewhidden', () => {
    console.log('Overview mode deactivated');
});
与外部系统同步:
javascript
// 向服务器发送幻灯片切换数据
reveal.on('slidechanged', async event => {
    await fetch('/api/analytics', {
        method: 'POST',
        body: JSON.stringify({
            slide: event.indexh,
            timestamp: Date.now()
        })
    });
});

// 多屏幕同步
reveal.on('slidechanged', event => {
    // 广播到其他窗口
    localStorage.setItem('currentSlide', JSON.stringify(event));
});

window.addEventListener('storage', e => {
    if (e.key === 'currentSlide') {
        const {indexh, indexv} = JSON.parse(e.newValue);
        reveal.slide(indexh, indexv);
    }
});
动态内容:
javascript
// 动态加载幻灯片内容
reveal.on('slidechanged', async event => {
    const slideId = event.currentSlide.getAttribute('data-slide-id');
    if (slideId) {
        const data = await fetch(`/api/slides/${slideId}`).then(r => r.json());
        event.currentSlide.innerHTML = data.content;
    }
});
自定义主题切换:
javascript
// 动态更改主题颜色
function changeTheme(themeName) {
    const themes = {
        blue: { primary: '#2E86AB', secondary: '#A23B72', accent: '#F18F01' },
        green: { primary: '#2d6a4f', secondary: '#52b788', accent: '#d8f3dc' },
        red: { primary: '#9d0208', secondary: '#dc2f02', accent: '#f48c06' }
    };
    
    const theme = themes[themeName];
    Object.entries(theme).forEach(([key, value]) => {
        const cssVar = `--color-${key}`;
        document.documentElement.style.setProperty(cssVar, value);
    });
}

// 使用:changeTheme('green')
完整API参考: https://revealjs.com/api/

Advanced Customization

高级定制

Custom CSS

自定义CSS

Add custom styles in the
<style>
section:
css
/* Custom slide variant */
.slide-highlight {
    background: linear-gradient(135deg, #fff5f5, #ffffff);
    border-left: 8px solid var(--color-accent);
    padding-left: 3em !important;
}

/* Custom animation */
@keyframes pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

.pulse-on-show.fragment.visible {
    animation: pulse 0.5s ease-in-out;
}

/* Responsive grid layout */
.feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 2em;
}
<style>
部分添加自定义样式:
css
/* 自定义幻灯片变体 */
.slide-highlight {
    background: linear-gradient(135deg, #fff5f5, #ffffff);
    border-left: 8px solid var(--color-accent);
    padding-left: 3em !important;
}

/* 自定义动画 */
@keyframes pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

.pulse-on-show.fragment.visible {
    animation: pulse 0.5s ease-in-out;
}

/* 响应式网格布局 */
.feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 2em;
}

Adding External Libraries

添加外部库

Charts (Chart.js):
html
<!-- In <head> -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0"></script>

<!-- In slide -->
<section>
    <h2>Sales Data</h2>
    <canvas id="salesChart" width="800" height="400"></canvas>
    <script>
        Reveal.on('slidechanged', event => {
            if (event.currentSlide.querySelector('#salesChart')) {
                new Chart(document.getElementById('salesChart'), {
                    type: 'line',
                    data: {
                        labels: ['Jan', 'Feb', 'Mar', 'Apr'],
                        datasets: [{
                            label: 'Sales',
                            data: [12, 19, 3, 5],
                            borderColor: '#2E86AB',
                            tension: 0.1
                        }]
                    }
                });
            }
        });
    </script>
</section>
Diagrams (Mermaid):
html
<!-- In <head> -->
<script type="module">
    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
    mermaid.initialize({ startOnLoad: true });
</script>

<!-- In slide -->
<section>
    <h2>Architecture</h2>
    <div class="mermaid">
    graph TD
        A[Client] --> B[Load Balancer]
        B --> C[Server 1]
        B --> D[Server 2]
    </div>
</section>
3D Visualizations (Three.js):
html
<script src="https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.min.js"></script>

<section>
    <h2>3D Model</h2>
    <div id="three-container" style="width: 800px; height: 600px;"></div>
    <script>
        // Initialize Three.js scene when slide is shown
        Reveal.on('slidechanged', event => {
            if (event.currentSlide.querySelector('#three-container')) {
                // Three.js setup code...
            }
        });
    </script>
</section>

图表(Chart.js):
html
<!-- 在<head>中 -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0"></script>

<!-- 在幻灯片中 -->
<section>
    <h2>Sales Data</h2>
    <canvas id="salesChart" width="800" height="400"></canvas>
    <script>
        Reveal.on('slidechanged', event => {
            if (event.currentSlide.querySelector('#salesChart')) {
                new Chart(document.getElementById('salesChart'), {
                    type: 'line',
                    data: {
                        labels: ['Jan', 'Feb', 'Mar', 'Apr'],
                        datasets: [{
                            label: 'Sales',
                            data: [12, 19, 3, 5],
                            borderColor: '#2E86AB',
                            tension: 0.1
                        }]
                    }
                });
            }
        });
    </script>
</section>
图表(Mermaid):
html
<!-- 在<head>中 -->
<script type="module">
    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
    mermaid.initialize({ startOnLoad: true });
</script>

<!-- 在幻灯片中 -->
<section>
    <h2>Architecture</h2>
    <div class="mermaid">
    graph TD
        A[Client] --> B[Load Balancer]
        B --> C[Server 1]
        B --> D[Server 2]
    </div>
</section>
3D可视化(Three.js):
html
<script src="https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.min.js"></script>

<section>
    <h2>3D Model</h2>
    <div id="three-container" style="width: 800px; height: 600px;"></div>
    <script>
        // 幻灯片显示时初始化Three.js场景
        Reveal.on('slidechanged', event => {
            if (event.currentSlide.querySelector('#three-container')) {
                // Three.js设置代码...
            }
        });
    </script>
</section>

Keyboard Shortcuts Reference

键盘快捷键参考

Provide these shortcuts to users:
ActionShortcutDescription
Next slide
or
Space
or
N
Move to next slide
Previous slide
or
P
Move to previous slide
Navigate down
Go to nested slide below
Navigate up
Go to nested slide above
First slide
Home
Jump to first slide
Last slide
End
Jump to last slide
Speaker view
S
Open speaker notes window
Overview mode
ESC
or
O
Toggle thumbnail overview
Fullscreen
F
Toggle fullscreen mode
Search
Ctrl+Shift+F
Search presentation content
Zoom
Alt+Click
Zoom into element
Help overlay
?
Show all shortcuts
Pause
.
(period) or
B
Pause presentation (black screen)
Auto-slide
A
Toggle auto-advance
Print/PDF
E
Switch to print view (add
?print-pdf
to URL)
Mobile gestures:
  • Swipe left → Next slide
  • Swipe right → Previous slide
  • Swipe up → Navigate down
  • Swipe down → Navigate up
  • Pinch → Toggle overview

向用户提供以下快捷键:
操作快捷键描述
下一张幻灯片
Space
N
移动到下一张幻灯片
上一张幻灯片
P
移动到上一张幻灯片
向下导航
进入下方的嵌套幻灯片
向上导航
返回上方的嵌套幻灯片
第一张幻灯片
Home
跳转到第一张幻灯片
最后一张幻灯片
End
跳转到最后一张幻灯片
演讲者视图
S
打开演讲者备注窗口
概览模式
ESC
O
切换缩略图概览
全屏
F
切换全屏模式
搜索
Ctrl+Shift+F
搜索演示文稿内容
缩放
Alt+Click
放大元素
帮助overlay
?
显示所有快捷键
暂停
.
(句点)或
B
暂停演示文稿(黑屏)
自动前进
A
切换自动前进
打印/PDF
E
切换到打印视图(在URL后添加
?print-pdf
移动端手势:
  • 向左滑动 → 下一张幻灯片
  • 向右滑动 → 上一张幻灯片
  • 向上滑动 → 向下导航
  • 向下滑动 → 向上导航
  • 捏合 → 切换概览模式

Design Guidelines

设计指南

Content Density

内容密度

Per slide guidelines:
  • Title slides: 1 title + 1-2 supporting lines
  • Content slides: 1 heading + 3-7 bullet points OR 2-3 paragraphs
  • Two-column: 3-5 items per column
  • Image slides: 1 image + short description
The 6×6 rule: Maximum 6 bullets with 6 words each
Avoid:
  • ❌ Paragraphs longer than 4 lines
  • ❌ More than 7 bullet points per slide
  • ❌ Tiny font sizes (< 24px)
  • ❌ Wall of text
  • ❌ Cramped spacing
每张幻灯片指南:
  • 标题幻灯片: 1个标题 + 1-2行辅助文字
  • 内容幻灯片: 1个标题 + 3-7个项目符号 或 2-3个段落
  • 双栏布局: 每栏3-5个项目
  • 图片幻灯片: 1张图片 + 简短描述
6×6规则: 最多6个项目符号,每个项目符号最多6个单词
避免:
  • ❌ 段落超过4行
  • ❌ 每张幻灯片超过7个项目符号
  • ❌ 字体过小(< 24px)
  • ❌ 文字墙
  • ❌ 拥挤的间距

Animation Best Practices

动画最佳实践

Use fragments for:
  • ✅ Building lists progressively
  • ✅ Revealing data points step-by-step
  • ✅ Highlighting key information
  • ✅ Controlling information flow
Use auto-animate for:
  • ✅ Showing transformations
  • ✅ Morphing code examples
  • ✅ Animating diagrams
  • ✅ Data visualizations
Avoid:
  • ❌ Excessive animations (don't animate every element)
  • ❌ Distracting transitions
  • ❌ Animations longer than 1 second
  • ❌ Too many concurrent animations
片段动画用于:
  • ✅ 逐步构建列表
  • ✅ 逐步显示数据点
  • ✅ 突出关键信息
  • ✅ 控制信息展示节奏
自动动画用于:
  • ✅ 显示变换过程
  • ✅ 代码示例变形
  • ✅ 图表动画
  • ✅ 数据可视化动画
避免:
  • ❌ 过度动画(不要为每个元素添加动画)
  • ❌ 分散注意力的切换效果
  • ❌ 动画时长超过1秒
  • ❌ 过多并发动画

Visual Hierarchy

视觉层级

Create clear structure:
  • Large to small: Titles (3em) → Headings (2em) → Body (1em)
  • Bold to regular: Important points → Supporting details
  • Color emphasis: Accent color → Primary → Body text
  • Spacing: More space = more importance
创建清晰结构:
  • 从大到小: 标题(3em)→ 副标题(2em)→ 正文(1em)
  • 从粗到细: 重要点 → 辅助细节
  • 颜色强调: 强调色 → 主色调 → 正文文本
  • 间距: 间距越大,重要性越高

Color and Accessibility

颜色与可访问性

Accessibility requirements:
  • Maintain 4.5:1 contrast for normal text
  • Maintain 3:1 contrast for large text (18pt+)
  • Don't rely solely on color to convey information
  • Test with colorblind simulators
Color usage:
  • Primary: Headings, links, emphasis
  • Secondary: Gradients, backgrounds
  • Accent: Call-to-actions, highlights

可访问性要求:
  • 普通文本保持4.5:1的对比度
  • 大文本(18pt+)保持3:1的对比度
  • 不要仅依赖颜色传达信息
  • 使用色盲模拟器测试
颜色使用:
  • 主色调: 标题、链接、强调
  • 次要色调: 渐变、背景
  • 强调色: 行动召唤、高亮

Troubleshooting

故障排除

Slides Not Displaying

幻灯片不显示

Issue: Blank screen or no slides appear
Solution:
  • Check browser console for JavaScript errors
  • Ensure
    <section>
    tags are inside
    .reveal .slides
  • Verify CDN links are accessible (internet required)
  • Check for unclosed HTML tags
问题: 空白屏幕或无幻灯片显示
解决方案:
  • 检查浏览器控制台的JavaScript错误
  • 确保
    <section>
    标签在
    .reveal .slides
  • 验证CDN链接可访问(需要联网)
  • 检查是否有未闭合的HTML标签

Fragments Not Working

片段动画不工作

Issue: All content appears at once
Solution:
  • Verify
    class="fragment"
    is set correctly
  • Check that
    fragments: true
    in configuration
  • Ensure no CSS overrides are hiding fragments
  • Test in different browser
问题: 所有内容同时显示
解决方案:
  • 验证正确设置了
    class="fragment"
  • 检查配置中
    fragments: true
  • 确保没有CSS覆盖隐藏片段
  • 在不同浏览器中测试

Speaker Notes Not Showing

演讲者备注不显示

Issue: Press S but no speaker window opens
Solution:
  • Check popup blocker settings
  • Ensure
    <aside class="notes">
    is inside
    <section>
  • Verify RevealNotes plugin is loaded
  • Try opening in a new browser tab manually
问题: 按S键但无演讲者窗口打开
解决方案:
  • 检查弹出窗口阻止程序设置
  • 确保
    <aside class="notes">
    <section>
  • 验证RevealNotes插件已加载
  • 尝试手动在新浏览器标签页中打开

Code Not Highlighted

代码不高亮

Issue: Code appears as plain text
Solution:
  • Add
    class="language-xxx"
    to
    <code>
    element
  • Ensure RevealHighlight plugin is loaded
  • Check that CDN for highlight styles is accessible
  • Verify language identifier is supported
问题: 代码显示为纯文本
解决方案:
  • <code>
    元素添加
    class="language-xxx"
  • 确保RevealHighlight插件已加载
  • 检查highlight样式的CDN可访问
  • 验证语言标识符受支持

Navigation Issues

导航问题

Issue: Arrow keys don't work
Solution:
  • Check if presentation has focus (click on it)
  • Ensure
    keyboard: true
    in configuration
  • Check for JavaScript errors in console
  • Test in incognito mode (disable extensions)
问题: 箭头键不工作
解决方案:
  • 检查演示文稿是否获得焦点(点击它)
  • 确保配置中
    keyboard: true
  • 检查控制台的JavaScript错误
  • 在隐身模式下测试(禁用扩展)

Vertical Slides Not Showing

垂直幻灯片不显示

Issue: Can't navigate down to nested slides
Solution:
  • Ensure slides are properly nested (outer
    <section>
    contains inner ones)
  • Check for proper HTML structure
  • Look for down arrow indicator in controls
  • Try pressing ↓ or clicking down arrow

问题: 无法向下导航到嵌套幻灯片
解决方案:
  • 确保幻灯片正确嵌套(外部
    <section>
    包含内部
    <section>
  • 检查正确的HTML结构
  • 查看控件中的向下箭头指示器
  • 尝试按↓键或点击向下箭头

Example Presentation Structures

示例演示文稿结构

Product Launch (12-15 slides)

产品发布(12-15张幻灯片)

1. 🎬 Title - Product name + tagline [TITLE, zoom transition]
2. 📋 Agenda - What we'll cover [CONTENT, fragments]
3. 🔴 Section - "The Problem" [SECTION, red background]
4. 😰 Pain Points - Current challenges [CONTENT, fragment list]
5. 💡 Solution Overview - How product solves it [CONTENT]
6. 🟢 Section - "Key Features" [SECTION, green background]
7-10. 📱 Feature Deep Dives [IMAGE-TEXT, one per slide, auto-animate]
    ├─ 7. Performance (fragment metrics)
    ├─ 8. Security (diagram)
    ├─ 9. UX (before/after comparison)
    └─ 10. Integration (code example)
11. 💰 Pricing - Tiers and packages [TWO-COLUMN]
12. 💬 Testimonial [QUOTE, gradient background]
13. 📞 Call to Action [TITLE, zoom transition]
14. 🙏 Thank You + Q&A [TITLE]
1. 🎬 标题 - 产品名称 + 标语 [TITLE, zoom切换效果]
2. 📋 议程 - 本次演示的内容概览 [CONTENT, 片段动画]
3. 🔴 章节 - "问题所在" [SECTION, 红色背景]
4. 😰 痛点 - 当前挑战 [CONTENT, 片段列表]
5. 💡 解决方案概述 - 产品如何解决问题 [CONTENT]
6. 🟢 章节 - "核心特性" [SECTION, 绿色背景]
7-10. 📱 特性深入讲解 [IMAGE-TEXT, 每张一个特性, 自动动画]
    ├─ 7. 性能(片段指标)
    ├─ 8. 安全性(图表)
    ├─ 9. 用户体验(前后对比)
    └─ 10. 集成(代码示例)
11. 💰 定价 - 套餐和价格 [TWO-COLUMN]
12. 💬 推荐语 [QUOTE, 渐变背景]
13. 📞 行动召唤 [TITLE, zoom切换效果]
14. 🙏 致谢与问答 [TITLE]

Technical Talk (20-25 slides)

技术演讲(20-25张幻灯片)

1. Title + Speaker Bio [TITLE]
2. Agenda [CONTENT, fragment]
3. Section - "Background" [SECTION]
4-6. Context (nested slides)
    <section>
        4. Main concept [CONTENT]
        5. Why it matters [CONTENT]
        6. Current approaches [TWO-COLUMN]
    </section>
7. Section - "Deep Dive" [SECTION]
8-15. Technical Details
    8. Architecture diagram [IMAGE-TEXT]
    9-11. Code examples (auto-animate)
    12. Performance metrics [CONTENT, fragments]
    13-14. Comparison (before/after)
    15. Demo transition [TITLE, fade]
16. Section - "Results" [SECTION]
17-19. Outcomes
    17. Benchmark data [CONTENT, chart.js]
    18. Real-world impact [QUOTE]
    19. Lessons learned [CONTENT]
20. Future Work [CONTENT, fragments]
21. Resources + Links [CONTENT]
22. Q&A [TITLE]
1. 标题 + 演讲者简介 [TITLE]
2. 议程 [CONTENT, 片段动画]
3. 章节 - "背景" [SECTION]
4-6. 背景知识(嵌套幻灯片)
    <section>
        4. 核心概念 [CONTENT]
        5. 重要性 [CONTENT]
        6. 当前方案 [TWO-COLUMN]
    </section>
7. 章节 - "深入讲解" [SECTION]
8-15. 技术细节
    8. 架构图 [IMAGE-TEXT]
    9-11. 代码示例(自动动画)
    12. 性能指标 [CONTENT, 片段动画]
    13-14. 对比(前后)
    15. 演示过渡 [TITLE, fade切换效果]
16. 章节 - "结果" [SECTION]
17-19. 成果
    17. 基准数据 [CONTENT, chart.js]
    18. 实际影响 [QUOTE]
    19. 经验教训 [CONTENT]
20. 未来工作 [CONTENT, 片段动画]
21. 资源 + 链接 [CONTENT]
22. 问答 [TITLE]

Educational Lesson (25-30 slides)

教育课程(25-30张幻灯片)

1. Lesson Title [TITLE]
2. Learning Objectives [CONTENT, fragment]
3. Section - "Introduction" [SECTION]
4-7. Background (vertical nested)
8. Section - "Core Concepts" [SECTION]
9-20. Main Content
    - One concept per slide
    - Use fragments for progressive reveal
    - Mix layouts: content, two-column, image-text
    - Add speaker notes for teaching points
21. Section - "Practice" [SECTION]
22-25. Examples and Exercises
    - Code examples with line highlighting
    - Interactive elements
    - Step-by-step walkthroughs
26. Summary [CONTENT, fragments]
27. Additional Resources [CONTENT]
28. Questions [TITLE]

1. 课程标题 [TITLE]
2. 学习目标 [CONTENT, 片段动画]
3. 章节 - "介绍" [SECTION]
4-7. 背景知识(垂直嵌套)
8. 章节 - "核心概念" [SECTION]
9-20. 主要内容
    - 每个概念一张幻灯片
    - 使用片段动画逐步显示
    - 混合布局:内容、双栏、图文
    - 添加教学用演讲者备注
21. 章节 - "练习" [SECTION]
22-25. 示例与练习
    - 带行号高亮的代码示例
    - 交互元素
    - 分步演练
26. 总结 [CONTENT, 片段动画]
27. 额外资源 [CONTENT]
28. 问答 [TITLE]

Best Practices Checklist

最佳实践检查表

Before Creating:

创建前:

  • Ask all discovery questions to user
  • Confirm slide structure and count
  • Clarify animation requirements
  • Verify color/brand guidelines
  • Understand special feature needs
  • 向用户询问所有调研问题
  • 确认幻灯片结构和数量
  • 明确动画需求
  • 验证颜色/品牌指南
  • 了解特殊功能需求

During Creation:

创建中:

  • Read template file first
  • Use appropriate layouts for content types
  • Add fragments for progressive reveal
  • Include speaker notes for key slides
  • Apply consistent color scheme
  • Add transitions strategically
  • Nest slides for hierarchical content
  • Test code highlighting
  • Verify math formulas render
  • 先阅读模板文件
  • 根据内容类型使用合适的布局
  • 添加片段动画逐步显示
  • 为关键幻灯片添加演讲者备注
  • 应用一致的配色方案
  • 策略性添加切换效果
  • 为层级内容嵌套幻灯片
  • 测试代码高亮
  • 验证数学公式渲染

After Creation:

创建后:

  • Test in browser (open HTML file)
  • Navigate through all slides
  • Test speaker view (press S)
  • Check overview mode (press ESC)
  • Verify fragments animate correctly
  • Test keyboard shortcuts
  • Check mobile responsiveness
  • Validate accessibility (contrast)
  • Proofread content
  • Test fullscreen mode
  • 在浏览器中测试(打开HTML文件)
  • 导航所有幻灯片
  • 测试演讲者视图(按S键)
  • 检查概览模式(按ESC键)
  • 验证片段动画正确
  • 测试键盘快捷键
  • 检查移动端响应性
  • 验证可访问性(对比度)
  • 校对内容
  • 测试全屏模式

DO:

要做:

✅ Ask questions before starting
✅ Use fragments for progressive reveals
✅ Include speaker notes for presentations
✅ Keep slides focused (one idea each)
✅ Test navigation thoroughly
✅ Ensure good color contrast
✅ Use nested slides for deep dives
✅ Provide clear instructions
✅ Test on different screen sizes
✅ Leverage Reveal.js API when needed
✅ 开始前先提问
✅ 使用片段动画逐步显示
✅ 为演示文稿添加演讲者备注
✅ 每张幻灯片聚焦一个主题
✅ 彻底测试导航
✅ 确保良好的颜色对比度
✅ 为层级内容使用嵌套幻灯片
✅ 提供清晰的使用说明
✅ 在不同屏幕尺寸上测试
✅ 必要时使用Reveal.js API

DON'T:

不要做:

❌ Skip the discovery questions
❌ Overcrowd slides with text
❌ Use too many different animations
❌ Forget to test speaker view
❌ Ignore accessibility standards
❌ Create slides without clear purpose
❌ Use more than 3 font families
❌ Add distracting effects
❌ Skip validation testing
❌ Forget to provide usage instructions

❌ 跳过调研问题
❌ 幻灯片内容过多
❌ 使用过多不同的动画
❌ 忘记测试演讲者视图
❌ 忽略可访问性标准
❌ 创建无明确目的的幻灯片
❌ 使用超过3种字体
❌ 添加分散注意力的效果
❌ 跳过验证测试
❌ 忘记提供使用说明

Additional Resources

额外资源

Official Documentation:
Reference Files (in this skill):
  • reference/layouts.md
    - Detailed layout guide with Reveal.js examples
  • reference/themes.md
    - Theme customization and color theory with Reveal.js
  • templates/viewer-reveal.html
    - Reveal.js base template with full documentation
  • examples/reveal-advanced-demo.html
    - Advanced features showcase
Design Tools:
Related Libraries:
  • Chart.js - Data visualization charts
  • Mermaid - Diagram and flowchart generation
  • KaTeX - Math equation rendering
  • Highlight.js - Syntax highlighting for 190+ languages
Reveal.js Themes:
Export and Sharing:
  • PDF Export: Add
    ?print-pdf
    to URL and use browser print (Ctrl+P)
  • Hosting: Upload to GitHub Pages, Netlify, Vercel for free hosting
  • Embedding: Use
    <iframe>
    to embed in websites

官方文档:
参考文件(本指南中):
  • reference/layouts.md
    - 带Reveal.js示例的详细布局指南
  • reference/themes.md
    - 带Reveal.js的主题定制和色彩理论
  • templates/viewer-reveal.html
    - 带完整文档的Reveal.js基础模板
  • examples/reveal-advanced-demo.html
    - 高级特性展示
设计工具:
相关库:
Reveal.js主题:
导出与分享:
  • PDF导出: 在URL后添加
    ?print-pdf
    并使用浏览器打印(Ctrl+P)
  • 托管: 上传到GitHub Pages、Netlify、Vercel免费托管
  • 嵌入: 使用
    <iframe>
    嵌入到网站中

Migration Guide (from Classic Template)

迁移指南(从经典模板)

If you have existing presentations using
viewer.html
, here's how to migrate:
如果您有使用
viewer.html
的现有演示文稿,以下是迁移方法:

Key Differences

主要差异

FeatureClassic (
viewer.html
)
Reveal.js (
viewer-reveal.html
)
FrameworkCustom JavaScriptReveal.js 5.x
SlidesJavaScript arrayHTML
<section>
tags
AnimationsCSS transitions onlyFragments, auto-animate, transitions
Speaker Notes❌ Not available✅ Full speaker view (press S)
Overview Mode❌ Not available✅ Thumbnail overview (press ESC)
Vertical Slides❌ Not available✅ Nested navigation
Code HighlightingBasicHighlight.js with line numbers
Math Equations❌ Not available✅ KaTeX support
Search❌ Not available✅ Full-text search (Ctrl+Shift+F)
Plugins❌ None✅ Extensive ecosystem
API AccessLimitedFull Reveal.js API
特性经典模板(
viewer.html
Reveal.js模板(
viewer-reveal.html
框架自定义JavaScriptReveal.js 5.x
幻灯片JavaScript数组HTML
<section>
标签
动画仅CSS过渡片段动画、自动动画、切换效果
演讲者备注❌ 不可用✅ 完整演讲者视图(按S键)
概览模式❌ 不可用✅ 缩略图概览(按ESC键)
垂直幻灯片❌ 不可用✅ 嵌套导航
代码高亮基础带行号的Highlight.js
数学公式❌ 不可用✅ KaTeX支持
搜索❌ 不可用✅ 全文搜索(Ctrl+Shift+F)
插件❌ 无✅ 丰富的生态系统
API访问有限完整的Reveal.js API

Migration Steps

迁移步骤

  1. Convert slide structure:
javascript
// OLD (viewer.html)
const SLIDES = [
    {
        layout: "title",
        content: `<h1>Title</h1>`
    }
];

// NEW (viewer-reveal.html)
<section class="slide-title">
    <h1>Title</h1>
</section>
  1. Update theme configuration:
javascript
// OLD
const PRESENTATION = {
    title: "...",
    theme: { primary: "#...", ... }
};

// NEW
const PRESENTATION_CONFIG = {
    title: "...",
    theme: { primary: "#...", ... },
    revealOptions: { ... }
};
  1. Add new features:
  • Add
    class="fragment"
    for progressive reveals
  • Wrap nested content in
    <section>
    for vertical navigation
  • Add
    <aside class="notes">
    for speaker notes
  • Use Reveal.js transitions and animations

  1. 转换幻灯片结构:
javascript
// 旧版(viewer.html)
const SLIDES = [
    {
        layout: "title",
        content: `<h1>Title</h1>`
    }
];

// 新版(viewer-reveal.html)
<section class="slide-title">
    <h1>Title</h1>
</section>
  1. 更新主题配置:
javascript
// 旧版
const PRESENTATION = {
    title: "...",
    theme: { primary: "#...", ... }
};

// 新版
const PRESENTATION_CONFIG = {
    title: "...",
    theme: { primary: "#...", ... },
    revealOptions: { ... }
};
  1. 添加新特性:
  • 添加
    class="fragment"
    实现逐步显示
  • 将嵌套内容包裹在
    <section>
    中实现垂直导航
  • 添加
    <aside class="notes">
    作为演讲者备注
  • 使用Reveal.js的切换效果和动画

Summary

总结

This skill creates modern, interactive presentations powered by Reveal.js as single HTML files. The upgraded workflow features:
本指南基于Reveal.js创建现代化、交互式的演示文稿,输出为单个HTML文件。升级后的工作流程具备:

Interactive Workflow

交互式工作流程

  1. Ask discovery questions - Gather content, style, and animation requirements
  2. Propose structure - Collaborative slide planning with user confirmation
  3. Configure features - Select animations, transitions, and special functions
  4. Read template - Study
    templates/viewer-reveal.html
  5. Generate slides - Create HTML content with appropriate layouts
  6. Configure presentation - Set theme colors and Reveal.js options
  7. Add advanced features - Fragments, speaker notes, nested slides, plugins
  8. Validate thoroughly - Test all features and navigation
  9. Deliver with instructions - Provide complete usage guide
  1. 调研提问 - 收集内容、样式和动画需求
  2. 结构建议 - 与用户协作规划幻灯片结构
  3. 功能配置 - 选择动画、切换效果和特殊功能
  4. 阅读模板 - 研究
    templates/viewer-reveal.html
  5. 生成幻灯片 - 使用合适的布局创建HTML内容
  6. 配置演示文稿 - 设置主题颜色和Reveal.js选项
  7. 添加高级特性 - 片段动画、演讲者备注、嵌套幻灯片、插件
  8. 彻底验证 - 测试所有特性和导航
  9. 交付并提供说明 - 提供完整的使用指南

Key Advantages over Classic Template

与经典模板相比的核心优势

  • Advanced animations: Fragments, auto-animate, parallax
  • Speaker tools: Notes, timer, next slide preview
  • Navigation: Vertical slides, overview mode, search
  • Rich content: Code highlighting, math equations, Markdown
  • Plugin ecosystem: Extensible with hundreds of plugins
  • Full API: Complete programmatic control
  • Active development: Reveal.js is actively maintained
  • Community: Large user base and resources
  • 高级动画: 片段动画、自动动画、视差
  • 演讲者工具: 备注、计时器、下一张幻灯片预览
  • 导航: 垂直幻灯片、概览模式、搜索
  • 丰富内容: 代码高亮、数学公式、Markdown
  • 插件生态: 可扩展的数百个插件
  • 完整API: 完整的程序化控制
  • 活跃开发: Reveal.js持续维护
  • 社区: 庞大的用户群和资源

Success Factors

成功因素

  • Always ask questions first - Don't assume requirements
  • Use appropriate layouts - Match content type to layout
  • Leverage fragments - Progressive reveals keep audience engaged
  • Add speaker notes - Essential for presentations
  • Test thoroughly - Verify all features work
  • Ensure accessibility - Good contrast, keyboard nav, semantic HTML
  • Provide clear instructions - Users need to know all features
  • 始终先提问 - 不要假设需求
  • 使用合适的布局 - 内容类型匹配布局
  • 利用片段动画 - 逐步显示保持观众参与
  • 添加演讲者备注 - 演示文稿必备
  • 彻底测试 - 验证所有功能正常
  • 确保可访问性 - 良好的对比度、键盘导航、语义化HTML
  • 提供清晰的说明 - 用户需要了解所有功能

The Result

最终成果

A professional, feature-rich presentation that:
  • Runs in any modern browser
  • Works offline (CDN resources cached)
  • Supports advanced features (speaker view, overview, search)
  • Offers smooth animations and transitions
  • Provides full keyboard and touch control
  • Scales from simple pitches to complex technical talks
  • Can be easily shared, embedded, or hosted
Ready to create amazing presentations! 🎉

For detailed layout examples and animation techniques, see
reference/layouts.md

For theme customization and color theory, see
reference/themes.md

For a complete working example, see
examples/reveal-advanced-demo.html
一个专业、功能丰富的演示文稿,具备:
  • 在任何现代浏览器中运行
  • 离线可用(CDN资源缓存)
  • 支持高级特性(演讲者视图、概览、搜索)
  • 流畅的动画和切换效果
  • 完整的键盘和触摸控制
  • 从简单推介到复杂技术演讲的可扩展性
  • 可轻松分享、嵌入或托管
准备好创建精彩的演示文稿了! 🎉

有关详细布局示例和动画技术,请参阅
reference/layouts.md

有关主题定制和色彩理论,请参阅
reference/themes.md

有关完整的工作示例,请参阅
examples/reveal-advanced-demo.html