vue3使用VueQuill插入自定义按钮

在 Vue 3 项目中使用 VueQuill 编辑器时,我们可以自定义内容来满足特定的需求。本文将介绍如何在 VueQuill 中插入自定义内容,比如插入特定的标签或样式元素。

Quill官方中文文档

1. 项目设置和依赖安装

如果你还没有创建 Vue 3 项目,可以使用以下命令来初始化项目:

npm init vue@latest

选择 Vue 3 的相关配置,然后进入项目目录并安装依赖项。

安装 VueQuill
npm install @vueup/vue-quill

此库是 Quill 编辑器的 Vue 3 兼容版本。


2. 基础配置 VueQuill

src/components 中创建一个 QuillEditor.vue 文件,并引入 vue3-quill,将 VueQuillEditor 作为编辑器组件使用。

template 内容
<template><div class="editor"><quill-editor ref="quillEditorRef" v-model:content="content" content-type="html" :options="options" :style="styles" @text-change="textChangeFn" /></div>
</template>
options 内容:
import '@vueup/vue-quill/dist/vue-quill.snow.css';import { Quill } from '@vueup/vue-quill';
const options = ref<any>({theme: 'snow',bounds: document.body,debug: 'warn',modules: {// 工具栏配置toolbar: {container: [['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线['blockquote', 'code-block'], // 引用  代码块[{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表[{ indent: '-1' }, { indent: '+1' }], // 缩进[{ size: ['small', false, 'large', 'huge'] }], // 字体大小[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色[{ align: [] }], // 对齐方式['clean'], // 清除文本格式['link', 'image', 'video'], // 链接、图片、视频['newFunction'] // 新添加的按钮],handlers: {newFunction: (value: boolean) => {// 添加处理方法const quill = quillEditorRef.value.getQuill();// 插入自定义按钮quill.insertEmbed(0, 'customSpan', 'test');}}}},placeholder: props.readOnly ? '' : '请输入内容',readOnly:false
});

以上代码创建了一个基础的 VueQuillEditor 组件,我们可以在其中输入和编辑文本。


3. 自定义内容的插入

接下来,我们会在 Quill 编辑器中插入自定义内容,比如一个带特定样式的 span 标签。为此,我们需要创建一个 Quill 的自定义 Blot 元素。

新建 CustomSpanBlot.ts 文件

src/quill-blots 文件夹下新建 CustomSpanBlot.ts 文件,用于定义我们自定义的 span 标签格式:

import { Quill } from '@vueup/vue-quill';const Inline = Quill.import("blots/inline");class CustomSpanBlot extends Inline {static blotName = "customSpan";static tagName = "span";static className = "custom-span";static create(value: string) {const node = super.create();node.setAttribute("data-custom", value);node.innerHTML = value;return node;}static formats(node: HTMLElement) {return node.getAttribute("data-custom");}format(name: string, value: string) {if (name === CustomSpanBlot.blotName && value) {this.domNode.setAttribute("data-custom", value);this.domNode.innerHTML = value;} else {super.format(name, value);}}
}
export { CustomSpanBlot };

4. 插入内容到编辑器

QuillEditor.vue 中引入自定义的 CustomSpanBlot,并编写插入自定义内容的方法:

<script lang="ts">
import { CustomSpanBlot } from './CustomSpanBlot';
// 进行注册
Quill.register(CustomSpanBlot);
// 初始化
onMounted(() => {// 新增自定义功能const newFunctionButton = document.querySelector('.ql-newFunction');newFunctionButton.setAttribute('style', 'width:80px; border:1px solid #ccc; border-radius:5px');newFunctionButton.textContent = '新功能';
});
</script>

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHamrony4.0去除锁屏是一种什么体验?触觉智能给你支支招

本文介绍在开源鸿蒙OpenHarmony 4.0系统下&#xff0c;去除锁屏开机后直接进入界面的方法&#xff0c;触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;Laval官方社区主荐&#xff0c;已适配全新OpenHarmony5.0 Rel…

【bat】自动生成指定层级文件夹

&#x1f305; 一日之计在于晨&#xff0c;启航新程 ⭐ 本期特辑&#xff1a;自动生成指定层级文件夹 &#x1f3c6; 系列专题&#xff1a;BAT脚本工坊 文章目录 前言批处理脚本介绍脚本执行过程总结 前言 在日常的计算机使用过程中&#xff0c;我们经常需要创建文件夹来组织和…

基于yolov5的番茄成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; yolov5 番茄成熟度检测系统&#xff0c;支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于 YOLOv5 的番茄成熟度检测系统是在 PyT…

vue-echarts 动态x轴字段,可选多个公司数据,根据选择的条件动态生成echarts柱形图(或者折线图)

需求&#xff1a;月份、 公司 、显示字段、柱形图&#xff08;折线图&#xff09;&#xff0c;都为动态可选的。 &#xff08;此例子&#xff1a;模拟数据都为随机数&#xff0c;所以每次截图值都会不同&#xff09; &#xff08;Vue3 echarts 5.4.2版本&#xff09; <te…

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日)

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日) <input type"week" id"week" class"my-css" value"ViewBag.DefaultWeek" /><script> function PageList() { var dateStrin…

计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议

文章目录 一、TCP/IP五层模型&#xff08;重要&#xff09;二、应用层常见的协议三、TCP与UDP3.1 TCP、UDP的区别&#xff08;重要&#xff09;3.2 运行于TCP、UDP上的协议3.3 TCP的三次握手、四次挥手3.3.1 TCP的三次握手3.3.2 TCP的四次挥手3.3.3 随机生成序列号的原因 四、T…

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中&#xff0c;Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加&#xff0c;单一Redis实例往往难以满足高可用性和扩展性的要求。为此&#xff0c;Redis提供了两种主要的集群模式&#xff1a;Redis Sentinel和Redis Clu…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙&#xff0c;增强视觉效果&#xff1b;也可以模糊化间隙&#xff0c;造成图像的噪点被抹平。 2、卷积核 在深度学习中&#xff0c;卷积核越大&#xff0c;看到的信息越多&#xff0…

JAVA后端生成图片滑块验证码 springboot+js完整案例

前言 现在大部分网部都是图片滑块验证码&#xff0c;这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证&#xff0c;但是我们要保证发送短息接口的全安&#xff0c;具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…

【因果分析方法】MATLAB计算Liang-Kleeman信息流

【因果分析方法】MATLAB计算Liang-Kleeman信息流 1 Liang-Kleeman信息流2 MATLAB代码2.1 函数代码2.2 案例参考Liang-Kleeman 信息流(Liang-Kleeman Information Flow)是由 Liang 和 Kleeman 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5 1. 安装 Oracle Database 23ai2. 连接 Oracle Database 23c3. 重启启动后&#xff0c;手动启动数据库4. 重启启动后&#xff0c;手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开…

Ubuntu23.10下解决C语言调用mysql.h问题

Ubuntu23.10下解决C语言调用mysql.h问题 导语环境准备问题和解决方案总结参考文献 导语 在学习C语言和MySQL的调用的时候遇到包和版本的问题&#xff0c;由于使用的书很老&#xff08;10年的&#xff09;&#xff0c;因此很多MySQL的包已经过时&#xff0c;在查找很多资料和询…

【JAVA毕业设计】基于Vue和SpringBoot的微服务在线教育系统

博主说明&#xff1a;本文项目编号 T 060 &#xff0c;文末自助获取源码 \color{red}{T060&#xff0c;文末自助获取源码} T060&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Spring Boot编程训练系统:技术实现与案例分析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

在 ASP.NET Core 6.0 中使用 Swagger/OpenAPI 丰富 Web API 文档

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/89961435 介绍 在选择或尝试与 API 集成之前&#xff0c;大多数开发人员都会查看其 API 文档。保持 API 文档更新以反映软件更改是一项挑战&#xff0c;需要时间和精力。对于 Web API&#xff0c;我们…

tensorflow案例5--基于改进VGG16模型的马铃薯识别,准确率提升0.6%,计算量降低78.07%

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 本次采用VGG16模型进行预测&#xff0c;准确率达到了98.875&#xff0c;但是修改VGG16网络结构&#xff0c; 准确率达到了0.9969&#xff0c;并且计算量…

Spring Boot编程训练系统:构建可扩展的应用

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足&#xff0c;创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

Java-sec-code-SSRF攻击

Java-sec-code&#xff08;SSRF攻击&#xff09; java-sec-code平台中也内置了SSRF攻击案例&#xff0c;我们来看看SSRF漏洞代码是什么样的。 案例1 直接从url参数接收数据&#xff0c;但是未进行任何检查和校验。 通过调用httpUtil.URLConnection方法&#xff0c;建立URL对…

docker基础:搭建centos7(详见B站泷羽sec)

docker的简单学习&#xff1a; sudo apt-get update //这个命令让系统检查有没有新软件 sudo apt-get install docker.io //安装 Docker sudo docker version //查看是否安装成功&#xff0c;显示docker的版本信息 启用Docker 启…

RNN(循环神经网络)详解

1️⃣ RNN介绍 前馈神经网络&#xff08;CNN&#xff0c;全连接网络&#xff09;的流程是前向传播、反向传播和参数更新&#xff0c;存在以下不足&#xff1a; 无法处理时序数据&#xff1a;时序数据长度一般不固定&#xff0c;而前馈神经网络要求输入和输出的维度是固定的&a…