vue-quill-editor的使用及个性化定制操作


Posted in Javascript onAugust 04, 2020

最近在用vue + element ui写一个小应用要用到富文本编辑器,以前做项目都一直都用ueditor,但是看了一下它与vue的兼容性并不好,又对比了几个后,选择了vue-quill-editor。

vue-quill-editor基于Quill、适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用,正是我想要的☻。这里只介绍基本的安装和部分简单的定制。我翻了很多别人写的东西对我的项目都无效,最后自己折腾出来在这记录备忘。

一、安装

1.安装模块

npm install vue-quill-editor ?save

2.vue组件

<template>
  <div class="edit_container">
    <quill-editor
      v-model="content"
      ref="myQuillEditor"
      :options="editorOption"
      @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
      @change="onEditorChange($event)">
    </quill-editor>
  </div>
</template>
 
<script>
  import 'quill/dist/quill.core.css'
  import 'quill/dist/quill.snow.css'
  import 'quill/dist/quill.bubble.css'
  import { quillEditor } from 'vue-quill-editor';
 
  export default {
    name: "addJournal",
    components: {
      quillEditor
    },
    data() {
      return {
        content: ``,
        editorOption: {},
      };
    },
    methods: {
      onEditorReady(editor) {}, // 准备编辑器
      onEditorBlur(){}, // 失去焦点事件
      onEditorFocus(){}, // 获得焦点事件
      onEditorChange(){}, // 内容改变事件
    },
    computed: {
      editor() {
        return this.$refs.myQuillEditor.quill;
      },
    },
  }
</script>

至此,vue-quill-editor就安装完成了,效果图如下:

vue-quill-editor的使用及个性化定制操作

二、定(zhe)制(teng)

这里只简单介绍两类操作: 样式修改和自定义工具栏。

1.样式修改

a) 修改vue-quill-editor编辑框高度

这个其实很简单了,只要在vue组件的<style>标签里增加一个样式即可

.quill-editor{
  height: 400px;
}

在调整了编辑框的高度后,如果编辑内容的高度超过了编辑框的高度,编辑框会出现滚动条(不手动调整此高度话会一直往下扩展)。

b) 修改工具栏对齐方式

这里需要注意,使用webstorm创建的vue组件中,styte标签的默认会加上scoped属性, 也就是说,只对当前模块的元素有效,而工具栏是从外部引入的,因此下面的样式要写在无scoped属性的style标签里才会有效。

.ql-toolbar.ql-snow{
  text-align: left;
}

修改完后的样式如下

vue-quill-editor的使用及个性化定制操作

2.定制工具栏按钮

以字体大小调节为例,这是默认的调节按钮,我们想改成多个像素大小的下拉选框。

vue-quill-editor的使用及个性化定制操作

step1: 在vue组件中引入quill模块,修改whitelist, 并注册样式

import * as Quill from 'quill';
let fontSizeStyle = Quill.import('attributors/style/size');
fontSizeStyle.whitelist = ['10px', '12px', '14px', '16px', '20px', '24px', '36px', false];//false表示默认值
Quill.register(fontSizeStyle, true);

step2: 修改quill-editor的option属性值

editorOption: {
  modules: {
    toolbar: [["bold", "italic", "underline", "strike"], ["blockquote", "code-block"], [{header: 1}, {header: 2}], [{list: "ordered"}, {list: "bullet"}], [{script: "sub"}, {script: "super"}], [{indent: "-1"}, {indent: "+1"}], [{direction: "rtl"}],
      [{size: fontSizeStyle.whitelist}], [{header: [1, 2, 3, 4, 5, 6, !1]}], [{color: []}, {background: []}], [{font: []}], [{align: []}], ["clean"], ["link", "image", "video"]],
  },
}

这个modules里面的值是参照vue-quill-editor模块里的vue-quill-editor.js里的modules值设置的,只需要将你要修改的工具栏按钮的值替换成step1里设置的whitelist值即可。

step3: 增加定制选项的css样式

.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='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';
}

此样式的选择器可以从quill.snow.css.js中找到,我们要做的只是修改它的data-value值。

修改后的工具栏:

vue-quill-editor的使用及个性化定制操作

以上这篇vue-quill-editor的使用及个性化定制操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
node.js实现BigPipe详解
Dec 05 Javascript
jQuery中ajax的load()与post()方法实例详解
Jan 05 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 jQuery
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
jquery图片预览插件实现方法详解
Jul 18 jQuery
JS几个常用的函数和对象定义与用法示例
Jan 15 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 #Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 #Javascript
VUE使用axios调用后台API接口的方法
Aug 03 #Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 #Javascript
js数组中去除重复值的几种方法
Aug 03 #Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 #Javascript
javascript运行机制之执行顺序理解
Aug 03 #Javascript
You might like
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python常用知识点汇总
2016/05/08 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
python 下划线的不同用法
2020/10/24 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
比利时香水网上商店:NOTINO
2018/03/28 全球购物
什么是类的返射机制
2016/02/06 面试题
优秀管理者事迹材料
2014/05/22 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android