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 相关文章推荐
js 与或运算符 || &amp;&amp; 妙用
Dec 09 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
iframe调用父页面函数示例详解
Jul 17 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
Aug 26 Javascript
js获取浏览器的各种属性
Apr 27 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
详解vue 数组和对象渲染问题
Sep 21 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
名片管理系统python版
2018/01/11 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
法定代表人免职证明
2015/06/24 职场文书
三八妇女节主持词
2015/07/04 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
python源码剖析之PyObject详解
2021/05/18 Python
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
详解NodeJS模块化
2021/06/15 NodeJs
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技