0

我正在学习 reactjs,我正在尝试创建一个文本编辑器,我想在其中对基于开始和结束索引选择的文本进行缩进。

我可以获取选定的文本,并且可以使用标记的包(例如**粗体和_斜体等)应用粗体、斜体,但我不能为标记的标签应用诸如text-align,之类的样式。text-decoration

如何为标记的标签应用样式?有没有其他方法可以做到这一点?

4

1 回答 1

0

您需要定义 CSS 规则来设置生成的 HTML 样式。如果您希望样式仅应用于单个段落(或段落的子集),那么您可能需要在 Markdown 中使用原始 HTML 来定义段落上的类或至少定义内联样式。

正如原始语法规则所述(强调添加):

Markdown 的语法有一个目的:用作网络写作的一种格式。

Markdown 不是 HTML 的替代品,甚至不能接近它。它的语法非常小,只对应非常小的 HTML 标记子集。我们的想法不是创建一种更容易插入 HTML 标记的语法。在我看来,HTML 标签已经很容易插入了。Markdown 的想法是让阅读、编写和编辑散文变得容易。HTML 是一种发布格式;Markdown 是一种写作格式。因此,Markdown 的格式化语法只解决了可以用纯文本传达的问题

对于 Markdown 语法未涵盖的任何标记,您只需使用 HTML 本身。

由于 Markdown 不是一种“发布格式”,因此提供一种样式/布局文本的方法超出了 Markdown 的范围。也就是说,这并非不可能,因为您可以包含原始 HTML(并且 HTML 是一种发布格式)。例如,以下原始 HTML 将缩进一个段落:

<p style="padding-left:4em">A paragraph which is indented.<p>

或者,如果您在 CSS 中定义了一些样式:

.indent {
    padding-left: 4em;
}

然后您可以使用原始 HTML 将该类分配给一个段落:

<p class="indent">A paragraph which is indented.<p>

这样做的缺点是,根据规则,Markdown 文本不会在块级原始 HTML 标记内处理。这意味着您的链接以及粗体和斜体文本也需要使用原始 HTML 进行格式化。

另一种可能性是使用最初由 Markdown 的Markuru实现引入的非标准属性列表,后来被其他 一些 采用(可能还有更多,但我只知道这四个)。在这种情况下,您可以为 Markdown 段落分配一个类(避免使用原始 HTML),然后使用 CSS 为该类定义布局。但是,您绝对必须使用实际支持非标准功能的少数实现之一,并且您的文档不再可移植到其他系统。

于 2017-05-03T15:21:19.743 回答