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正确获取元素样式详解
Aug 07 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
Oct 01 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
vue-cli + sass 的正确打开方式图文详解
Oct 27 Javascript
基于Swiper实现移动端页面图片轮播效果
Dec 28 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 Javascript
关于vue-router-link选择样式设置
Apr 30 Vue.js
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
世界上第一台立体声收音机
2021/03/01 无线电
PHP 函数学习简单小结
2010/07/08 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
javascript 随机展示头像实现代码
2011/12/06 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
Django框架验证码用法实例分析
2019/05/10 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
公司担保书范文
2014/05/21 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
会计岗位工作总结
2015/08/12 职场文书
导游词之襄阳古城
2019/09/27 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS