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;我们经常需要创建文件夹来组织和…

AI 扩展开发者思维方式:以 SQL 查询优化为例

在现代软件开发中&#xff0c;AI 技术的兴起让开发者的思维方式发生了显著变化。尤其是在 SQL 查询优化、代码重构以及算法设计等领域&#xff0c;AI 提供的建议不仅扩展了开发者的思考路径&#xff0c;还帮助他们发现以往没有意识到的潜在解决方案。 1. 传统思维模式下的 SQL…

基于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…

计算机网络之会话层

一、会话层的核心功能 会话层作为OSI模型的第五层&#xff0c;不仅承担着建立、管理和终止通信会话的基本任务&#xff0c;还隐含着许多复杂且关键的功能&#xff0c;这些功能共同确保了网络通信的高效、有序和安全。 1. 会话建立与连接管理&#xff1a; 身份验证与授权&…

c/c++--struct对比

目录 C struct的使用&#xff1a; 1.1 默认访问控制&#xff08;Access Control&#xff09;&#xff1a; 1.2. 继承权限&#xff08;Inheritance Access&#xff09;&#xff1a; 1.3. 构造函数、析构函数、成员函数&#xff1a; 2. 与c语言的对比 C语言中的区别&#x…

Linux7 线程(一)

线程 1. 概念2. 库函数线程库创建线程线程ID线程终止线程等待线程分离 3. 线程的互斥相关概念临界资源互斥量 - mutex初始化互斥量静态分配动态分配 销毁互斥量互斥量加锁互斥量解锁死锁概念死锁的四个必要条件避免死锁避免死锁算法 4. 线程的同步条件变量初始化条件变量静态分…

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

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

MFC中Picture Control控件显示照片的几种方式

目前使用CImage和CBitmap两个类&#xff0c;还有是将CImage转CBitmap显示。 MFC界面拖拽一个button按钮和一个Picture Control控件。 1.CImage显示。这种方式显示图片会有颜色不对的情况 void Cpicture_test_controlDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处…

【拥抱AI】我们该如何集成大模型?

集成大模型到你的项目中涉及多个步骤&#xff0c;包括选择合适的模型、设置开发环境、调用模型的 API、处理响应数据等。本文将详细介绍如何集成大模型&#xff0c;并提供具体的示例代码和最佳实践。 1. 选择合适的模型 在集成大模型之前&#xff0c;首先需要选择一个合适的模…

github和Visual Studio

1、代码下载和提交 GitHubDesktopSetup-x64.exe 使用很简单&#xff0c;自己稍微琢磨下就明白了。 2、Visual Studio 2022 2.1 安装组件及学习内容 Visual Studio 中的 CMake 项目 | Microsoft Learn 2.2 打开 CMakeLists.txt 文件 定位并选择 CMakeLists.txt 文件 …

计算机网络常见面试题(一):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…

vue 中读取docx文件中的文本

1. 引用t mammoth&#xff08;先install&#xff09; import mammoth from "mammoth"; 2.上传文件后&#xff0c;处理文件 getReferenceContent(result) {let text result.value;// 将解析出部分文本const number text.indexOf(xxx&#xff1a;");if(number…

Mybatis查询ORACLE数据库相近字段名称的值在映射出来的对象中被覆盖

背景 oracle数据库 oracle数据库中有一个表&#xff0c;一个字段的名叫做HEA_MUR&#xff0c;一个字段的名叫HEAMUR&#xff0c;两个字段都是字符串类型。 HEA_MURHEAMUR1001有点问题 java对象 在java对象中分别对应的字段如下&#xff1a; TableFile("HEA_MUR"…

达梦数据库迁移j脚本

国产环境使用达梦数据库的越来越多&#xff0c;除了使用管理工具&#xff0c;还是可以使用脚本。 下面简单记录下&#xff0c;我在迁移中遇到的问题&#xff1a; 备份脚本 使用此脚本可以一次备份一个数据 backup_one_db.sh #!/bin/bashexport DB$1 export PASS<your_p…

Go语言 HTTP 服务模糊测试教程

写在前面&#xff1a; 此博客内容已经同步到我的博客网站&#xff0c;如需要获得更优的阅读体验请前往https://blog.mainjay.cloudns.ch/blog/go/fuzzing-test 作为开发人员&#xff0c;我们并不总能预见到程序或函数可能接收到的所有可能输入。 即使我们可以定义主要的边界情…

学习笔记——PLCT汪辰:开发RISC-V上的操作系统(持续更新)

目录 第0章 下载源码 运行环境 构建和使用说明 第1章 记录一个本人没听说过的架构 第2章~第4章 第0章 下载源码 git clone https://gitee.com/unicornx/riscv-operating-system-mooc.git 运行环境 推荐使用 Ubuntu 20.04&#xff0c;Ubuntu 20.04 是目前最新的 Ubun…

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…