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
繁體地址,請注明出處:http://hk.pswp.cn/news/906709.shtml
英文地址,請注明出處:http://en.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…