将自定义 CSS 应用于 TinyMCE 编辑器的正确方法

Proper way of applying custom CSS to TinyMCE editor

我在 ID #mytextarea 的文本区域中集成了一个 TinyMCE ver 4.9.9 实例。它正在被应用,这是由以下人员提供的屏幕截图:

用于初始化编辑器的代码是:

tinymce.init({
    selector: "#mytextarea",
    height: 300,
    statusbar: false,
    menubar: false,
    plugins: "link lists placeholder",
    toolbar: "undo redo | bold italic underline | bullist numlist | link"
});

HTML:

<form method="post" action="form.php">
    <table align="center" border="0" width="50%">
        <tr>
            <th><label for="mytextarea">Content:</label></th>
            <td><textarea name="mytextarea" id="mytextarea"></textarea></td>
        </tr>
    </table>
</form>

现在我想改变这个编辑器的外观,例如删除框阴影并应用我自己选择的边框颜色,以便它可以与我网站的主题和配色方案融合。

根据他们的官方文档,我不知道具体怎么做 属性。为了达到我的要求,我将 content_css: "css/style.css" 添加到 tinymce.init({...});。我的代码变成:

tinymce.init({
    selector: "#mytextarea",
    height: 300,
    statusbar: false,
    menubar: false,
    plugins: "link lists placeholder",
    toolbar: "undo redo | bold italic underline | bullist numlist | link",
    content_css: "css/style.css"
});

但我不知道 style.css 中该做什么。我是否应该像这样

将我的自定义 CSS 应用到 TinyMCE 编辑器 类
.mce-tinymce {
    box-shadow:none;
}

但即使在上面应用之后,也没有任何反应。 box-shadow 没有从编辑器中删除。

所以我转到我的主文件,其中我在上面编写了 TinyMCE 代码并将我的自定义 CSS 写为:

<style type="text/css">
.mce-tinymce {
    box-shadow:none !important;
}
</style>

它确实对我有用。

您可以看到 box-shadow 现在已经消失了。

那么谁能建议我将自定义 CSS 应用到 TinyMCE 编辑器实例的正确和准确的方法是什么?我的第二种方法是对还是错?如果错了那么如何捕捉编辑器的 类,应用我们自己的 CSS 以及在哪里写它们?

为了回答您的问题,我们首先需要了解 TinyMCE 本身如何呈现到页面以及 content_css 实际影响。

如果您在 TinyMCE 出现后使用浏览器的开发工具检查页面,您会看到 TinyMCE 将自身呈现为一系列 div 元素和单个 iframe.

menubartoolbar(s)statusbar 在您调用 TinyMCE 的页面上都呈现为一组嵌套的 div 元素。您实际输入内容的矩形是 iframe.

如果您想将 CSS 注入 iframe 以影响您在 TinyMCE 中看到的内容,您需要使用 content_css 设置。这会将您提供的 CSS 注入 iframe

默认情况下,编辑器本身的外观(例如 menubartoolbar(s)statusbar)由 TinyMCE 皮肤处理。如果您想影响编辑器 menubartoolbar(s)statusbar 的外观和感觉,您可以 (a) 修改皮肤的 skin.css 文件或 (b)您所做的并将您自己的 CSS 添加到主页以覆盖 skin.css 中的设置。没有对错之分,都会达到你想要的结果。