简介
版本:"vue-quill-editor": "^3.0.6"
vue-quill-editor 使用文档:前言 · Quill官方中文文档 · 看云 (kancloud.cn)
安装
npm install vue-quill-editor@3.0.6 -s
配置富文本模块
<template> <!-- class="edit_container" --> <div style="line-height: normal"> <quill-editor class="ql-editor" v-model="content" ref="quillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)" > </quill-editor> </div> </template> <script> import { quillEditor } from \'vue-quill-editor\' // 调用编辑器 import \'quill/dist/quill.core.css\' import \'quill/dist/quill.snow.css\' import \'quill/dist/quill.bubble.css\' export default { name: \'Editor\', props: { value: String }, components: { quillEditor }, data() { return { editorOption: { placeholder: \'请在这里输入\', modules: { toolbar: [ [\'bold\', \'italic\', \'underline\', \'strike\'], // 加粗,斜体,下划线,删除线 // [\'blockquote\', \'code-block\'], // 引用,代码块 [{ header: 1 }, { header: 2 }], // 标题,键值对的形式;1、2表示字体大小 [{ list: \'ordered\' }, { list: \'bullet\' }], // 列表 [{ script: \'sub\' }, { script: \'super\' }], // 上下标 [{ indent: \'-1\' }, { indent: \'+1\' }], // 缩进 [{ direction: \'rtl\' }], // 文本方向 [{ size: [\'small\', \'large\', \'huge\'] }], // 字体大小 [{ header: [1, 2, 3, 4, 5, 6, false] }], // 几级标题 [{ color: [] }, { background: [] }], // 字体颜色,字体背景颜色 [{ font: [] }], // 字体 [{ align: [] }], // 对齐方式 [\'clean\'], // 清除字体样式 [\'link\'] //, \'image\', \'video\' ] } }, content: \'\', theme: \'snow\' } }, methods: { onEditorReady(editor) { // 准备编辑器 }, onEditorBlur() {}, // 失去焦点事件 onEditorFocus() {}, // 获得焦点事件 onEditorChange({ quill, html, text }) { this.$emit(\'contentData\', html) } // 内容改变事件 }, computed: { editor() { return this.$refs.quillEditor.quill } }, mounted() {}, watch: { value(val) { this.content = val } } } </script>
使用说明
为模块注入value(富文本内容(html))、contentData(修改后触发的方法,这里修改父级变量)
模块toolbar属性可以调整工具栏显示工具详情请查文档
class="ql-editor"属性如果没有编辑器会过滤制表符和联系空格
修改css汉化显示
- 修改后的css:https://wwa.lanzous.com/iUxY3ox304j 下载后改名为quill.snow.css,替换node_modules\quill\dist\quill.snow.css
- 使用模块设置样式
<style> p { margin: 10px; } .ql-snow .ql-tooltip::before { content: "链接地址"; } .ql-snow .ql-tooltip a.ql-remove::before { content: "移除"; } .ql-snow .ql-tooltip a.ql-action::after { content: "编辑"; } .ql-snow .ql-tooltip.ql-editing a.ql-action::after { content: "保存"; } .ql-snow .ql-picker.ql-size .ql-picker-label::before, .ql-snow .ql-picker.ql-size .ql-picker-item::before { content: "14px"; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { content: "10px"; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { content: "18px"; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { content: "32px"; } .ql-snow .ql-picker.ql-header .ql-picker-label::before, .ql-snow .ql-picker.ql-header .ql-picker-item::before { content: "文本"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { content: "标题1"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { content: "标题2"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { content: "标题3"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { content: "标题4"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { content: "标题5"; } .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { content: "标题6"; } .ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-item::before { content: "标准字体"; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { content: "衬线字体"; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { content: "等宽字体"; } </style>
配置界面使用示例
template部分
<editor :value="announcementFormData.content" @contentData="contentChange($event)" ></editor>
data
announcementFormData: { content: \'\', },
methods
contentChange(event) { this.announcementFormData.content = event },
展示富文本html
相关html、css:https://wwa.lanzous.com/iqcexozpx3a
使用方式打开html传递url参数键为quillDom值为配置界面生成的html字符串(字符串需要使用encodeURIComponent方法处理)
效果图