项目

自定义容器扩展(Markdig 规范文档)

本节描述了支持的不同扩展:

自定义容器

自定义容器类似于围栏代码块,但使用字符 : 来声明一个块(至少 3 个字符),而不是生成 <pre><code>...</code></pre>,它将生成一个 <div>...</div> 块。

:::spoiler
这是一个 *剧透*
:::
.
<div class="spoiler"><p>这是一个 <em>剧透</em></p>
</div>

打开的自定义容器后面的文本是可选的:

:::
这是一个普通的 div
:::
.
<div><p>这是一个普通的 div</p>
</div>

与围栏代码块一样,只要关闭时具有相同数量的字符,您可以使用超过 3 个 : 字符:

::::::::::::spoiler
这是一个剧透
::::::::::::
.
<div class="spoiler"><p>这是一个剧透</p>
</div>

与围栏代码块类似,自定义容器可以在列表块中跨越多行空行:

- 这是一个列表
  :::spoiler
  这是一个剧透
  - 项目1
  - 项目2
  :::
- 列表中的第二个项目
.
<ul>
<li>这是一个列表
<div class="spoiler">这是一个剧透
<ul>
<li>项目1</li>
<li>项目2</li>
</ul>
</div>
</li>
<li>列表中的第二个项目</li>
</ul>

只要在自定义容器扩展之后激活属性扩展(.UseCustomContainer().UseAttributes()),也支持自定义容器的属性扩展:

:::spoiler {#myspoiler myprop=yes}
这是一个剧透
:::
.
<div id="myspoiler" class="spoiler" myprop="yes"><p>这是一个剧透</p>
</div>

自定义容器的内容可以包含任何块:

:::mycontainer
这是一个原始剧透
:::
.
<div class="mycontainer"><p>这是一个原始剧透</p>
</div>

内联自定义容器

自定义容器也可以在内联容器(如段落、标题...)中使用,通过在一个文本周围使用新的强调符号 ::

这是一个文本 ::with 特殊强调::
.
<p>这是一个文本 <span>with 特殊强调</span></p>

任何其他内联强调都可以在内联自定义容器中使用:

这是一个文本 ::with 特殊 *强调*::
.
<p>这是一个文本 <span>with 特殊 <em>强调</em></span></p>

内联自定义容器可以附加属性:

这是一个文本 ::with 特殊强调::{#myId .myemphasis}
.
<p>这是一个文本 <span id="myId" class="myemphasis">with 特殊强调</span></p>
在本文档中