亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue使用advanced-mark.js實(shí)現(xiàn)高亮文字效果

 更新時(shí)間:2025年08月08日 10:10:27   作者:__愛(ài)吃香菜  
在日常項(xiàng)目中我們往往會(huì)有搜索高亮的需求,下面這篇文章主要介紹了vue使用advanced-mark.js實(shí)現(xiàn)高亮文字效果的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

組件介紹-advanced-mark.js:

advanced-mark.js 是一個(gè)用于 Vue 的高亮文字組件,它可以幫助你在文本中高亮顯示指定的關(guān)鍵詞或短語(yǔ)。
組件地址:https://angezid.github.io/advanced-mark.js/doc-v2/getting-started.html

  • 主要功能:
  • 關(guān)鍵詞高亮:在文本中高亮顯示一個(gè)或多個(gè)關(guān)鍵詞
  • 多關(guān)鍵詞支持:可以同時(shí)高亮多個(gè)不同的關(guān)鍵詞
  • 自定義樣式:允許自定義高亮部分的樣式
  • 大小寫(xiě)敏感選項(xiàng):可選擇是否區(qū)分大小寫(xiě)
  • 正則表達(dá)式支持:支持使用正則表達(dá)式進(jìn)行復(fù)雜匹配
  • 可以設(shè)置css名稱進(jìn)行限制高亮區(qū)域

下載安裝:

npm install advanced-mark.js

yarn add advanced-mark.js

要初始化新實(shí)例,必須使用:

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

使用方法介紹:

  • element 【string】:獲取document,通過(guò)document.getElementById()或document.querySelector()獲取的單個(gè)元素,或document.querySelectorAll()獲取節(jié)點(diǎn)列表,包含多個(gè)單個(gè)元素的數(shù)組(請(qǐng)注意,在內(nèi)部,數(shù)組按元素在文檔中的位置排序)
    字符串選擇器(內(nèi)部調(diào)用document.querySelectorAll())
    :const allNodes =document.querySelectorAll(selector));
  • className 【string】:標(biāo)記元素的自定義類。
  • separateWordSearch【boolean or string】:當(dāng)它設(shè)置為true時(shí),如果搜索字符串包含多個(gè)單詞,它會(huì)將字符串按空格拆分為單獨(dú)的單詞,并突出顯示單個(gè)單詞而不是整個(gè)字符串。
    它也適用于搜索數(shù)組中的每個(gè)字符串。
    當(dāng)它設(shè)置為“separateWordSearch ”時(shí),它會(huì)保留雙引號(hào)周圍的術(shù)語(yǔ),防止它們分成單獨(dú)的單詞。
    當(dāng)設(shè)置為‘false’的時(shí)候,指定將術(shù)語(yǔ)不分解為單獨(dú)的單詞。
  • diacritics【boolean】:是否匹配變音字符。
  • caseSensitive【boolean】:是否搜索區(qū)別大小寫(xiě)。
  • accuracy【string or object】:兩種模式值,
    -字符串模式:
    partially:部分匹配,例如搜索"a"時(shí),會(huì)高亮所有包含該字母的單詞(如"and"、“back"中 的"a”)。
    exactly:強(qiáng)制精確匹配,默認(rèn)通過(guò)空格或文本節(jié)點(diǎn)的起止位置作為邊界(需配合acrossElements選項(xiàng)使用)。
    startsWith:前綴匹配,例如搜索"pre"會(huì)完整高亮以該前綴開(kāi)頭的單詞(如"prefix"、“predict”)。
    complementary:互補(bǔ)匹配,例如搜索"a"時(shí),僅高亮完整包含該字符且未被邊界分隔的單詞(如"and"、“visa”)。
    -對(duì)象模式:
    通過(guò) value 指定匹配模式(必須為上述四個(gè)字符串值之一)
    通過(guò) limiters 自定義邊界字符,例如:
    { value: "exactly", limiters: ",.;:?!'\"()" }
    
  • wildcards【string】:匹配空格,enabled 模式忽略空格;withSpaces 模式允許空格作為有效字符;disabled 完全禁用通配符功能;
  • ignoreJoiners【boolean】:是否查找包含軟連字符、零寬度空格、零寬度非連接符和零寬度連接符的匹配項(xiàng)。
  • synonyms【object】:該對(duì)象用于建立詞匯間的雙向/單向關(guān)聯(lián)關(guān)系,支持兩種配置形式:
  • each:每個(gè)標(biāo)記元素的回調(diào)。
    例:
    each: function (markElement, eachInfo) {
    // markElement:當(dāng)前被高亮的 DOM 元素。
    // eachInfo:包含匹配信息的對(duì)象,其中 eachInfo.match[0] 是匹配到的關(guān)鍵詞
    const keyword = eachInfo.match[0];
    markElement.style.backgroundColor =
    keywordColors[keyword] || '#FBD1D5';
     }
    

