--- name: frontend-slides description: 从零开始或通过转换PowerPoint文件创建令人惊艳、动画丰富的HTML演示文稿。当用户想要构建演示文稿、将PPT/PPTX转换为网页格式,或为演讲/推介创建幻灯片时使用。帮助非设计师通过视觉探索而非抽象选择发现他们的美学。 origin: ECC --- # 前端幻灯片 创建零依赖、动画丰富的 HTML 演示文稿,完全在浏览器中运行。 受 zarazhangrui(鸣谢:@zarazhangrui)作品中展示的视觉探索方法的启发。 ## 何时启用 * 创建演讲文稿、推介文稿、研讨会文稿或内部演示文稿时 * 将 `.ppt` 或 `.pptx` 幻灯片转换为 HTML 演示文稿时 * 改进现有 HTML 演示文稿的布局、动效或排版时 * 与尚不清楚其设计偏好的用户一起探索演示文稿风格时 ## 不可妥协的原则 1. **零依赖**:默认使用一个包含内联 CSS 和 JS 的自包含 HTML 文件。 2. **必须适配视口**:每张幻灯片必须适配一个视口,内部不允许滚动。 3. **展示,而非描述**:使用视觉预览,而非抽象的风格问卷。 4. **独特设计**:避免通用的紫色渐变、白色背景加 Inter 字体、模板化的文稿外观。 5. **生产质量**:保持代码注释清晰、可访问、响应式且性能良好。 在生成之前,请阅读 `STYLE_PRESETS.md` 以了解视口安全的 CSS 基础、密度限制、预设目录和 CSS 陷阱。 ## 工作流程 ### 1. 检测模式 选择一条路径: * **新演示文稿**:用户有主题、笔记或完整草稿 * **PPT 转换**:用户有 `.ppt` 或 `.pptx` * **增强**:用户已有 HTML 幻灯片并希望改进 ### 2. 发现内容 只询问最低限度的必要信息: * 目的:推介、教学、会议演讲、内部更新 * 长度:短 (5-10张)、中 (10-20张)、长 (20+张) * 内容状态:已完成文案、粗略笔记、仅主题 如果用户有内容,请他们在进行样式设计前粘贴内容。 ### 3. 发现风格 默认采用视觉探索方式。 如果用户已经知道所需的预设,则跳过预览并直接使用。 否则: 1. 询问文稿应营造何种感觉:印象深刻、充满活力、专注、激发灵感。 2. 在 `.ecc-design/slide-previews/` 中生成 **3 个单幻灯片预览文件**。 3. 每个预览必须是自包含的,清晰地展示排版/色彩/动效,并且幻灯片内容大约保持在 100 行以内。 4. 询问用户保留哪个预览或混合哪些元素。 在将情绪映射到风格时,请使用 `STYLE_PRESETS.md` 中的预设指南。 ### 4. 构建演示文稿 输出以下之一: * `presentation.html` * `[presentation-name].html` 仅当文稿包含提取的或用户提供的图像时,才使用 `assets/` 文件夹。 必需的结构: * 语义化的幻灯片部分 * 来自 `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 转换: 1. 优先使用 `python3` 和 `python-pptx` 来提取文本、图像和备注。 2. 如果 `python-pptx` 不可用,询问是安装它还是回退到基于手动/导出的工作流程。 3. 保留幻灯片顺序、演讲者备注和提取的资源。 4. 提取后,运行与新演示文稿相同的风格选择工作流程。 保持转换跨平台。当 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` 如果您需要为最终文稿进行自动化浏览器验证 ## 交付清单 * 演示文稿可在浏览器中从本地文件运行 * 每张幻灯片适配视口,无需滚动 * 风格独特且有意图 * 动画有意义,不喧闹 * 尊重减少动效设置 * 在交付时解释文件路径和自定义点