我正在尝试在Markdown文档中设置个人列表的样式,该列表将转换为HTML。我不能通过CSS设置li
标记的样式,因为所有列表都是样式化的,我不能在特殊列表周围使用div
,因为multimarkdown
不会在{div
内转换Markdown 1}}。所以我尝试了span
。
此处示例Markdown文档:
A normal list:
* List-item-one
* List-item-two
The special-styled list:
<span class="linelist">
* List-item-alpha
* List-item-beta
</span>
我通过multimarkdown将其转换为HTML。显示特殊列表的相关部分如下所示:
<p><span class="linelist"></p>
<ul>
<li>List-item-alpha</li>
<li>List-item-beta</li>
</ul>
<p></span></p>
到目前为止一直很好,但是当我使用带有以下linelist
类
.linelist {
display: inline;
color: red;
}
特殊列表在浏览器中仍然呈现为没有颜色或内联属性。
如何将linelist
类应用或“注入”到列表项而不将类添加到ul
或li
标记(因为Markdown生成列表)。
更新:使用的降价转换器是Discount库的变体。如果有一个独立于转换器的纯CSS解决方案,那就太好了。
答案 0 :(得分:1)
您需要告诉MultiMarkdown在HTML块中处理Markdown。有几种方法可以做到这一点(如docs中所述)
首先,您可以通过在包含的原始HTML元素上设置markdown=1
,将块标记为包含Markdown文本:
<div class="linelist" markdown=1>
* List-item-alpha
* List-item-beta
</div>
哪个应该给你这个输出:
<div class="linelist">
<ul>
<li>List-item-alpha</li>
<li>List-item-beta</li>
</ul>
</div>
第二个选项是告诉MultiMarkdown使用--process-html
命令行选项处理所有 HTML块中的Markdown文本。如果你走这条路,你可以省略markdown=1
,但要注意任何原始HTML中的所有文本都将被处理为Markdown,这可能会在某些边缘情况下产生不良结果。通常最好坚持使用markdown=1
方法,并仅在需要时明确要求Markdown处理。
最后,即使使用markdown=1
技巧,也需要修复CSS。类linelist
指向div,而不是列表。虽然颜色变化将由所有div元素的子元素继承,但display: inline
可能不会。实际上,display: inline
需要专门应用于li
:
.linelist ul li {
display: inline;
color: red;
}
注意第一行;该规则适用于任何li
ul
的子项,linelist
是<p><span class="linelist"></span></p>
<ul>
<li>List-item-alpha</li>
<li>List-item-beta</li>
</ul>
<p><span></span></p>
类的任何元素的子项。
顺便说一句,你使用span不会起作用(即使修复了CSS),因为span是一个内联元素,而一个内联元素不能包含块级元素。虽然这意味着您的输出无效,但构建浏览器以处理无效标记。事实上,浏览器可能(不同的浏览器可能因此这种稍微不同且不可预测的方式)解释您的输出(使用跨度),如下所示:
<p>
请注意,当浏览器到达块元素的末尾(在这种情况下为lineline
元素)时,它会为您关闭未闭合的跨度。因此,就浏览器而言,您的span实际上并没有包装列表,因此,使用> %linelist%
> * List-item-alpha
> * List-item-beta
类不会将CSS应用于列表。因此,您必须使用div或至少一些块级元素。
如果您使用折扣(如问题更新中所示),您可以使用Class Block创建一个分配了类的div:
<div class="linelist">
<ul>
<li>List-item-alpha</li>
<li>List-item-beta</li>
</ul>
</div>
我并不熟悉Discount,这是未经测试的,但根据文档,上述输入应该提供以下输出:
MKD_NODIVQUOTE
请确保MKD_TAGTEXT
flag 不设置为禁用此功能。我对此不太确定,但如果我正确理解文档,$memcache->addServer('memcache', 11211);
标记可能会将HTML标记内的Markdown文本解析为第二个选项。