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:
- Single-file mode: Self-contained HTML presentations for quick sharing
- 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创建精美、交互式的演示文稿。支持两种模式:
- 单文件模式:独立的HTML演示文稿,便于快速分享
- 仓库模式:多演示文稿管理系统,支持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- Control minimum (20%) and maximum (200%) scaling rangesmaxScale - - Set presentation margins (default 5%) to ensure breathing room
margin - /
width- Use 100% to fill available space with responsive sizingheight
✨ 智能屏幕适配
- 自动缩放 - 演示文稿自动缩放以填充可用屏幕空间,同时保持正确的宽高比
- 视口优化 - 根据窗口尺寸动态调整(16:9宽高比)
- 移动端友好 - 针对各种尺寸设备优化字体大小和布局
- 边距管理 - 可配置边距,确保内容在任意屏幕上都清晰可读
- 窗口大小调整处理 - 浏览器窗口调整大小时,演示文稿自动重新排版
🎯 配置选项
- /
minScale- 控制最小(20%)和最大(200%)缩放范围maxScale - - 设置演示文稿边距(默认5%),确保内容有足够呼吸空间
margin - /
width- 设置为100%可实现响应式尺寸填充可用空间height
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 file:
metadata.jsonjson
{
"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.jsonjson
{
"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.htmlThis 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: with all Reveal.js options
PRESENTATION_CONFIG - ✅ 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访问:通过暴露完整的Reveal.js API
window.PresentationAPI
模板是您的基础。复制模板并自定义内容部分。
Step 5: Generate Slide Content
步骤5:生成幻灯片内容
Create slides using standard HTML tags within :
<section>.reveal .slidesBasic 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:
- - Basic fade in
fragment - - Fade in
fragment fade-in - - Fade out
fragment fade-out - - Slide up
fragment fade-up - - Slide down
fragment fade-down - - Grow larger
fragment grow - - Shrink smaller
fragment shrink - - Highlight in red
fragment highlight-red - - Highlight in blue
fragment highlight-blue - - Highlight current item
fragment highlight-current-blue
使用标准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 object:
PRESENTATION_CONFIGjavascript
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_CONFIGjavascript
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:
- Open in browser - File loads correctly
- Navigate all slides - Arrow keys work (→ = next, ↓ = nested)
- Test fragments - Progressive reveals work
- Speaker view - Press S (opens in new window)
- Overview mode - Press ESC (thumbnail view)
- Fullscreen - Press F
- Search - Press Ctrl+Shift+F
- Zoom - Alt+Click to zoom in
- Help overlay - Press ? for shortcuts
Common issues:
- Slides not showing: Check tags are inside
<section>.reveal .slides - Fragments not working: Ensure is set
class="fragment" - Speaker notes not appearing: Press S, check
<aside class="notes"> - Code not highlighted: Verify on
class="language-xxx"<code>
生成HTML文件并验证:
- 在浏览器中打开 - 文件加载正常
- 导航所有幻灯片 - 箭头键可用(→ = 下一张,↓ = 嵌套幻灯片)
- 测试片段动画 - 逐步显示功能正常
- 演讲者视图 - 按S键(在新窗口打开)
- 概览模式 - 按ESC键(缩略图视图)
- 全屏 - 按F键
- 搜索 - 按Ctrl+Shift+F
- 缩放 - Alt+点击放大区域
- 帮助 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.htmlOutput location: Save the HTML file to the directory in your project
docs/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:
- Create directories:
bash
mkdir -p {repo-name}/{presentations,templates,scripts,assets/css}-
Copy template files:
- - Index generation script
scripts/generate-index.js - - Presentation template
templates/presentation-template.html - - Metadata template
templates/metadata-template.json - - Index page template
templates/index-template.html - - README template
templates/README-template.md - - .gitignore template
templates/.gitignore-template - - Custom CSS template
templates/custom-css-template.css
-
Generate package.json with build scripts
-
Create .nojekyll for GitHub Pages
-
Create assets/css/custom.css for shared styles
-
Create README.md with usage instructions
创建完整的仓库结构:
- 创建目录:
bash
mkdir -p {repo-name}/{presentations,templates,scripts,assets/css}-
复制模板文件:
- - 索引生成脚本
scripts/generate-index.js - - 演示文稿模板
templates/presentation-template.html - - 元数据模板
templates/metadata-template.json - - 索引页模板
templates/index-template.html - - README模板
templates/README-template.md - - .gitignore模板
templates/.gitignore-template - - 自定义CSS模板
templates/custom-css-template.css
-
生成带构建脚本的package.json
-
创建适配GitHub Pages的.nojekyll
-
创建共享样式assets/css/custom.css
-
创建使用说明README.md
Step 3: Optional - Create Example Presentation
步骤3:可选 - 创建示例演示文稿
If user requested an example:
- Create directory
presentations/example-presentation/ - Copy and customize presentation-template.html → index.html
- Create metadata.json with provided information
- Create or generate placeholder thumbnail.png (800x600)
如果用户要求创建示例:
- 创建目录
presentations/example-presentation/ - 复制并自定义presentation-template.html → index.html
- 使用提供的信息创建metadata.json
- 创建或生成占位符thumbnail.png(800x600)
Step 4: Initialize and Build
步骤4:初始化与构建
bash
cd {repo-name}
npm install
npm run buildThis generates the initial with the presentation gallery.
index.htmlbash
cd {repo-name}
npm install
npm run build这将生成初始的和演示文稿画廊。
index.htmlStep 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 main2. 配置GitHub Pages:
- 访问 https://github.com/{username}/{repo-name}/settings/pages
- Source: Deploy from a branch
- Branch: main / (root)
- 点击 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 main2. 配置GitHub Pages:
- 访问 https://github.com/{username}/{repo-name}/settings/pages
- 源:从分支部署
- 分支:main / (root)
- 点击保存
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
编辑内容和元数据
编辑内容和元数据
然后重新生成索引并部署
然后重新生成索引并部署
Step 6: Optional - Create GitHub Action for Auto-Deploy
步骤6:可选 - 创建GitHub Action自动部署
Ask user:
是否要创建GitHub Action自动部署?
这样每次push都会自动重新生成索引页。
[是] [否]If yes, create :
.github/workflows/deploy.ymlyaml
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.ymlyaml
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:
- Run to preview locally
npm run dev - Edit presentations and metadata
- Run after changes
npm run build - Run to push to GitHub
npm run deploy - Visit their GitHub Pages URL to see the live site
完成后,用户将拥有:
- ✅ 完整的演示文稿仓库结构
- ✅ 自动生成的画廊视图索引页
- ✅ 用于快速创建演示文稿的模板
- ✅ 自动化构建脚本
- ✅ 适配GitHub Pages的部署
- ✅ 用于常见任务的npm脚本
- ✅ (可选)自动部署的GitHub Action
用户后续步骤:
- 运行本地预览
npm run dev - 编辑演示文稿和元数据
- 更改后运行
npm run build - 运行推送到GitHub
npm run deploy - 访问GitHub Pages URL查看在线站点
Available Layouts (with Reveal.js)
可用布局(基于Reveal.js)
All layouts are implemented as CSS classes applied to elements. Combine with Reveal.js features for enhanced interactivity.
<section>所有布局都通过应用到元素的CSS类实现。结合Reveal.js功能增强交互性。
<section>1. Title Slide (class="slide-title"
)
class="slide-title"1. 标题幻灯片(class="slide-title"
)
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: or
zoomfade
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>特性:
- 全屏、居中
- 渐变背景(主色调→次要色调)
- 带阴影的白色文本
- 大尺寸、有冲击力的排版
- 推荐切换效果:或
zoomfade
带动画:
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"
)
class="slide-content"2. 内容幻灯片(class="slide-content"
)
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 totalUsage example
Usage example
items = [Item(10), Item(20)]
result = calculate_total(items)
</code></pre>
</section>
```
Supported elements:
- ,
<h2>- Headings (styled with theme colors)<h3> - - Paragraphs
<p> - ,
<ul>,<ol>- Lists with custom bullets<li> - - Inline code (monospace font)
<code> - - Code blocks with syntax highlighting
<pre><code> - - Bold (colored with accent)
<strong> - - Italic (colored with primary)
<em>
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"
)
class="two-column"3. 双栏布局(class="two-column"
)
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"
)
class="image-text"4. 图文布局(class="image-text"
)
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"
)
class="slide-quote"5. 引用幻灯片(class="slide-quote"
)
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"
)
class="slide-section"6. 章节分隔幻灯片(class="slide-section"
)
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: or
convexzoom
用途: 主要主题过渡、章节分隔
html
<section class="slide-section" data-background-gradient="linear-gradient(135deg, #A23B72 0%, #F18F01 100%)">
<h2 class="fragment">Part Two</h2>
</section>特性:
- 全屏彩色背景
- 带阴影的大尺寸白色文本
- 营造视觉节奏
- 谨慎使用(每个演示文稿2-4个)
- 推荐切换效果:或
convexzoom
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:
- - Instant cut
none - - Cross-fade
fade - - Slide horizontally (default)
slide - - Slide at a convex angle
convex - - Slide at a concave angle
concave - - Scale in/out
zoom
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.PresentationAPIBasic 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/
模板通过暴露完整的Reveal.js API:
window.PresentationAPI基础导航:
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 section:
<style>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:
| Action | Shortcut | Description |
|---|---|---|
| Next slide | | Move to next slide |
| Previous slide | | Move to previous slide |
| Navigate down | | Go to nested slide below |
| Navigate up | | Go to nested slide above |
| First slide | | Jump to first slide |
| Last slide | | Jump to last slide |
| Speaker view | | Open speaker notes window |
| Overview mode | | Toggle thumbnail overview |
| Fullscreen | | Toggle fullscreen mode |
| Search | | Search presentation content |
| Zoom | | Zoom into element |
| Help overlay | | Show all shortcuts |
| Pause | | Pause presentation (black screen) |
| Auto-slide | | Toggle auto-advance |
| Print/PDF | | Switch to print view (add |
Mobile gestures:
- Swipe left → Next slide
- Swipe right → Previous slide
- Swipe up → Navigate down
- Swipe down → Navigate up
- Pinch → Toggle overview
向用户提供以下快捷键:
| 操作 | 快捷键 | 描述 |
|---|---|---|
| 下一张幻灯片 | | 移动到下一张幻灯片 |
| 上一张幻灯片 | | 移动到上一张幻灯片 |
| 向下导航 | | 进入下方的嵌套幻灯片 |
| 向上导航 | | 返回上方的嵌套幻灯片 |
| 第一张幻灯片 | | 跳转到第一张幻灯片 |
| 最后一张幻灯片 | | 跳转到最后一张幻灯片 |
| 演讲者视图 | | 打开演讲者备注窗口 |
| 概览模式 | | 切换缩略图概览 |
| 全屏 | | 切换全屏模式 |
| 搜索 | | 搜索演示文稿内容 |
| 缩放 | | 放大元素 |
| 帮助overlay | | 显示所有快捷键 |
| 暂停 | | 暂停演示文稿(黑屏) |
| 自动前进 | | 切换自动前进 |
| 打印/PDF | | 切换到打印视图(在URL后添加 |
移动端手势:
- 向左滑动 → 下一张幻灯片
- 向右滑动 → 上一张幻灯片
- 向上滑动 → 向下导航
- 向下滑动 → 向上导航
- 捏合 → 切换概览模式
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:
Solution:
- Check browser console for JavaScript errors
- Ensure tags are inside
<section>.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:
Solution:
- Verify is set correctly
class="fragment" - Check that in configuration
fragments: true - 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:
Solution:
- Check popup blocker settings
- Ensure is inside
<aside class="notes"><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:
Solution:
- Add to
class="language-xxx"element<code> - 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:
Solution:
- Check if presentation has focus (click on it)
- Ensure in configuration
keyboard: true - 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:
Solution:
- Ensure slides are properly nested (outer contains inner ones)
<section> - 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
✅ 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
✅ 使用片段动画逐步显示
✅ 为演示文稿添加演讲者备注
✅ 每张幻灯片聚焦一个主题
✅ 彻底测试导航
✅ 确保良好的颜色对比度
✅ 为层级内容使用嵌套幻灯片
✅ 提供清晰的使用说明
✅ 在不同屏幕尺寸上测试
✅ 必要时使用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
❌ 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种字体
❌ 添加分散注意力的效果
❌ 跳过验证测试
❌ 忘记提供使用说明
❌ 幻灯片内容过多
❌ 使用过多不同的动画
❌ 忘记测试演讲者视图
❌ 忽略可访问性标准
❌ 创建无明确目的的幻灯片
❌ 使用超过3种字体
❌ 添加分散注意力的效果
❌ 跳过验证测试
❌ 忘记提供使用说明
Additional Resources
额外资源
Official Documentation:
- Reveal.js Official Docs - Complete API reference
- Reveal.js GitHub - Source code and examples
- Reveal.js Plugins - Community plugins
Reference Files (in this skill):
- - Detailed layout guide with Reveal.js examples
reference/layouts.md - - Theme customization and color theory with Reveal.js
reference/themes.md - - Reveal.js base template with full documentation
templates/viewer-reveal.html - - Advanced features showcase
examples/reveal-advanced-demo.html
Design Tools:
- Coolors.co - Color palette generator
- Google Fonts - Web font library
- SVG OMG - SVG optimizer
- WebAIM Contrast Checker - Accessibility testing
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:
- Reveal.js Themes Gallery - Official themes
- Custom Theme Builder - Visual theme creator
Export and Sharing:
- PDF Export: Add to URL and use browser print (Ctrl+P)
?print-pdf - Hosting: Upload to GitHub Pages, Netlify, Vercel for free hosting
- Embedding: Use to embed in websites
<iframe>
官方文档:
- Reveal.js官方文档 - 完整API参考
- Reveal.js GitHub - 源代码和示例
- Reveal.js插件 - 社区插件
参考文件(本指南中):
- - 带Reveal.js示例的详细布局指南
reference/layouts.md - - 带Reveal.js的主题定制和色彩理论
reference/themes.md - - 带完整文档的Reveal.js基础模板
templates/viewer-reveal.html - - 高级特性展示
examples/reveal-advanced-demo.html
设计工具:
- Coolors.co - 调色板生成器
- Google Fonts - Web字体库
- SVG OMG - SVG优化器
- WebAIM Contrast Checker - 可访问性测试
相关库:
- Chart.js - 数据可视化图表
- Mermaid - 图表和流程图生成
- KaTeX - 数学公式渲染
- Highlight.js - 190+种语言的语法高亮
Reveal.js主题:
- Reveal.js主题画廊 - 官方主题
- 自定义主题构建器 - 可视化主题创建工具
导出与分享:
- PDF导出: 在URL后添加并使用浏览器打印(Ctrl+P)
?print-pdf - 托管: 上传到GitHub Pages、Netlify、Vercel免费托管
- 嵌入: 使用嵌入到网站中
<iframe>
Migration Guide (from Classic Template)
迁移指南(从经典模板)
If you have existing presentations using , here's how to migrate:
viewer.html如果您有使用的现有演示文稿,以下是迁移方法:
viewer.htmlKey Differences
主要差异
| Feature | Classic ( | Reveal.js ( |
|---|---|---|
| Framework | Custom JavaScript | Reveal.js 5.x |
| Slides | JavaScript array | HTML |
| Animations | CSS transitions only | Fragments, 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 Highlighting | Basic | Highlight.js with line numbers |
| Math Equations | ❌ Not available | ✅ KaTeX support |
| Search | ❌ Not available | ✅ Full-text search (Ctrl+Shift+F) |
| Plugins | ❌ None | ✅ Extensive ecosystem |
| API Access | Limited | Full Reveal.js API |
| 特性 | 经典模板( | Reveal.js模板( |
|---|---|---|
| 框架 | 自定义JavaScript | Reveal.js 5.x |
| 幻灯片 | JavaScript数组 | HTML |
| 动画 | 仅CSS过渡 | 片段动画、自动动画、切换效果 |
| 演讲者备注 | ❌ 不可用 | ✅ 完整演讲者视图(按S键) |
| 概览模式 | ❌ 不可用 | ✅ 缩略图概览(按ESC键) |
| 垂直幻灯片 | ❌ 不可用 | ✅ 嵌套导航 |
| 代码高亮 | 基础 | 带行号的Highlight.js |
| 数学公式 | ❌ 不可用 | ✅ KaTeX支持 |
| 搜索 | ❌ 不可用 | ✅ 全文搜索(Ctrl+Shift+F) |
| 插件 | ❌ 无 | ✅ 丰富的生态系统 |
| API访问 | 有限 | 完整的Reveal.js API |
Migration Steps
迁移步骤
- 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>- Update theme configuration:
javascript
// OLD
const PRESENTATION = {
title: "...",
theme: { primary: "#...", ... }
};
// NEW
const PRESENTATION_CONFIG = {
title: "...",
theme: { primary: "#...", ... },
revealOptions: { ... }
};- Add new features:
- Add for progressive reveals
class="fragment" - Wrap nested content in for vertical navigation
<section> - Add for speaker notes
<aside class="notes"> - Use Reveal.js transitions and animations
- 转换幻灯片结构:
javascript
// 旧版(viewer.html)
const SLIDES = [
{
layout: "title",
content: `<h1>Title</h1>`
}
];
// 新版(viewer-reveal.html)
<section class="slide-title">
<h1>Title</h1>
</section>- 更新主题配置:
javascript
// 旧版
const PRESENTATION = {
title: "...",
theme: { primary: "#...", ... }
};
// 新版
const PRESENTATION_CONFIG = {
title: "...",
theme: { primary: "#...", ... },
revealOptions: { ... }
};- 添加新特性:
- 添加实现逐步显示
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
交互式工作流程
- Ask discovery questions - Gather content, style, and animation requirements
- Propose structure - Collaborative slide planning with user confirmation
- Configure features - Select animations, transitions, and special functions
- Read template - Study
templates/viewer-reveal.html - Generate slides - Create HTML content with appropriate layouts
- Configure presentation - Set theme colors and Reveal.js options
- Add advanced features - Fragments, speaker notes, nested slides, plugins
- Validate thoroughly - Test all features and navigation
- Deliver with instructions - Provide complete usage guide
- 调研提问 - 收集内容、样式和动画需求
- 结构建议 - 与用户协作规划幻灯片结构
- 功能配置 - 选择动画、切换效果和特殊功能
- 阅读模板 - 研究
templates/viewer-reveal.html - 生成幻灯片 - 使用合适的布局创建HTML内容
- 配置演示文稿 - 设置主题颜色和Reveal.js选项
- 添加高级特性 - 片段动画、演讲者备注、嵌套幻灯片、插件
- 彻底验证 - 测试所有特性和导航
- 交付并提供说明 - 提供完整的使用指南
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
For theme customization and color theory, see
For a complete working example, see
reference/layouts.mdFor theme customization and color theory, see
reference/themes.mdFor a complete working example, see
examples/reveal-advanced-demo.html一个专业、功能丰富的演示文稿,具备:
- 在任何现代浏览器中运行
- 离线可用(CDN资源缓存)
- 支持高级特性(演讲者视图、概览、搜索)
- 流畅的动画和切换效果
- 完整的键盘和触摸控制
- 从简单推介到复杂技术演讲的可扩展性
- 可轻松分享、嵌入或托管
准备好创建精彩的演示文稿了! 🎉
有关详细布局示例和动画技术,请参阅
有关主题定制和色彩理论,请参阅
有关完整的工作示例,请参阅
reference/layouts.md有关主题定制和色彩理论,请参阅
reference/themes.md有关完整的工作示例,请参阅
examples/reveal-advanced-demo.html