配置参考 \ 格式化配置有关格式工具的相关配置。

此页更新时间:2020-12-25 16:34

此页英文文档:https://www.tiny.cloud/docs/configure/content-formatting/

有关格式工具的相关配置:

formats(格式自定义)

该选项可用于覆盖编辑器默认格式,添加自定义格式。

例如,当用户点击编辑器工具栏的“加粗”工具时,如果使用该选项定义了该行为,则TinyMCE会按照定义的行为去执行操作。

例子可参考前面的章节:简介与入门 \ 内容过滤,这里将更加详细的介绍formats的各种参数及其用法。

内置格式

TinyMCE允许重写的内置格式,如下表所示:

  • alignleft
  • aligncenter
  • alignright
  • alignjustify
  • bold
  • italic
  • underline
  • strikethrough
  • forecolor
  • hilitecolor
  • fontname
  • fontsize
  • blockquote
  • removeformat
  • p
  • h1, h2, h3, h4, h5, h6
  • div
  • address
  • pre
  • div
  • code
  • dt, dd
  • samp

一些内置格式fontsize、fontname、forecolor、hilitecolor,它们的值使用变量%value代替。此变量将替换为用户选择的值。

格式类型

  • block 块操作
  • inline 内联操作
  • selector 选择器操作
block 块操作

更改块元素的默认行为,也就是当前焦点外围标签整体变化的行为。

以下示例改写了默认格式h1,也就是当你使用工具栏指定当前段落为:“标题1”时,原本的默认行为是将当前焦点外围标签变为h1,但现在是将外围标签变为p,并追加一个class值"class1"。

tinymce.init({
    selector: '#textarea1',
    formats:{
        h1:{block:'p',classes:'class1'},
    }
});
inline 内联操作

以下示例改写了加粗的默认行为,默认行为是用strong包裹当前选中的文本,现在则是用span包裹,并追加一个class值"class1"。

tinymce.init({
    selector: '#textarea1',
    formats:{
        bold: { inline: 'span', classes: 'class1' }
    }
});
selector 选择器操作

可使用css3选择器查找选中内容内的元素。它仅将当前格式应用于特定的元素,例如表的奇数行。

tinymce.init({
    selector: '#textarea1',
    formats:{
        bold: { selector: 'strong', styles: {'color':'red'} }
    }
});

格式参数

classes

用空格分隔的类列表,追加到选中或新创建的内联或块元素。

类型:String

例:bold: { inline: 'span', classes: 'class1' }
styles

包含名称/值的一个对象。将自定义css样式置入到选中内容中,如上例的加粗变红。

类型:Object

例:bold: { inline: 'strong', styles: {'color':'red'} }
attributes

包含名称/值的一个对象。给html标签添加自定义属性。

类型:Object

例:bold: { inline: 'strong', attributes: { 'data-style': 'bold' } }
exact

可设值为:true,此选项将禁用样式合并功能,用于解决一些css继承问题,例如下划线、删除线。默认为false。

类型:boolean

例:underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true } }
wrapper

指定当前格式是块元素,例如div或blockquote。

类型:boolean

默认:false

remove

当执行格式操作时,对该元素进行的清理行为。其值可以是:

  • none:仅从元素中删除样式、类或属性,不会删除该元素。
  • empty:如果元素没有样式、类或属性,则删除该元素。
  • all:删除该元素。
虽然remove多用在removeformat工具上,但TinyMCE并不限制你将其用在其它地方。
tinymce.init({
    selector: '#textarea1',
    extended_valid_elements: 'span[*]', // Needed to retain spans without attributes these are removed by default
    formats: {
        removeformat: [
            // Configures `clear formatting` to remove specified elements regardless of it's attributes
            { selector: 'b,strong,em,i,font,u,strike', remove: 'all' },
            // Configures `clear formatting` to remove the class red from spans and if the element then becomes empty i.e has no attributes it gets removed
            { selector: 'span', classes: 'red', remove: 'empty' },
            // Configures `clear formatting` to remove the class green from spans and if the element then becomes empty it's left intact
            { selector: 'span', classes: 'green', remove: 'none' }
        ],
    }
});
block_expand

此选项控制操作选择是否应向上扩展到最接近的匹配块元素。在配置removeformat删除块元素时,这可能很有用。如果选择开始位于匹配块元素的开头部分,那么也将包含该块元素。如果选择的结尾位于匹配块元素的末尾部分,那么也将包含该父元素。

因此,如果在此html内容中选择是从a到b,<h1><b>[a</b></h1><p>b]</p>则即使h1不是实际选择的一部分,也将删除h1。

取值:true/false

默认:false

deep

当设为true时,尝试在选择范围内深度清除当前样式。默认为false,当尝试从类中除去某个类时,可能会存在无法删除的情况。

取值:true/false

默认:false

比较难理解,上个DEMO试一下:

tinymce.init({
    selector: '#textarea1',
    plugins:'code',
    style_formats: [
        { title: 'deep false', inline: 'span', classes: 'myclass1', deep: false },
        { title: 'deep true', inline: 'span', classes: 'myclass2', deep: true }
    ],
    content_style: '.myclass1{color:red;} .myclass2{font-weight:700;}',
});
格式选项的部分示例:

这个例子覆盖了一些内置格式,告诉TinyMCE使用指定的class而不是创建内联样式。最后还创建了一个自定义格式,它生成一个带title属性且为红色的h1。

tinymce.init({
    selector: '#textarea1',
    formats: {
        alignleft: { selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'left' },
        aligncenter: { selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'center' },
        alignright: { selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'right' },
        alignjustify: { selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'full' },
        bold: { inline: 'span', classes: 'bold' },
        italic: { inline: 'span', classes: 'italic' },
        underline: { inline: 'span', classes: 'underline', exact: true },
        strikethrough: { inline: 'del' },
        forecolor: { inline: 'span', classes: 'forecolor', styles: { color: '%value' } },
        hilitecolor: { inline: 'span', classes: 'hilitecolor', styles: { backgroundColor: '%value' } },
        custom_format: { block: 'h1', attributes: { title: 'Header' }, styles: { color: 'red' } }
    },
});
自定义格式API

//应用一个自定义格式
tinymce.activeEditor.formatter.apply('custom_format');
//移除一个自定义格式
tinymce.activeEditor.formatter.remove('custom_format');

//注册格式时可以包含变量,在应用时给该变量赋值
//注册一个自定义格式,其中包含变量
tinymce.activeEditor.formatter.register('custom_format', { inline: 'span', styles: { color: '%value' } });
//应用自定义格式,给变量赋值
tinymce.activeEditor.formatter.apply('custom_format', { value: 'red' });
removeformat(参考上面remove的例子)

format_empty_lines

5.6新增

此选项允许将内联格式应用与多行选择的空行,例如strong 、span。

暂翻待具体验证。

取值:ture / false

默认:false

indentation(缩进)

设置缩进工具的缩进大小。

取值:String

默认:'30px'

注意:此缩进并不是首行缩进text-indent,而是padding-left

indentation : '10px'

indent_use_margin(使用margin缩进)

默认缩进使用padding,该选项为true时会使用margin代替padding。

取值:true/false

默认:false

indent_use_margin : true

下一节:图片&文件上传配置