我可以使用Markdown在段落上定义类名吗?

我可以使用Markdown在段落上定义类名吗? 如果是这样,怎么样?

Dupe: 如何在Markdown中设置HTML类属性?


原生? 不是,但…

不,Markdown的语法不能。 您可以使用Markdown Extra来设置ID值 。

如果您愿意,可以使用常规HTML ,并添加属性markdown="1"以在HTML元素中继续进行降价转换。 尽pipe这需要Markdown Extra 。

 <p class='specialParagraph' markdown='1'> **Another paragraph** which allows *Markdown* within it. </p> 

可能的解决scheme:(未经testing,用于<blockquote>

我在网上发现了以下内容:

function

 function _DoBlockQuotes_callback($matches) { ...cut... //add id and class details... $id = $class = ''; if(preg_match_all('/\{(?:([#.][-_:a-zA-Z0-9 ]+)+)\}/',$bq,$matches)) { foreach ($matches[1] as $match) { if($match[0]=='#') $type = 'id'; else $type = 'class'; ${$type} = ' '.$type.'="'.trim($match,'.# ').'"'; } foreach ($matches[0] as $match) { $bq = str_replace($match,'',$bq); } } return _HashBlock( "<blockquote{$id}{$class}>\n$bq\n</blockquote>" ) . "\n\n"; } 

降价

 >{.className}{#id}This is the blockquote 

结果

 <blockquote id="id" class="className"> <p>This is the blockquote</p> </blockquote> 

原始HTML在Markdown中实际上是完全有效的。 例如:

 Normal *markdown* paragraph. <p class="myclass">This paragraph has a class "myclass"</p> 

只要确保HTML不在代码块内。

Markdown 应该有这个function,但是不是。 相反,你被困在语言特定的Markdown超集中:

PHP: Markdown Extra
ruby: Kramdown , Maruku

但是,如果你需要遵守真正的Markdown语法,那么你就坚持插入原始的HTML,这是不太理想的。

正如上面提到的降价本身让你挂在这个。 但是,根据实现,有一些解决方法:

至less有一个版本的MD认为<div>是块级标签,但是<DIV>只是文本。 然而,所有的交织都不区分大小写。 这允许您保持MD的语法简单,但需要添加div容器标签。

所以下面是一个解决方法:

 <DIV class=foo> Paragraphs here inherit class foo from above. </div> 

这样做的缺点是输出代码中包含<p> <div>行的<p>标记(两者都是第一个,因为它不是,第二个是因为不匹配)。 ,但是这个代码不会被validation,MD往往会放入空白的<p>标签。

几个版本的markdown实现了这个约定<tag markdown="1">在这种情况下,MD将在标签内进行正常的处理。 上面的例子变成:

 <div markdown="1" class=foo> Paragraphs here inherit class foo from above. </div> 

如果使用引用的链接,当前版本的Fletcher的MultiMarkdown允许属性遵循链接。

如果您的环境是JavaScript,请使用markdown-it和插件markdown-it-attrs :

 const md = require('markdown-it')(); const attrs = require('markdown-it-attrs'); md.use(attrs); const src = 'paragraph {.className #id and=attributes}'; // render let res = md.render(src); console.log(res); 

产量

 <p class="className" id="id" and="attributes">paragraph</p> 

的jsfiddle

注意:在标记中允许属性时要注意安全方面!

免责声明,我是markdown-it-attrs的作者。

下面是@ Yarin的答案kramdown的一个工作示例。

 A simple paragraph with a class attribute. {:.yourClass} 

参考: https : //kramdown.gettalong.org/syntax.html#inline-attribute-lists

不在Markdown中。 使用纺织品代替:

 This is a standard paragraph. p(a-class). This is a paragraph with a class. 

创build下面的html:

 <p>Note that this paragraph has no class.</p> <p class="a-class">This is a paragraph with a class.</p>