vue实现高亮文字效果——advanced-mark.js

组件介绍-advanced-mark.js:

advanced-mark.js 是一个用于 Vue 的高亮文字组件,它可以帮助你在文本中高亮显示指定的关键词或短语。
组件地址:https://angezid.github.io/advanced-mark.js/doc-v2/getting-started.html

  • 主要功能:
  • 关键词高亮:在文本中高亮显示一个或多个关键词
  • 多关键词支持:可以同时高亮多个不同的关键词
  • 自定义样式:允许自定义高亮部分的样式
  • 大小写敏感选项:可选择是否区分大小写
  • 正则表达式支持:支持使用正则表达式进行复杂匹配
  • 可以设置css名称进行限制高亮区域

下载安装:

npm install advanced-mark.js

yarn add advanced-mark.js

要初始化新实例,必须使用:

var instance = new Mark(context);
instance.mark('lorem');

使用方法介绍:

  • element 【string】:获取document,通过document.getElementById()或document.querySelector()获取的单个元素,或document.querySelectorAll()获取节点列表,包含多个单个元素的数组(请注意,在内部,数组按元素在文档中的位置排序)
    字符串选择器(内部调用document.querySelectorAll())
    :const allNodes =document.querySelectorAll(selector));
  • className 【string】:标记元素的自定义类。
  • separateWordSearch【boolean or string】:当它设置为true时,如果搜索字符串包含多个单词,它会将字符串按空格拆分为单独的单词,并突出显示单个单词而不是整个字符串。
    它也适用于搜索数组中的每个字符串。
    当它设置为“separateWordSearch ”时,它会保留双引号周围的术语,防止它们分裂成单独的单词。
    当设置为‘false’的时候,指定将术语不分解为单独的单词。
  • diacritics【boolean】:是否匹配变音字符。
  • caseSensitive【boolean】:是否搜索区别大小写。
  • accuracy【string or object】:两种模式值,
    -字符串模式:
    partially:部分匹配,例如搜索"a"时,会高亮所有包含该字母的单词(如"and"、“back"中 的"a”)。
    exactly:强制精确匹配,默认通过空格或文本节点的起止位置作为边界(需配合acrossElements选项使用)。
    startsWith:前缀匹配,例如搜索"pre"会完整高亮以该前缀开头的单词(如"prefix"、“predict”)。
    complementary:互补匹配,例如搜索"a"时,仅高亮完整包含该字符且未被边界分隔的单词(如"and"、“visa”)。
    -对象模式:
    通过 value 指定匹配模式(必须为上述四个字符串值之一)
    通过 limiters 自定义边界字符,例如:
    { value: "exactly", limiters: ",.;:?!'\"()" }
    
  • wildcards【string】:匹配空格,enabled 模式忽略空格;withSpaces 模式允许空格作为有效字符;disabled 完全禁用通配符功能;
  • ignoreJoiners【boolean】:是否查找包含软连字符、零宽度空格、零宽度非连接符和零宽度连接符的匹配项。
  • synonyms【object】:该对象用于建立词汇间的双向/单向关联关系,支持两种配置形式:
  • each:每个标记元素的回调。
    例:
    each: function (markElement, eachInfo) {
    // markElement:当前被高亮的 DOM 元素。
    // eachInfo:包含匹配信息的对象,其中 eachInfo.match[0] 是匹配到的关键词
    const keyword = eachInfo.match[0];
    markElement.style.backgroundColor =
    keywordColors[keyword] || '#FBD1D5';}
    

注: 如果想要多个部分分散使用高亮功能,那么可以使用数组形式进行存储,并遍历循环。

