Vue中Quill富文本编辑器的使用教程


Posted in Javascript onSeptember 21, 2018

在项目中需要引入Quill文本编辑器,并且根据需求,需要自定义字体选项、图片拖拽上传和改变大小,所以根据Quill官网系统学习了一下,以下是我学习和研究的结果。

一、主题

Quill的富文本编辑器分为snow和bubble两种。

snow是有工具栏的,如下:

Vue中Quill富文本编辑器的使用教程

bubble是只有文本域的,如下:

Vue中Quill富文本编辑器的使用教程

那么具体如何选择

在vue项目中,具体引入Quill的文件中,需要使用哪种主题就写哪个。默认是snow主题的。

<script>
  export default {
    data:function(){
      return{
        editorOption:{
          //theme:'bubble'
          theme:'snow'
        }
      }
    }
  }
</script>

二、自定义工具栏toolbar

1、具体配置如下,需要哪个写哪个。

<script>
  export default {
    data:function(){
      return{
        editorOption:{
          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', false, 'large', 'huge'] }], // 字体大小
              [{ 'header': [1, 2, 3, 4, 5, 6, false] }],     //几级标题
 
 
              [{ 'color': [] }, { 'background': [] }],     // 字体颜色,字体背景颜色
              [{ 'font': [] }],     //字体
              [{ 'align': [] }],    //对齐方式
 
 
              ['clean'],    //清除字体样式
              ['image','video']    //上传图片、上传视频
 
            ]
          },
          theme:'snow'
        }
      }
    }
  }
</script>

其中color、background、font、align都是有默认值的,写一个空数据即可。如果想要自定义,请往下看。

2、自定义字体列表,加入自己需要的字体

(1)引入一个单独自定义的font.css文件(如下)在app.vue文件中,因为要在初始化的时候就引入才能覆盖掉默认的!!很重要

<template>
 <div id="app">
  <router-view/>
 </div>
</template>
 
<script>
export default {
 name: 'App'
}
</script>
 
<style>
  @import './style/font';
</style>

(2)font.css

把需要自定义放在字体列表的字体放在这个css中,选择器如下。data-value后的值是要拼在.ql-font-后面的,需要保持一致。

[data-value=a]    ql-font-a

content指的是字体列表中的选项

.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimSun]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimSun]::before {
  content: "宋体";
  font-family: "SimSun";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]::before {
 content: "黑体";
 font-family: "SimHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]::before {
 content: "微软雅黑";
 font-family: "Microsoft YaHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]::before {
 content: "楷体";
 font-family: "KaiTi";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]::before {
 content: "仿宋";
 font-family: "FangSong";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]::before {
 content: "Arial";
 font-family: "Arial";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]::before {
 content: "Times New Roman";
 font-family: "Times New Roman";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]::before {
 content: "sans-serif";
 font-family: "sans-serif";
}
 
.ql-font-SimSun {
  font-family: "SimSun";
}
.ql-font-SimHei {
  font-family: "SimHei";
}
.ql-font-Microsoft-YaHei {
  font-family: "Microsoft YaHei";
}
.ql-font-KaiTi {
  font-family: "KaiTi";
}
.ql-font-FangSong {
  font-family: "FangSong";
}
.ql-font-Arial {
  font-family: "Arial";
}
.ql-font-Times-New-Roman {
  font-family: "Times New Roman";
}
.ql-font-sans-serif {
  font-family: "sans-serif";
}

(3).vue文件中

<script>
  import { quillEditor } from 'vue-quill-editor'
  import * as Quill from 'quill' //引入编辑器
  
  //quill编辑器的字体
  var fonts = ['SimSun', 'SimHei','Microsoft-YaHei','KaiTi','FangSong','Arial','Times-New-Roman','sans-serif']; 
  var Font = Quill.import('formats/font'); 
  Font.whitelist = fonts; //将字体加入到白名单 
  Quill.register(Font, true);
  
  export default {
    data:function(){
      return{
        content:'',
        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': ['small', false, 'large', 'huge'] }], 
              [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
 
              [{ 'color': [] }, { 'background': [] }], 
              [{ 'font': fonts }],    //把上面定义的字体数组放进来
 
              [{ 'align': [] }],
 
              ['clean'],
              ['image','video']
 
              
            ]
          },
          theme:'snow'
        }
      }
    }
  }
</script>

效果图如下:

Vue中Quill富文本编辑器的使用教程

Vue中Quill富文本编辑器的使用教程

三、图片拖拽上传ImgeDrop

<script>
  import { quillEditor } from 'vue-quill-editor'
  import * as Quill from 'quill' //引入编辑器
  //quill图片可拖拽上传
  import { ImageDrop } from 'quill-image-drop-module';
  
  Quill.register('modules/imageDrop', ImageDrop);
 
  export default {
    data:function(){
      return{
        editorOption:{
          modules:{
            imageDrop:true, 
          },
          theme:'snow'
        }
      }
    }   
  }
</script>

四、图片调整大小ImageResize

<script>
  import { quillEditor } from 'vue-quill-editor'
  import * as Quill from 'quill' //引入编辑器
  //quill图片可拖拽改变大小
  import ImageResize from 'quill-image-resize-module'
  
  Quill.register('modules/imageResize', ImageResize)
 
  export default {
    data:function(){
      return{
        editorOption:{
          modules:{
            imageResize: {} 
          },
          theme:'snow'
        }
      }
    }   
  }
</script>

效果图如下:可以调整图片的对齐方式,并显示图片的大小

Vue中Quill富文本编辑器的使用教程

Quill使用基本如上。安装可参考:vue如何安装使用Quill富文本编辑器

其他应用可参考Quill官网https://quilljs.com/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype使用指南之hash.js
Jan 10 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
jQuery Mobile动态刷新页面样式的实现方法
May 28 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
jQuery自定义多选下拉框效果
Jun 19 jQuery
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
详解vue项目打包步骤
Mar 29 Javascript
angularjs模态框的使用代码实例
Dec 20 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 Javascript
vue单页应用在页面刷新时保留状态数据的方法
Sep 21 #Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 #Javascript
vue中设置、获取、删除cookie的方法
Sep 21 #Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 #Javascript
vue富文本编辑器组件vue-quill-edit使用教程
Sep 21 #Javascript
React实现全局组件的Toast轻提示效果
Sep 21 #Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 #Javascript
You might like
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
python简单商城购物车实例代码
2018/03/15 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python tkinter和exe打包的方法
2020/02/05 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Shell编程面试题
2012/05/30 面试题
升旗仪式主持词
2014/03/19 职场文书
旅游安全协议书
2014/04/21 职场文书
社团活动总结模板
2014/06/30 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
css弧边选项卡的项目实践
2023/05/07 HTML / CSS