如何向QuillJS编辑器添加自定义字体大小

Jam*_*mes 8 javascript quill

如何使用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'
        });
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

但是它们都不起作用.这里有什么我想念的吗?我也试过从值中删除"px" ; 依然没有.

小智 23

上面接受的答案对我不起作用,但让我走上正轨.

以下是我必须要做的事情,让文本编辑器设置自定义字体大小(并在底层值而不是CSS类中为font-size设置内联样式):

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
    }
});
Run Code Online (Sandbox Code Playgroud)

我还必须修改我的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;
}
Run Code Online (Sandbox Code Playgroud)

  • 不得不通过其数据值来覆盖样式,而不是使用一些配置,这是绝对荒谬的:`{'size':{'Small':'14px','Normal':false,'Large':'16px ','Huge':'18px'}}`然后,菜单项的样式仍然悬而未决... (5认同)
  • 另外请注意,为了使菜单标题能够反映插入点所在的样式(与库存/默认菜单一样),我还必须添加这种CSS:`.ql-picker- label [data-value ="10px"] :: before {content:'Small'!important; }` (5认同)

And*_*rew 6

搭载@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',
});
Run Code Online (Sandbox Code Playgroud)

这是我发现的这个Quill 问题的纯 CSS 解决方案:

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

  • 看来您基于嵌套 CSS 类语法使用了 SASS 而不是纯 CSS。这是我今天想出的纯 CSS 解决方案: .ql-snow .ql-picker.ql-size .ql-picker-label[data-value]::before, .ql-snow .ql-picker.ql- size .ql-picker-item[数据值]::before { 内容:attr(数据值) !important; } (2认同)

jhc*_*hen 5

It's a bit weird right now so I may add this into a Quill configuration. But for now, the reason it's not working is Quill uses classes by default for sizing and what you want is inline styles. You can change this with:

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

// Rest is the same
var editor = new Quill('#editor');
Run Code Online (Sandbox Code Playgroud)