const  classNames=['.css1','.css2','.css3',...]const allNodes = classNames.flatMap((selector) =>document.querySelectorAll(selector));allNodes.forEach((node) => {// 在指定的 DOM 元素中查找并高亮指定的关键词const instance = new Mark(node); //new一个新对象instance.unmark(); // 清除之前的标记instance.mark(highlightKeywords[注:接受高亮词的数组], {separateWordSearch: false, // false指定将术语不分解为单独的单词each: function (markElement, eachInfo) {// markElement:当前被高亮的 DOM 元素。// eachInfo:包含匹配信息的对象,其中 eachInfo.match[0] 是匹配到的关键词const keyword = eachInfo.match[0];markElement.style.backgroundColor =keywordColors[keyword] || '#FBD1D5';// 设置颜色和默认颜色}});});

组件产出效果:


在这里插入图片描述

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

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

相关文章

DC30V/2.5A同步降压芯片SL1581 输入24V降压5V 12V2A电流

在工业自动化、汽车电子等领域,24V 电源系统向 5V/12V 双轨供电的需求日益增长。针对这一痛点,森利威尔电子重磅推出 DC30V/2.5A 同步降压芯片 SL1581,凭借卓越的性能和创新设计,为工程师提供高可靠性、高性价比的电源解决方案。 …

React 第四十四节Router中 usefetcher的使用详解及注意事项

前言 useFetcher 是 React Router 中一个强大的钩子,用于在不触发页面导航的情况下执行数据加载(GET)或提交(POST)。 一、useFetcher 应用场景: 1、后台数据预加载(如鼠标悬停时加载数据&…

Jmeter(三) - 测试计划(Test Plan)的元件

1.简介 上一篇已经教你如何通过JMeter来创建一个测试计划(Test Plan),那么这一篇我们就将JMeter启动起来,创建一个测试计划(Test plan),给大家介绍一下测试计划(Test Plan&#xff…

应届本科生简历制作指南

一、找一个专业的简历模板 首先,你需要访问 Overleaf 的官方网站,也就是Overleaf, Online LaTeX Editor,进入页面后,点击注册按钮,按照提示填写相关信息来创建一个属于自己的账号,通常需要填写用户名、邮箱…

[Spring Boot]整合Java Mail实现Outlook发送邮件

日常开发过程中,我们经常需要使用到邮件发送任务,比方说验证码的发送、日常信息的通知等。日常比较常用的邮件发送方包括:163、QQ等,本文主要讲解Outlook SMTP的开启方式、OutLook STARTTTL的配置、如何通过JavaMail来实现电子邮件的发送等。 Outlook作为微软提供的企业电子…

【YOLOs-CPP-图像分类部署】03-解决报错

完整项目链接 点击here下载! 上一篇问题 经过上一篇博客,我们得到了一个粗略版(会报错)的项目。如何解决异常报错呢? 我把问题在github上对作者进行了提问,但是2天后,依然没有回复。 怎么办呢?只能自己调试代码了。 修改代码 经过大量调试,修改了YOLO11CLASS.h…

Dockers Compose常用指令介绍

Dockers Compose常用指令 1、常用指令介绍 1.1、version 指令 顶级一级指令,指定 compose 指定文件格式版本 version: "3.8" services: 不同版本支持的功能不同。常用版本有 ‘2’, ‘3’, ‘3.8’ 等。 1.2、services 指令 顶级一级指令&#xff0…

谢飞机的Spring WebFlux面试之旅:从基础到深入

谢飞机的Spring WebFlux面试之旅:从基础到深入 面试场景:谢飞机的WebFlux面试 面试官:你好,谢飞机,请介绍一下你自己。 谢飞机:您好,我是一名有三年开发经验的Java程序员,熟悉Spr…

Mysql增量备份与恢复

1.练习数据增量备份 增量备份:备份上次备份后,新产生的数据。 PERCONA Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。 安装Xtrabackup 150、…

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…

Spring Boot与Kafka集成实践:实现高效消息队列

Spring Boot与Kafka集成实践 引言 在现代分布式系统中,消息队列是实现异步通信和解耦的重要组件。Apache Kafka作为一种高性能、分布式的消息队列系统,被广泛应用于大数据和实时数据处理场景。本文将介绍如何在Spring Boot项目中集成Kafka,…

Linux PXE批量装机+无人值守技术(自动化装机)

目录 PXE所需条件 服务端所需服务 客户端所需功能 1.准备系统安装rpm仓库 (1)安装vsftpd服务 (2)启动并设置开机自启 (3)准备yum仓库文件 2.安装配置dhcpd服务 (1)安装dhcoo软件包 (2)配置dhcp服务 (3)启动并设置开机自启 3.部署TFTP服务 (1)安装软…

linux_cmake的笔记

include_directories()的使用 今天在运行一个cmakelist.txt如下所示时候,发现一个问题: cmake_minimum_required(VERSION 3.28) project(l_trajectoryError CXX) option(USE_UBUNTU_20 "Set to ON if you are using Ubuntu 20.04" OFF) find…

论文略读:If Multi-Agent Debate is the Answer, What is the Question?

202502 arxiv 1 intro 多智能体辩论(Multi-Agent Debate, MAD):通过让多个智能体在大模型推理时展开多轮辩论,可提升生成内容的事实准确性和推理质量 但论文认为,目前多智能体辩论在大多数情况下不敌简单的单智能体方…

使用RUST在Arduino上进行编程(MacOS,mega板)

近年来,RUST成为了嵌入式编程的热门语言,本文通过实现(1)LED闪灯,以及(2)在console(终端)实现“Hello Rust World”两项功能来完成实操的入门。 深入学习可以参考RUST语言…

(15)关于窗体的右键菜单的学习与使用,这关系到了信号与事件 event

(1)起因来源于 4.11 的老师讲的例题,标准的,规范的使用右键菜单的代码及参考资料如下: (2) 接着脱离上面的那个复杂的环境,用简单的例子测试一下 : 说明老师讲的都是对…

C 语言学习笔记(指针4)

内容提要 指针 函数指针与指针函数二级指针 指针 函数指针与指针函数 函数指针 定义 函数指针本质上是指针,是一个指向函数的指针。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。(这里的函数名就代表…

C#串口打印机:控制类开发与实战

C#串口打印机:控制类开发与实战 一、引言 在嵌入式设备、POS 终端、工业控制等场景中,串口打印机因其稳定的通信性能和广泛的兼容性,仍是重要的数据输出设备。本文基于 C# 语言,深度解析一个完整的串口打印机控制类Printer&…

通过vue-pdf和print-js实现PDF和图片在线预览

npm install vue-pdf npm install print-js <template><div><!-- PDF 预览模态框 --><a-modal:visible"showDialog":footer"null"cancel"handleCancel":width"800":maskClosable"true":keyboard"…

SQL解析工具JSQLParser

目录 一、引言二、JSQLParser常见类2.1 Class Diagram2.2 Statement2.3 Expression2.4 Select2.5 Update2.6 Delete2.7 Insert2.8 PlainSelect2.9 SetOperationList2.10 ParenthesedSelect2.11 FromItem2.12 Table2.13 ParenthesedFromItem2.14 SelectItem2.15 BinaryExpressio…