MDUtil

Markdown 折叠内容

Markdown 没有折叠语法,但 HTML 的 <details> 标签在 GitHub 和大多数编辑器里都能用。本文介绍写法、必须留的空行,以及部分应用自带的折叠功能。

简短回答

Markdown 怎么写可折叠的内容?

用 <details> 包住内容,把始终显示的标题写在 <summary> 里。</summary> 后面要空一行,里面的 Markdown 才会生效。读者点击标题展开内容,给标签加上 open 就会默认展开。

Markdown
<details>
<summary>点击展开</summary>

折叠的内容里也可以写 **Markdown**。

</details>

显示效果

点击展开

折叠的内容里也可以写 Markdown。

折叠内容的示例

点击显示效果里的标题,可以展开和收起内容。

默认展开

加上 open 属性,内容默认展开,读者可以自己收起。

Markdown
<details open>
<summary>更新说明</summary>

- 启动更快
- 新的导出菜单

</details>

显示效果

更新说明
  • 启动更快
  • 新的导出菜单

折叠代码

较长的日志和代码适合放进折叠内容,代码块前后要留空行。

Markdown
<details>
<summary>查看构建日志</summary>

```text
[12:01] 开始构建
[12:03] 构建完成
```

</details>

显示效果

查看构建日志
[12:01] 开始构建
[12:03] 构建完成

嵌套折叠

折叠内容里还可以再放折叠内容,各自有自己的标题。

Markdown
<details>
<summary>第 1 章</summary>

<details>
<summary>第 1.1 节</summary>

第 1.1 节的正文。

</details>

</details>

显示效果

第 1 章
第 1.1 节

第 1.1 节的正文。

标题里的格式

<summary> 这一行是 HTML,要用 <b>、<code> 等标签,Markdown 在这里不生效。

Markdown
<details>
<summary><b>答案</b>(点击查看)</summary>

答案是 **42**。

</details>

显示效果

答案(点击查看)

答案是 42。

缺少空行

</summary> 后面没有空行时,内容会被当成 HTML 的一部分,里面的 Markdown 会原样显示。

Markdown
<details>
<summary>点我展开</summary>
**这里会原样显示**
</details>

显示效果

点我展开 **这里会原样显示**

Obsidian:可折叠的标注框

在 Obsidian 里,类型后面加 - 的标注框默认折叠,点击后展开。

Markdown
> [!faq]- 怎样重置密码?
> 打开设置,选择“重置密码”。

仅适用于 Obsidian。其他 Markdown 应用的显示效果不同,因此不提供预览。

各平台的折叠支持

<details> 需要应用保留 HTML,有些应用另有自己的折叠功能。

应用支持情况说明
GitHub / GitLab支持文件、Issue 和评论里都能用 <details>。
VS Code / Typora支持预览中可以展开和收起 <details>。
Obsidian有差异能显示 <details>,但里面的 Markdown 不会渲染;原生的折叠方式是 > [!note]- 这样的标注框。
Notion有差异不支持 <details>,输入 > 加空格会生成折叠列表。
Discord / Slack不支持没有折叠内容,Discord 可以用 ||文字|| 把文字隐藏成剧透。

常见问题

GitHub 上怎么写折叠内容?

用 <details> 加一行 <summary>,并在 </summary> 后面空一行,里面的 Markdown 才会生效。README、Issue、Pull Request 和评论都支持。

为什么 <details> 里的 Markdown 不生效?

在 </summary> 后面和 </details> 前面各空一行。没有空行时,内容会被当成 HTML 的一部分原样显示。

怎样让内容默认展开?

给标签加上 open:<details open>。

折叠内容里能放代码块和列表吗?

可以,前后留空行即可,写法见上面的示例。

Discord 里怎么隐藏剧透?

在文字两侧各加两条竖线:||剧透||,读者点击后才会显示。

<details> 对屏幕阅读器友好吗?

友好。浏览器会把标题变成一个控件,键盘和屏幕阅读器用户都可以展开和收起。

导出 PDF 或 Word 时折叠内容会怎样?

纸张不能折叠,Markdown 转 PDF 和 Markdown 转 Word 会把每段内容展开打印,标题作为小标题。

能改变标题前面的箭头或样式吗?

只有允许 CSS 的地方才能改。GitHub 和大多数托管网站会保留浏览器默认的三角形。