本来是想用tinymac富文本编辑器的,不过参考网上的教程弄了很久都没有解决图片预览的问题。所以就改用了Vue-Quill-Editor,发现这个使用起来还是很方便的。下面上教程:
1、安装Vue-Quill-Editor
npm install vue-quill-editor -s
2、封装Vue-Quill-Editor组件
自行创建一个quEditor.vue文件,写入下面代码:
<template>
<div>
<quill-editor v-model="content" ref="myQuillEditor" class="editor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)">
</quill-editor>
<div>
{
{
content}}
</div>
</div>
</template>
<script>
// require styles 引入样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import {
quillEditor } from 'vue-quill-editor'
// 工具栏配置
const toolbarOptions = [
['bold','italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线 -----['bold', 'italic', 'underline', 'strike']
['blockquote', 'code-block'], // 引用 代码块-----['blockquote', 'code-block']
[{
header: 1 }, {
header: 2 }], // 1、2 级标题-----[{ header: 1 }, { header: 2 }]
[{
list: 'ordered' }, {
list: 'bullet' }], // 有序、无序列表-----[{ list: 'ordered' }, { list: 'bullet' }]
[{
script: 'sub' }, {
script: 'super' }], // 上标/下标-----[{ script: 'sub' }, { script: 'super' }]
[{
indent: '-1' }, {
indent: '+1' }], // 缩进-----[{ indent: '-1' }, { indent: '+1' }]
[{
'direction': 'rtl'}], // 文本方向-----[{'direction': 'rtl'}]
[{
size: ['small', false, 'large', 'huge'] }], // 字体大小-----[{ size: ['small', false, 'large', 'huge'] }]
[{
header: [1, 2, 3, 4, 5, 6, false] }], // 标题-----[{ header: [1, 2, 3, 4, 5, 6, false] }]
[{
color: [] }, {
background: [] }], // 字体颜色、字体背景颜色-----[{ color: [] }, { background: [] }]
[{
font: [] }], // 字体种类-----[{ font: [] }]
[{
align: [] }], // 对齐方式-----[{ align: [] }]
['clean'], // 清除文本格式-----['clean']
['image'] // 链接、图片、视频-----['link', 'image', 'video']
]
export default {
components: {
quillEditor },
data () {
return {
content: null,
editorOption: {
placeholder: '请输入文本...',
theme: 'snow',
modules: {
toolbar: {
container: toolbarOptions
}
}
}
}
},
methods: {
onEditorBlur () {
// 失去焦点事件
},
onEditorFocus () {
// 获得焦点事件
},
onEditorChange () {
// 内容改变事件
}
}
}
</script>
<style>
.editor {
line-height: normal !important;
height: 400px;
/* border: 1px solid #DCDFE6; */
}
.ql-snow .ql-tooltip[data-mode=link]::before {
content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: '保存';
padding-right: 0px;
}
.ql-snow .ql-tooltip[data-mode=video]::before {
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