如何使用工具栏选项在 Quill js 上添加字体类型?

2024-01-07

我制作了一个富文本区域Quill js https://quilljs.com。我的工具栏有以下选项:

new Quill('#quilljs-container', {
    modules: {
        toolbar: [
           ['bold', 'italic', 'underline', 'strike'],        // toggled buttons
           ['blockquote', 'code-block', 'link'],

           [{ 'header': 1 }, { 'header': 2 }],               // custom button values
           [{ 'list': 'ordered'}, { 'list': 'bullet' }],
           [{ 'script': 'sub'}, { 'script': 'super' }],      // superscript/subscript
           [{ 'indent': '-1'}, { 'indent': '+1' }],          // outdent/indent
           [{ 'direction': 'rtl' }],                         // text direction

           [{ 'color': [] }, { 'background': [] }],          // dropdown with defaults from theme
           [{ 'font': [] }],
           [{ 'align': [] }],

           ['clean']                                         // remove formatting button
       ]
    },
    theme: 'snow'
});
<!-- Style -->
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">

<!-- quill js container -->
<div id="quilljs-container">  </div>

<!-- Add quill js on the project -->
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script>

目前,当我尝试添加更多类型编辑工具栏上的“字体”选项(例如“font”:[“arial”])时,选择选项仅显示“Sans Serif”而不是显示“Arial”选项。我所看到的是默认选项(“Sans Serif”、“Serif”、“Monospace”)以及我想要添加的自定义选项。

另外,我已经尝试过定制归因 https://quilljs.com/guides/how-to-customize-quill/#customizing-attributors文档中显示,但根据我当前的配置,它只显示默认选项。也许我错过了一些东西。

我希望我清楚了我的疑问,有人可以帮助我。

UPDATE:

为了更清楚一点,我正在尝试添加更多字体Quill 容器配置 http://quilljs.com/docs/modules/toolbar/#container

容器:在最简单的级别上,工具栏控件可以通过简单的格式名称数组来指定。


这就是你所需要的。

你需要的过程是这样的4个组件:

  1. A select带有一个标签ql-font班级。这将包含新的字体选项。
  2. 将新字体添加到白名单。这必须在调用之前定义QuillJavaScript 中的构造函数。
  3. 定义font-family对于每个label在下拉菜单中。例子:font-family: "Inconsolata"
  4. 定义将在文本区域中使用的内容字体系列。按照第三个组件中的示例:.ql-font-inconsolata { font-family: "Inconsolata";}

Update:

我阅读文档是为了帮助您,他们提到了这一点

在最简单的层面上,工具栏控件可以通过简单的格式名称数组来指定......

或者,您可以手动创建工具栏HTML通过通过DOM元素 or selector进入羽毛笔;这就是这个答案中提出的解决方案。另一方面,文档没有提到,但在尝试了多种方法之后使用数组加载数据(没有任何成功),我注意到这是不可能的。所以,这是我的贡献以及我发布此内容的原因update。我为手动实现制作了等效项(JS 和 HTML)。

A 自定义工具栏可以使用创建HTML and a JS构造函数。构造函数将收到#toolbar-container as a toolbar in the modules部分。

然后,您可以仅使用生成相同的结构HTML标签。这个概念非常相似。例如:

  • If in JS我们声明一个这样的数组:['bold', 'italic', 'underline', 'strike'] in HTML将:
<span class="ql-formats">
    <button class="ql-bold"></button>
    <button class="ql-italic"></button>
    <button class="ql-underline"></button>
    <button class="ql-strike"></button>
</span>
  • In JS is [{ 'header': 1 }, { 'header': 2 }] in HTML will be
<span class="ql-formats">
   <button class="ql-header" value="1"></button>
   <button class="ql-header" value="2"></button>
</span>

因此,这里的代码片段中有一个完整的示例:

// Add fonts to whitelist
let Font = Quill.import('formats/font');
// We do not add Sans Serif since it is the default
Font.whitelist = ['inconsolata', 'roboto', 'mirza', 'arial'];
Quill.register(Font, true);


// We can now initialize Quill with something like this:
let quillObj = new Quill('#quilljs-container', {
  modules: {
    toolbar: '#toolbar-container'
  },
  placeholder: 'This is a font test...',
  theme: 'snow'
});
<!-- Style -->
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<style>
  /* Set dropdown font-families */
  
  #toolbar-container .ql-font span[data-label="Sans Serif"]::before {
    font-family: "Sans Serif";
  }
  
  #toolbar-container .ql-font span[data-label="Inconsolata"]::before {
    font-family: "Inconsolata";
  }
  
  #toolbar-container .ql-font span[data-label="Roboto"]::before {
    font-family: "Roboto";
  }
  
  #toolbar-container .ql-font span[data-label="Mirza"]::before {
    font-family: "Mirza";
  }
  
  #toolbar-container .ql-font span[data-label="Arial"]::before {
    font-family: "Arial";
  }
  /* Set content font-families */
  
  .ql-font-inconsolata {
    font-family: "Inconsolata";
  }
  
  .ql-font-roboto {
    font-family: "Roboto";
  }
  
  .ql-font-mirza {
    font-family: "Mirza";
  }
  
  .ql-font-arial {
    font-family: "Arial";
  }
  /* We do not set Sans Serif since it is the default font */
</style>
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">


<div id="standalone-container">
  <div id="toolbar-container">
    <span class="ql-formats">
      <select class="ql-font">
        <option selected>Sans Serif</option>
        <option value="inconsolata">Inconsolata</option>
        <option value="roboto">Roboto</option>
        <option value="mirza">Mirza</option>
        <option value="arial">Arial</option>
      </select>
      <select class="ql-size"></select>
    </span>
    <span class="ql-formats">
      <button class="ql-bold"></button>
      <button class="ql-italic"></button>
      <button class="ql-underline"></button>
      <button class="ql-strike"></button>
    </span>
    <span class="ql-formats">
      <select class="ql-color"></select>
      <select class="ql-background"></select>
    </span>
    <span class="ql-formats">
      <button class="ql-blockquote"></button>
      <button class="ql-code-block"></button>
      <button class="ql-link"></button>
    </span>
    <span class="ql-formats">
      <button class="ql-header" value="1"></button>
      <button class="ql-header" value="2"></button>
    </span>
    <span class="ql-formats">
      <button class="ql-list" value="ordered"></button>
      <button class="ql-list" value="bullet"></button>
      <button class="ql-indent" value="-1"></button>
      <button class="ql-indent" value="+1"></button>
    </span>
    <span class="ql-formats">
      <button class="ql-direction" value="rtl"></button>
      <select class="ql-align"></select>
    </span>
    <span class="ql-formats">
      <button class="ql-script" value="sub"></button>
      <button class="ql-script" value="super"></button>
    </span>
    <span class="ql-formats">
      <button class="ql-clean"></button>
    </span>
  </div>
</div>
<!-- quill js container -->
<div id="quilljs-container"></div>
<!-- Add quill js on the project -->
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用工具栏选项在 Quill js 上添加字体类型? 的相关文章

随机推荐