添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

官网: https://quilljs.com

quill可以是一个文本编辑器JS库或是文本编辑器构建库。它提供了结构化数据方式用脱离语言的方式描述编辑器内容,同时预置了内置插件,支持自定义插件,有助于在此基础上进行和业务相关编辑器开发。

准备工作

关于 contenteditable 属性, selection 对象和 range 对象的介绍,可以参考 这篇文章

配置

1
2
3
const editor = new Quill("#container");
// 或是直接传入DOM对象
const editor = new Quill(document.body);

quill通常使用上面的方式初始化。在初始化时,支持用丰富的配置项定义生成的编辑器。下面是一个例子。

1
2
3
4
5
6
7
8
9
10
const options = {
debug: 'info',
modules: {
toolbar: '#toolbar'
},
placeholder: 'Tell a story...',
readOnly: false,
them: 'snow'
}
const editor = new Quill('#container', options);

Quill支持的配置项有:

  • bounds ,Quill UI元素的限制范围,默认 document.body
  • debug ,是 Quill.debug 的快捷方式,用于打印调试信息,默认级别为 warn
  • formats ,Quill中允许出现的格式,默认为 所有格式 ,它和toolbar是解耦的
  • modules ,注册在Quill中的功能模块和与之对应的配置信息,Quill会有默认配置
  • placeholder ,提示信息
  • readOnly ,是否可写
  • scrollContainer ,编辑器滚动条的父级,默认为编辑器本身
  • strict ,版本更新配置,默认为 true
  • theme ,整体外观,默认为 snow bubble 可选
  • 支持的文本格式

    分为 行内 块级 嵌入式 三大类。

  • 行内:加粗/背景色/字体颜色/字体/行内代码/斜体/下划线/删除线/链接/字体大小/上、下标
  • 块级:引用/标题/行首缩进/有序、无序列表/对齐/文本方向/代码块
  • 嵌入式:音频/视频/公式
  • API

    按照由浅入深,分为 修改内容 修改格式 选取 编辑器本身 事件 数据模型操作 拓展 几大类。涉及到内容修改的都会返回代表更改的delta。

    修改内容

    涉及到修改时,最后一个参数都可以选择 user api silent user 类型下,disabled时会没有效果。

  • deleteText ,输入起始点和长度,删除特定范围的内容,返回delta类型数据。如 quill.deleteText(6, 4)
  • getContents ,获取delta格式的编辑器内容,如 quill.getContents()
  • getLength ,获取文本长度,quill默认会有一个空行,所以默认返回1
  • getText ,获取文本内容,跳过非文本如音视频元素,如 quill.getText(0, 10)
  • insertEmbed ,输入位置,类型,值,插入嵌入式内容,如 quill.insertEmbed(10, 'image', 'https://quilljs.com/images/cloud.png')
  • insertText ,插入文本,可带格式。如下
    1
    2
    3
    4
    5
    6
    quill.insertText(0, 'Hello', 'bold', true);

    quill.insertText(5, 'Quill', {
    'color': '#ffff00',
    'italic': true
    });
  • setContent ,输入delta,重设编辑器内容,需以 \n 结尾。如下:
    1
    2
    3
    4
    5
    quill.setContents([
    { insert: 'Hello ' },
    { insert: 'World!', attributes: { bold: true } },
    { insert: '\n' }
    ]);
  • setText ,设置文本,返回代表改变的delta
  • updateContent ,输入delta,更新内容,返回代表更新的delta
  • format ,设置用户当前所选的文本格式,如 quill.format('color', 'red');
  • formatLine ,设置给定选择当前整行样式,使用类似 format 的方法设置样式,也支持直接传入格式对象。类似 quill.formatLine(1, 2, { 'align': 'right'})
  • formatText ,设置给定范围内文本格式,类似 formatLine
  • getFormat ,获取给定范围内的格式,没有输入时,返回当前选择的格式
  • removeFormat ,移除范围内样式
  • getBounds(index, length = 0) ,返回的top、width、height、left相对于编辑器容器而言
  • getSelection(focus = false) ,返回用户的选取范围,由index、length组成
  • setSelection(index, length = 0) ,设置选区范围,会自动focus,输入null会自动blur
  • 编辑器本身