Vue關(guān)鍵詞搜索高亮


一、實現(xiàn)原理
使用正則匹配出文本內(nèi)容中的所有關(guān)鍵詞,在關(guān)鍵詞外包一層內(nèi)聯(lián)標(biāo)簽,比如span或者font,通過innerHtml渲染文本。使用CSS控制插入的內(nèi)聯(lián)元素樣式,并且記錄下當(dāng)前搜索到的結(jié)果是第幾個,使用不同的樣式來展示。
江畔何人初見<font style="background: #ff9632">月font>?江<font style="background: #ffff00">月font>何年初照人?
接下來會介紹一下組件vue-search-highlight的使用,然后給出Vue中的搜索高亮的代碼實現(xiàn)。
二、vue-search-highlight組件使用
組件功能如下:
關(guān)鍵詞高亮
關(guān)鍵詞匹配總數(shù)以及當(dāng)前關(guān)鍵詞的索引(即是第幾個搜索結(jié)果)
查找上一個、下一個功能,調(diào)用相應(yīng)函數(shù)即可跳到上一個或者下一個
// 如果使用yarnyarn add vue-search-highlight// 如果使用npmnpm install vue-search-highlight
vue-search-highlight本身是一個組件,在需要搜索高亮的頁面里引入后,像正常的組件一樣使用即可。
import?SearchHighlight?from?'vue-search-highlight'// 注冊為子組件components: {'search-highlight': SearchHighlight},

組件有兩個重要的數(shù)據(jù),即搜索匹配數(shù)量和當(dāng)前關(guān)鍵詞索引,會通過$emit彈射出來,如果需要展示搜索索引和匹配總數(shù)(比如 3 / 16),你可以監(jiān)聽組件的這兩個事件:

你可以通過ref引用組件,直接調(diào)用組件內(nèi)部的一些方法:

class="search-highlight"ref="search"-change="currentChange"-count-change="matchCountChange":content="content":keyword="keyword">
三、組件代碼實現(xiàn)
class="search-highlight" v-html="contentShow">

評論
圖片
表情