注: 如果想要多個(gè)部分分散使用高亮功能,那么可以使用數(shù)組形式進(jìn)行存儲(chǔ),并遍歷循環(huán)。

const  classNames=['.css1','.css2','.css3',...]
   const allNodes = classNames.flatMap((selector) =>
      document.querySelectorAll(selector));
    allNodes.forEach((node) => {
      // 在指定的 DOM 元素中查找并高亮指定的關(guān)鍵詞
      const instance = new Mark(node); //new一個(gè)新對(duì)象
      instance.unmark(); // 清除之前的標(biāo)記
        instance.mark(highlightKeywords[注:接受高亮詞的數(shù)組], {
          separateWordSearch: false, // false指定將術(shù)語(yǔ)不分解為單獨(dú)的單詞
          each: function (markElement, eachInfo) {
            // markElement:當(dāng)前被高亮的 DOM 元素。
            // eachInfo:包含匹配信息的對(duì)象,其中 eachInfo.match[0] 是匹配到的關(guān)鍵詞
            const keyword = eachInfo.match[0];
            markElement.style.backgroundColor =
              keywordColors[keyword] || '#FBD1D5';// 設(shè)置顏色和默認(rèn)顏色
          }
        });
    });

組件產(chǎn)出效果:

總結(jié) 

到此這篇關(guān)于vue使用advanced-mark.js實(shí)現(xiàn)高亮文字效果的文章就介紹到這了,更多相關(guān)vue高亮文字效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2.0實(shí)現(xiàn)音樂(lè)/視頻播放進(jìn)度條組件

    vue2.0實(shí)現(xiàn)音樂(lè)/視頻播放進(jìn)度條組件

    這篇文章主要為大家詳細(xì)介紹了vue2.0實(shí)現(xiàn)音樂(lè)和視頻播放進(jìn)度條組件的思路及具體實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • vue+echarts實(shí)現(xiàn)條紋柱狀橫向圖

    vue+echarts實(shí)現(xiàn)條紋柱狀橫向圖

    這篇文章主要為大家詳細(xì)介紹了vue+echarts實(shí)現(xiàn)條紋柱狀橫向圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue-cli3 karma單元測(cè)試的實(shí)現(xiàn)

    vue-cli3 karma單元測(cè)試的實(shí)現(xiàn)

    這篇文章主要介紹了vue-cli3 karma單元測(cè)試的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 詳解input組合事件如何監(jiān)聽(tīng)輸入中文

    詳解input組合事件如何監(jiān)聽(tīng)輸入中文

    這篇文章主要為大家介紹了input組合事件如何監(jiān)聽(tīng)輸入中文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue使用swiper.js重疊輪播組建樣式

    vue使用swiper.js重疊輪播組建樣式

    這篇文章主要為大家詳細(xì)介紹了vue使用swiper.js重疊輪播組建樣式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動(dòng)播放

    Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動(dòng)播放

    最近在做大屏展示需要在一開(kāi)始播放引導(dǎo)視頻,產(chǎn)生自動(dòng)播放需求,下面這篇文章主要給大家介紹了關(guān)于Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動(dòng)播放的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    這篇文章主要為大家介紹了vue使用?vue-socket.io三種方式及踩坑實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue實(shí)現(xiàn)登錄攔截

    vue實(shí)現(xiàn)登錄攔截

    這篇文章主要介紹了vue實(shí)現(xiàn)登錄攔截,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • JavaScript之Vue.js【入門(mén)基礎(chǔ)】

    JavaScript之Vue.js【入門(mén)基礎(chǔ)】

    本文主要介紹一下Vue.js并附上在Node.js環(huán)境下搭建一個(gè)簡(jiǎn)單的Demo實(shí)例代碼。條理清晰,有助于閱讀和理解。有需要的朋友可以看下
    2016-12-12
  • Vue發(fā)布訂閱模式實(shí)現(xiàn)過(guò)程圖解

    Vue發(fā)布訂閱模式實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Vue發(fā)布訂閱模式實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論