前端幻灯片 是做什么的?
创建零依赖、动画丰富的HTML演示文稿,完全在浏览器中运行。
灵感来源于 zarazhangrui 展示的视觉探索方法(致谢:@zarazhangrui)。
何时激活
- 创建演讲幻灯片、推介幻灯片、工作坊幻灯片或内部演示
- 将
.ppt或.pptx幻灯片转换为 HTML 演示文稿 - 改进已有 HTML 演示文稿的布局、动效或排版
- 与尚不清楚自己设计偏好的用户一起探索演示风格
不可妥协项
- 零依赖:默认使用一个自包含的HTML文件,内联CSS和JS。
- 视口适配是强制要求:每个幻灯片必须完全适应一个视口,无内部滚动。
- 展示而非告知:使用视觉预览代替抽象的风格问卷。
- 独特设计:避免通用的紫色渐变、Inter字体白底、模板风格的幻灯片。
- 生产质量:代码需有注释、可访问、响应式且性能良好。
在生成之前,请阅读 STYLE_PRESETS.md 以了解视口安全的CSS基础、密度限制、预设目录和CSS注意事项。
工作流程
1. 检测模式
选择一条路径:
- 新演示文稿:用户有主题、笔记或完整草稿
- PPT 转换:用户有
.ppt或.pptx文件 - 增强:用户已有HTML幻灯片并希望改进
2. 发现内容
仅询问最少必要信息:
- 用途:推介、教学、会议演讲、内部更新
- 长度:短(5-10页)、中(10-20页)、长(20+页)
- 内容状态:完成稿、粗略笔记、仅主题
如果用户有内容,请在样式化之前要求用户粘贴。
3. 发现风格
默认采用视觉探索。
如果用户已经知道所需的预设,则跳过预览,直接使用。
否则:
- 询问幻灯片应传达何种感觉:印象深刻、充满活力、专注、鼓舞人心。
- 在
.ecc-design/slide-previews/目录中生成 3个单页预览文件。 - 每个预览必须自包含,清晰展示排版/颜色/动效,且幻灯片内容控制在约100行以内。
- 询问用户保留哪个预览或混合哪些元素。
在将情绪映射到风格时,使用 STYLE_PRESETS.md 中的预设指南。
4. 构建演示文稿
输出以下文件之一:
presentation.html[presentation-name].html
仅在幻灯片包含提取的或用户提供的图像时使用 assets/ 文件夹。
必需的结构:
- 语义化的幻灯片节(section)
- 来自
STYLE_PRESETS.md的视口安全CSS基础 - 用于主题值的CSS自定义属性
- 用于键盘、滚轮和触摸导航的演示控制器类
- 用于触发进入动画的 Intersection Observer
- 减少运动支持
5. 强制视口适配
将其视为硬性门槛。
规则:
- 每个
.slide必须使用height: 100vh; height: 100dvh; overflow: hidden; - 所有类型和间距必须使用
clamp()缩放 - 当内容无法容纳时,拆分为多个幻灯片
- 永远不要通过将文字缩小到不可读大小来解决溢出问题
- 永远不允许幻灯片内部出现滚动条
使用 STYLE_PRESETS.md 中的密度限制和强制CSS块。
6. 验证
在以下尺寸下检查完成的幻灯片:
- 1920x1080
- 1280x720
- 768x1024
- 375x667
- 667x375
如果浏览器自动化可用,请使用它来验证没有幻灯片溢出,并且键盘导航正常工作。
7. 交付
移交时:
- 删除临时预览文件,除非用户希望保留它们
- 在适用时使用平台相应的打开器打开幻灯片
- 总结文件路径、使用的预设、幻灯片数量以及简单的主题自定义点
使用当前操作系统对应的正确打开器:
- macOS:
open file.html - Linux:
xdg-open file.html - Windows:
start "" file.html
PPT / PPTX 转换
对于PowerPoint转换:
- 优先使用
python3配合python-pptx提取文本、图像和备注。 - 如果
python-pptx不可用,询问用户是安装它还是回退到手动/基于导出的工作流。 - 保留幻灯片顺序、演讲者备注和提取的资源。
- 提取后,执行与新建演示文稿相同的风格选择工作流。
保持转换跨平台。当Python可以完成工作时,不要依赖仅限macOS的工具。
实现要求
HTML / CSS
- 使用内联CSS和JS,除非用户明确希望使用多文件项目。
- 字体可以来自 Google Fonts 或 Fontshare。
- 偏好氛围感背景、强烈的排版层级和清晰的视觉方向。
- 使用抽象形状、渐变、网格、噪点和几何图形,而不是插图。
JavaScript
包含:
- 键盘导航
- 触摸/滑动导航
- 鼠标滚轮导航
- 进度指示器或幻灯片索引
- 进入时触发动画
可访问性
- 使用语义结构(
main、section、nav) - 保持对比度可读
- 支持仅键盘导航
- 尊重
prefers-reduced-motion
内容密度限制
除非用户明确要求更密集的幻灯片且可读性仍然保持,否则使用以下最大值:
| 幻灯片类型 | 限制 |
|---|---|
| 标题 | 1个标题 + 1个副标题 + 可选标语 |
| 内容 | 1个标题 + 4-6个要点或2个短段落 |
| 特性网格 | 最多6个卡片 |
| 代码 | 最多8-10行 |
| 引用 | 1条引用 + 出处 |
| 图像 | 1张受视口限制的图像 |
反模式
- 没有视觉特征的通用创业公司渐变
- 除非有意的编辑风格,否则使用系统字体幻灯片
- 一长串要点墙
- 需要滚动的代码块
- 在短屏上会破坏的固定高度内容框
- 无效的否定CSS函数如
-clamp(...)
相关 ECC 技能
frontend-patterns:用于幻灯片周围的组件和交互模式liquid-glass-design:当演示文稿有意借鉴苹果玻璃美学时e2e-testing:如果需要自动浏览器验证最终幻灯片
交付清单
- 演示文稿从本地文件在浏览器中运行
- 每个幻灯片完全适应视口,无需滚动
- 风格独特且有意图
- 动画有意义,不杂乱
- 尊重减少运动偏好
- 交付时解释文件路径和自定义点