Skip to content

Marp 样式优化

本文档介绍了用于 Marp 生成幻灯片的移动端优化脚本。

概述

Marp 生成的 HTML 幻灯片在移动设备上的控制栏(导航按钮)未做优化:按钮过小、位置不合理,部分功能在移动端无用。由于幻灯片嵌入在 iframe 中,父页面的 CSS 无法影响幻灯片控件。

问题说明

Marp 默认移动端体验的问题

  • 触控目标过小:导航按钮仅 32px,难以准确点击
  • 位置不合理:控制栏距离底部太远,拇指操作不便
  • iframe 隔离:父页面 CSS 无法样式化嵌入的幻灯片控件
  • 无用功能:演讲者按钮在移动端无实际用途
  • 无响应式设计:布局固定,无法适配不同屏幕尺寸

解决方案架构

直接在 marp 的 markdown 文件中增加 css 配置,例如:

<style>
/* 移动端优化样式 */
@media (max-width: 768px) {
  .controls {
    bottom: 20px;
  }
  .control-button {
    width: 48px;
    height: 48px;
  }
}
</style>

使用方法

我已经在 archetypes 目录中创建了 slide 类型,你只需要使用 hugo 命令先创建一个 markdown,比如:

hugo new -k slide content/zh/slide/new-slide/marp.md

这其中已经包含了 marp 的 css 配置,在生成的 markdown 文件中编写幻灯片。

到生成的 marp.md 的目录下执行:

marp marp.md -o marp.html

生成的 HTML 文件将自动应用移动端优化样式。

最后将生成的幻灯片迁移到 static/slides/new-slide/ 目录下即可。

最后需要使用 shortcode 短代码来引用这个幻灯片:

{{< slide src="slides/new-slide/marp.html" >}}