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 不生效?
<details> 里的 Markdown 不生效?在
</summary> 后面和 </details> 前面各空一行。没有空行时,内容会被当成 HTML 的一部分原样显示。怎样让内容默认展开?
给标签加上
open:<details open>。折叠内容里能放代码块和列表吗?
可以,前后留空行即可,写法见上面的示例。
Discord 里怎么隐藏剧透?
在文字两侧各加两条竖线:
||剧透||,读者点击后才会显示。<details> 对屏幕阅读器友好吗?
<details> 对屏幕阅读器友好吗?友好。浏览器会把标题变成一个控件,键盘和屏幕阅读器用户都可以展开和收起。
导出 PDF 或 Word 时折叠内容会怎样?
纸张不能折叠,Markdown 转 PDF 和 Markdown 转 Word 会把每段内容展开打印,标题作为小标题。
能改变标题前面的箭头或样式吗?
只有允许 CSS 的地方才能改。GitHub 和大多数托管网站会保留浏览器默认的三角形。