前言
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";
}