前言

RuoYi-Vue 默认用的富文本编辑器是 Quill,但是功能不是很全,默认的文字大小只有几种预设,而且上传视频还只能使用 url,不过这些都可以自定义。

自定义文字大小

1.定义字号

修改 ruoyi-ui/src/components/Editor/index.vue 文件

import Quill from 'quill'; // 定义自定义字号 let fontSize = ['10px', '12px',
'14px', '16px', '18px', '20px', '24px', '36px']; // 注册自定义字号 let Size =
Quill.import('attributors/style/size'); Size.whitelist = fontSize;
Quill.register(Size, true);

2.配置 Quill 编辑器

修改ruoyi-ui/src/components/Editor/index.vue中的size添加自定义的字号

modules: {
    // 工具栏配置
    toolbar: [
        ["bold", "italic", "underline", "strike"],       // 加粗 斜体 下划线 删除线
        ["blockquote", "code-block"],                    // 引用  代码块
        [{ list: "ordered" }, { list: "bullet" }],       // 有序、无序列表
        [{ indent: "-1" }, { indent: "+1" }],            // 缩进
        // 自定义字号
        [{ 'size': ['10px', '12px', '14px', '16px', '18px', '20px', '24px', '36px'] }],
        [{ header: [1, 2, 3, 4, 5, 6, false] }],         // 标题
        [{ color: [] }, { background: [] }],             // 字体颜色、字体背景颜色
        [{ align: [] }],                                 // 对齐方式
        ["clean"],                                       // 清除文本格式
        ["link", "image", "video"]                       // 链接、图片、视频
    ],
},

3.样式调整

ruoyi-ui/src/components/Editor/index.vue样式文件中添加自定义字号的显示样式

注意: 上面 size 定义了几个字号这里就要定义几个样式,一一对应

/* 自定义字号样式 */
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="10px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10px"]::before {
  content: "10px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]::before {
  content: "12px";
}

/* 其他字号样式 */
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before {
  content: "14px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before {
  content: "16px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before {
  content: "18px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]::before {
  content: "20px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]::before {
  content: "24px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="36px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="36px"]::before {
  content: "36px";
}

4.效果展示

效果展示