工具栏模块

工具栏模块允许用户轻松的格式化Quill的内容。

它能够被配置一个自定义的容器和处理程序。

  1. var quill = new Quill('#editor', {
  2. modules: {
  3. toolbar: {
  4. container: '#toolbar', // Selector for toolbar container
  5. handlers: {
  6. 'formula': customFormulaHandler
  7. }
  8. }
  9. }
  10. });

因为容器选项非常普遍,所以也允许使用短写方法。

  1. var quill = new Quill('#editor', {
  2. modules: {
  3. // Equivalent to { toolbar: { container: '#toolbar' }}
  4. toolbar: '#toolbar'
  5. }
  6. });

容器

工具栏控件可以由一个简单的格式化名称是数组或者一个自定义的HTML容器来指定。

使用更简单的数组选项:

  1. var toolbarOptions = ['bold', 'italic', 'underline', 'strike'];
  2. var quill = new Quill('#editor', {
  3. modules: {
  4. toolbar: toolbarOptions
  5. }
  6. });

控件也可以按照嵌套数组进行级别的分组。这将把<span>中的控件封装成类名为ql-formats的格式,为使用的主题提供结构。例如:Snow主题在控制组之间增加了额外的间距。

  1. var toolbarOptions = [['bold', 'italic'], ['link', 'image']];

具有自定义值的按钮可以使用名称作为对象的唯一值。

  1. var toolbarOptions = [{ 'header': '3' }];

下拉菜单同样使用一个对象配置,只不国是一个存在所有可能性值的数组。使用css来控制下拉菜单的标签显示。

  1. // Note false, not 'normal', is the correct value
  2. // quill.format('size', false) removes the format,
  3. // allowing default styling to work
  4. var toolbarOptions = [
  5. { size: [ 'small', false, 'large', 'huge' ]}
  6. ];

注意:主题还可以指定下拉菜单的默认值。例如Snow为字体颜色和背景颜色提供过了35中默认颜色,当设置为空时生效。

  1. var toolbarOptions = [
  2. ['bold', 'italic', 'underline', 'strike'], // 切换按钮
  3. ['blockquote', 'code-block'],
  4. [{ 'header': 1 }, { 'header': 2 }], // 用户自定义按钮值
  5. [{ 'list': 'ordered'}, { 'list': 'bullet' }],
  6. [{ 'script': 'sub'}, { 'script': 'super' }], // 上标/下标
  7. [{ 'indent': '-1'}, { 'indent': '+1' }], // 减少缩进/缩进
  8. [{ 'direction': 'rtl' }], // 文本下划线
  9. [{ 'size': ['small', false, 'large', 'huge'] }], // 用户自定义下拉
  10. [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
  11. [{ 'color': [] }, { 'background': [] }], // 主题默认下拉,使用主题提供的值
  12. [{ 'font': [] }],
  13. [{ 'align': [] }],
  14. ['clean'] // 清除格式
  15. ];
  16. var quill = new Quill('#editor', {
  17. modules: {
  18. toolbar: toolbarOptions
  19. },
  20. theme: 'snow'
  21. });

对于需要更多的定制需求,你可以手动在HTML中创建一个工具栏,并将DOM元素或者选择器传递给Quill。

ql-toolbar类将被添加到工具栏容器中,而Quill将相应的处理事件绑定到类名为ql-{format}格式的<button><select>元素上。按钮元素可以选择性添加自定义value值。

  1. <!-- Create toolbar container -->
  2. <div id="toolbar">
  3. <!-- Add font size dropdown -->
  4. <select class="ql-size">
  5. <option value="small"></option>
  6. <!-- Note a missing, thus falsy value, is used to reset to default -->
  7. <option selected></option>
  8. <option value="large"></option>
  9. <option value="huge"></option>
  10. </select>
  11. <!-- Add a bold button -->
  12. <button class="ql-bold"></button>
  13. <!-- Add subscript and superscript buttons -->
  14. <button class="ql-script" value="sub"></button>
  15. <button class="ql-script" value="super"></button>
  16. </div>
  17. <div id="editor"></div>
  18. <!-- Initialize editor with toolbar -->
  19. <script>
  20. var quill = new Quill('#editor', {
  21. modules: {
  22. toolbar: '#toolbar'
  23. }
  24. });
  25. </script>

注意:通过自己提供HTML元素生成工具条,Quill会检索特定元素生成系统的工具栏绑定到Quill,但是你自己的自定义输入元素将不会绑定到Quill,但仍然能够被添加到工具条、可以设置样式。

  1. <div id="toolbar">
  2. <!-- 像之前一样添加一个按钮 -->
  3. <button class="ql-bold"></button>
  4. <button class="ql-italic"></button>
  5. <!-- 但是,你仍然可以添加自己的 -->
  6. <button id="custom-button"></button>
  7. </div>
  8. <div id="editor"></div>
  9. <script>
  10. var quill = new Quill('#editor', {
  11. modules: {
  12. toolbar: '#toolbar'
  13. }
  14. });
  15. var customButton = document.querySelector('#custom-button');
  16. customButton.addEventListener('click', function() {
  17. console.log('Clicked!');
  18. });
  19. </script>

事件

工具栏空间默认应用并删除样式,但是你也可以用自定义事件将其覆盖,例如:为了展示额外的用户界面。

事件函数将被绑定到工具栏上(因此使用this将得到工具栏的实例),如果相应的格式是非活动的,则传递输入的value属性,否则返回false。添加自定义事件将覆盖默认的工具栏和主题行为。

  1. var toolbarOptions = {
  2. handlers: {
  3. // 事件对象将于默认的事件处理对象合并
  4. 'link': function(value) {
  5. if (value) {
  6. var href = prompt('Enter the URL');
  7. this.quill.format('link', href);
  8. } else {
  9. this.quill.format('link', false);
  10. }
  11. }
  12. }
  13. }
  14. var quill = new Quill('#editor', {
  15. modules: {
  16. toolbar: toolbarOptions
  17. }
  18. });
  19. // 处理事件也可以在初始化之后进行添加
  20. var toolbar = quill.getModule('toolbar');
  21. toolbar.addHandler('image', showImageUI);