首页 > 其他分享 >vue + quill2.0+ 工具栏自定义行高

vue + quill2.0+ 工具栏自定义行高

时间:2024-08-05 10:25:44浏览次数:8  
标签:picker vue 自定义 snow value lineheight ql 行高 before

在网上查了好多,基本都是基于1.0+版本的,拿过来都用不了,官方又没有文档,只能参考各位前辈的经验+解析源码查找问题。 目前已经解决,下面是实现过程。

实现代码 

 先看效果图

我用的是原生quill库,正常引入quill,注册行高插件

import Quill from 'quill'
import 'quill/dist/quill.snow.css'
const Parchment = Quill.import('parchment')
// 这里是重点,2.0+需要用Parchment.ClassAttributor
// 按照其它基于1.0+的文档直接用Attributor.class会报错
class lineHeightAttributor extends Parchment.ClassAttributor {}

const lineHeightStyle = new lineHeightAttributor(
  'lineheight',
  'ql-lineheight',
  {
    scope: Parchment.Scope.INLINE,
    whitelist: ['', '1', '1-5', '1-75', '2', '3', '4', '5']
  }
)
Quill.register({ 'formats/lineHeight': lineHeightStyle }, true)

  注册完后toolbarOptions里引入,css里添加相应样式

const toolbarOptions = [
        // ... 你自己的插件配置
        [{ lineheight: ['', '1', '1-5', '1-75', '2', '3', '4', '5'] }], // 行高
      ]
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='1']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='1']::before {
  content: '1';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='1-5']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='1-5']::before {
  content: '1.5';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='1-75']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='1-75']::before {
  content: '1.75';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='2']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='2']::before {
  content: '2';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='3']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='3']::before {
  content: '3';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='4']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='4']::before {
  content: '4';
}
.ql-snow .ql-picker.ql-lineheight .ql-picker-label[data-value='5']::before,
.ql-snow .ql-picker.ql-lineheight .ql-picker-item[data-value='5']::before {
  content: '5';
}
.ql-snow .ql-picker.ql-lineheight {
  width: 70px;
}
.ql-snow .ql-editor .ql-lineheight-1 {
  line-height: 1;
}
.ql-snow .ql-editor .ql-lineheight-1-5 {
  line-height: 1.5;
}
.ql-snow .ql-editor .ql-lineheight-1-75 {
  line-height: 1.75;
}
.ql-snow .ql-editor .ql-lineheight-2 {
  line-height: 2;
}
.ql-snow .ql-editor .ql-lineheight-3 {
  line-height: 3;
}
.ql-snow .ql-editor .ql-lineheight-4 {
  line-height: 4;
}
.ql-snow .ql-editor .ql-lineheight-5 {
  line-height: 5;
}

排坑点

按照网上其它资料上使用 Attributor 在2.0+的版本不好使,加上.class报错,不加行高样式会加不进去

问题解析 

 Attributor是直接插入行内的(不会插入到class/style内,这个方法是用来插入属性的),打印源码后发现有ClassAttributor和StyleAttributor,我这边是用class控制行高样式选择用ClassAttributor,有其它需求场景也可以用StyleAttributor。

标签:picker,vue,自定义,snow,value,lineheight,ql,行高,before
From: https://blog.csdn.net/luke1970/article/details/140919011

相关文章

  • Django5+Vue3:OA系统前后端分离项目实战-异步优化Ajax请求(12)
    Django5+Vue3系列文章前言本节开始,全文仅对会员开放。若点赞和收藏数量超过100,全文将免费开放。此项目采用Django框架的5.0.7版本进行开发。Django5.0支持的Python版本为3.10、3.11和3.12。OA系统系列文章将持续更新,直至项目的Docker部署阶段。专栏链接:......
  • Django5+Vue3:OA系统前后端分离项目实战-Pinia用户和token信息管理(11)
    Django5+Vue3系列文章前言本节开始,全文仅对会员开放。若点赞和收藏数量超过100,全文将免费开放。此项目采用Django框架的5.0.7版本进行开发。Django5.0支持的Python版本为3.10、3.11和3.12。OA系统系列文章将持续更新,直至项目的Docker部署阶段。专栏链接:......
  • 前端开发中最炙手可热的当红辣子鸡 Vue 3 简介及入门实例
    前言之前已经学习过来HTML、CSS以及JavaScript的相关知识,也算是基本了解了关于这前端三件套的一些基本用法。今天就来了解下,当前前端开发中最炙手可热的当红辣子鸡-Vue。本文主要介绍Vue的一些入门知识和最经典的Vue入门HelloWorld程序,如果你想了解的是更高......
  • vue项目如何在框架最外层包裹一层class 包裹弹框组件
    在Vue项目中,如果你想要在框架的最外层包裹一层类,并且这个类能够包裹所有的弹框组件(如ElementUI的<el-dialog>),你可以通过几种方式实现:1.使用Vue的根实例在Vue应用的入口文件(通常是main.js或app.js)中,你可以在创建Vue根实例时使用:class绑定:importVuefr......
  • Vue Vine:带给你全新的 Vue 书写体验!
    你好,我是Kagol,个人公众号:前端开源星球。上个月和TinyVue的小伙伴们一起参加了VueConf24大会,有幸认识沈青川大佬,并了解了他的VueVine项目,VueVine让你可以在一个文件中通过函数方式定义多个Vue组件,同时可以使用所有Vue的模板特性。听起来是不是很酷!之前我写过SFC......
  • Vuex的四个轻骑兵:mapState、mapGetter、mapMutation、mapAction(转载)
    vuex进阶一、state1.1引入vuex以后,我们需要在state中定义变量,类似于vue中的data,通过state来存放状态importVuefrom'vue'importVuexfrom'vuex'Vue.use(Vuex)exportdefaultnewVuex.Store({state:{//存放状态nickname:'Simba',age:20,gender:'男&......
  • 打造Perl中的词法分析器:深入自定义文本处理
    打造Perl中的词法分析器:深入自定义文本处理Perl作为一种强大的文本处理语言,提供了丰富的工具来实现词法分析器(Lexer)。词法分析是编译原理中将源代码分解成一系列词素(Tokens)的过程,是构建编译器或解释器的第一步。本文将详细探讨如何在Perl中实现一个自定义的词法分析器,包括......
  • 守护数据堡垒:SQL Server数据库自定义备份审计实现指南
    标题:守护数据堡垒:SQLServer数据库自定义备份审计实现指南引言数据库备份是确保数据安全和业务连续性的关键措施。SQLServer提供了多种备份策略,但有时候,为了满足特定的合规性要求或业务需求,我们需要实现更细粒度的自定义数据备份审计。本文将详细介绍如何在SQLServer中......
  • 自定义导航栏兼容ios和android
    <template>  <view class="content">    <!--距离顶部的距离刚好留出状态栏即可即statusBarHeight-->    <view class="topNav" :style="{height:navHeight+'px',paddingTop:statusBarHeight+'px'}">      <......
  • 数据安全堡垒:构建SQL Server自定义数据安全策略
    数据安全堡垒:构建SQLServer自定义数据安全策略在数字化时代,数据安全是企业的生命线。SQLServer作为企业级数据库解决方案,提供了丰富的安全特性来保护数据。然而,面对复杂的业务需求和不断演变的安全威胁,自定义数据安全策略显得尤为重要。本文将详细探讨如何在SQLServer中......