Marp全屏演示应用程序接口 | AI生成和翻译
问题:为什么 Marp 的 HTML 导出在 Safari 中能以全屏运行,它使用了什么技术,而普通的 HTML 为什么没有全屏选项?
回答:
Marp 的 HTML 导出在 Safari 中以全屏模式运行,是因为它基于 浏览器全屏 API 加上幻灯片式的演示布局构建(本质上是一个为演示设计的 Web 应用)。
1. Marp 实际导出的内容
Marp 导出的不是传统意义上的“普通 HTML 页面”,而是一个 演示型 Web 应用,通常包含:
- 单个 HTML 文件(或一个小型打包文件)
- 将每个“幻灯片”设置为全视口页面(
100vw × 100vh)的 CSS - 处理导航(方向键、点击等)的 JavaScript
- 一个全屏触发按钮
因此它的行为更像:
一个在浏览器中运行的迷你 PowerPoint
2. 关键技术:全屏 API
Marp 使用了浏览器内置的:
-
全屏 API
element.requestFullscreen()document.exitFullscreen()
激活后,Safari(以及其他浏览器)可以:
- 隐藏地址栏/标签页
- 将内容扩展至填满屏幕
- 将焦点锁定在演示元素上
这就是为什么 Marp 能像原生演示应用一样运行。
3. Safari 为什么能很好地支持此功能
Safari 对全屏 API 的支持很完善,适用于:
- 视频播放器
- 演示文稿
- Web 应用(如幻灯片)
Marp 很可能以全屏 <div> 容器为目标,例如:
document.documentElement.requestFullscreen()
或者幻灯片容器:
slideContainer.requestFullscreen()
一旦激活,Safari 就会切换到“类似演示模式”的状态。
4. 为什么“普通 HTML”不会自动进入全屏
普通 HTML 页面不会进入全屏模式,原因如下:
(1)安全限制
全屏必须:
- 由 用户操作 触发(点击、按键)
- 不能在页面加载时自动执行
因此普通网站只会保持在浏览器 UI 内。
(2)缺乏布局强制约束
常规 HTML:
- 并非有意设计为占据整个视口
- 不强制设定幻灯片式尺寸(
100vh) - 支持滚动而非分页
因此即使启用了全屏,除非专门设计,否则它看起来仍然像一个网页。
(3)全屏不是默认行为
浏览器默认假设:
- 用户需要标签页、地址栏、导航控件
- 全屏是“可选的全沉浸模式”
5. 为什么 Marp 感觉与普通 HTML 不同
Marp 补全了缺失的部分:
| 特性 | 普通 HTML | Marp HTML |
|---|---|---|
| 全屏 API | 可选 | 主动使用 |
| 布局 | 流式文档 | 固定幻灯片视口 |
| 导航方式 | 滚动 | 基于幻灯片(JS 控制) |
| 演示模式 | 无 | 内置 |
因此 Marp 本质上是:
HTML + CSS + JS + 全屏 API = 演示引擎
6. 为什么它在 Safari 中尤其流畅
Safari 倾向于:
- 积极优化全屏渲染
- 将全屏元素视为“类应用界面”
- 对固定布局页面进行平滑缩放处理
因此 Marp 的幻灯片结构与 Safari 的全屏行为完美契合。
如果你需要,我可以详细说明如何仅用 HTML + CSS + 20 行 JavaScript 代码构建一个迷你“类 Marp”系统。