【问题标题】:How to add custom font sizes to QuillJS editor如何将自定义字体大小添加到 QuillJS 编辑器
【发布时间】:2016-12-02 02:22:39
【问题描述】:

如何使用 QuillJS 将自定义字体大小添加到工具栏?我尝试了两种方法:

// Initiate the editor
        let toolbarOptions = [
            ['bold', 'italic', 'underline', 'strike'],
            [{ 'align': [] }],
            [{ 'size': ['10px', '20px', '80px'] }],
            [{ 'color': ['#FFF'] }]
        ];
        this.editor = new Quill('#executive-control-editor', {
            modules: {
                toolbar: toolbarOptions
            },
            theme: 'snow'
        });

<div id="toolbar">
        <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-align"></select>
        </span>
        <span class="ql-format-group">
          <select title="Size" class="ql-size">
            <option value="10px">Small</option>
            <option value="13px">Normal</option>
            <option value="18px">Large</option>
            <option value="32px">Huge</option>
          </select>
        </span>
        <span class="ql-formats">
            <button class="ql-image"></button>
        </span>
    </div>

但是它们都不起作用。我在这里缺少什么吗?我也尝试从值中删除 "px" ;还是什么都没有。

【问题讨论】:

  • this issue
  • @Harangue 他遇到了无法超过 18px 的问题。我什至无法使用任何自定义尺寸。此外,那是 Beta1.0 之前的版本。他们现在已经发布了 1.0。
  • 记得看here也。

标签: javascript quill


【解决方案1】:

借助@mfranchi 和@pmarreck,我得到了一个标准的“MS Word”字体大小列表,其中包含以下内容:

const fontSizeArr = ['8px','9px','10px','12px','14px','16px','20px','24px','32px','42px','54px','68px','84px','98px'];

var Size = Quill.import('attributors/style/size');
Size.whitelist = fontSizeArr;
Quill.register(Size, true);

var toolbarOptions = [
    [{ 'size': fontSizeArr }],
];

const quill = new Quill("#quillElementSelector", {
    modules: {
        toolbar: toolbarOptions,
    },
    theme: 'snow',
});

这是一个纯 CSS 解决方案,我发现它是 this Quill 问题:

.ql-snow{
.ql-picker{
    &.ql-size{
        .ql-picker-label,
        .ql-picker-item{
            &::before{
                content: attr(data-value) !important;
            }
        }
    }
}
}

【讨论】:

  • 您似乎使用 SASS 而不是纯 CSS,基于嵌套的 CSS 类语法。这是我今天想出的纯 CSS 解决方案: .ql-snow .ql-picker.ql-size .ql-picker-label[data-value]::before, .ql-snow .ql-picker.ql-大小 .ql-picker-item[data-value]::before { content: attr(data-value) !important; }
  • Chrome 似乎会在小于 12px 时自动将 font-size 调整为 12px。虽然transform: scale(0.83); 可以在正常的 dom 中工作,但是在 quilljs-editor 中是否有呢?
【解决方案2】:

上面接受的答案对我不起作用,但让我走上了正确的轨道。

这是我必须做的让文本编辑器设置自定义字体大小(并且还在基础值而不是 CSS 类中为字体大小设置内联样式):

var Size = Quill.import('attributors/style/size');
Size.whitelist = ['14px', '16px', '18px'];
Quill.register(Size, true);

var toolbarOptions = [
    [{ 'size': ['14px', '16px', '18px'] }],
];

var quill = new Quill("#quillElementSelector", {
    theme: 'snow',
    modules: {
        toolbar: toolbarOptions
    }
});

我还必须修改我的 CSS 以覆盖工具栏下拉菜单上的标签。请注意,CSS 选择器中的“数据值”值必须与上面指定的值匹配。

.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before {
    content: 'Normal';
    font-size: 14px !important;
}

.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before {
    content: 'Large';
    font-size: 16px !important;
}

.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before {
    content: 'Huge';
    font-size: 18px !important;
}

【讨论】:

  • 谢谢!这也对我有用。将Size 更改为任何其他变量名时失败。奇怪!!!
  • 你不得不通过它们的数据值来覆盖样式,而不是使用像{'size': {'Small': '14px', 'Normal': false, 'Large': '16px', 'Huge': '18px'}} 这样的配置,这绝对是荒谬的。再一次,这使得菜单项的样式悬而未决。 ..
  • 请注意,另外,为了让菜单标题反映插入点所在位置的样式(就像它对股票/默认菜单所做的那样),我还必须添加这种CSS:.ql-picker-label[data-value="10px"]::before { content: 'Small' !important; }
  • 这是我遇到的问题的更好答案。我的应用程序要求编辑器使用滑块作为选择器具有约 200 种字体大小。我是否必须将每个值从我的最小到我的最大字体大小列入白名单?
  • @Lonergan6275 你找到解决办法了吗?我的要求是一样的..
【解决方案3】:

现在有点奇怪,所以我可以将它添加到 Quill 配置中。但就目前而言,它不起作用的原因是 Quill 默认使用类来调整大小,而您想要的是内联样式。您可以通过以下方式更改:

var Size = Quill.import('attributors/style/size');
Quill.register(Size, true);

// Rest is the same
var editor = new Quill('#editor');

【讨论】:

  • 现在,我正在使用 CDN 库。这还能用吗?
  • 我无法让这个解决方案发挥作用。尝试导入时它一直抛出错误。但是我确实找到了解决方法。我制作了自己的 snow css 文件副本并更改了文件的字体大小。谢谢大佬!
  • 我的错误我用正确的导入更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多