搜索是我們日常生活中非常常見的操作,而搜索結果中高亮顯示關鍵詞則可以幫助用戶更快速的找到所需內容。Vue作為一款流行的前端框架,也提供了對搜索高亮顯示的支持。下面我們將詳細介紹Vue實現(xiàn)搜索高亮顯示的方法。
首先我們需要了解一下Vue中如何獲取用戶輸入的搜索關鍵詞。Vue采用v-model指令實現(xiàn)雙向數(shù)據(jù)綁定,我們可以使用一個input標簽來獲取用戶輸入的搜索內容并將其綁定到Vue實例的一個變量中。下面是示例代碼:
<input type="text" v-model="searchContent"> data(){ return{ searchContent: '' } }
接下來我們可以使用computed計算屬性來實時獲取搜索關鍵詞并進行過濾操作。下面是示例代碼:
<ul> <li v-for="item in filteredList">{{ item.content }}</li> </ul> data(){ return{ searchContent: '', list: [ {id: 1, content: 'First item'}, {id: 2, content: 'Second item'}, {id: 3, content: 'Third item'} ] } }, computed: { filteredList() { return this.list.filter(item =>{ return item.content.toLowerCase().includes(this.searchContent.toLowerCase()) }) } }
現(xiàn)在我們已經可以實現(xiàn)搜索功能了,但是如何讓搜索結果中的關鍵詞高亮顯示呢?這里我們可以借助Vue的內置指令v-html來實現(xiàn)。v-html指令可以將一個字符串解析為HTML元素并綁定到DOM元素上。我們可以通過正則表達式將搜索關鍵詞匹配出來并用\標簽將其包裹,從而實現(xiàn)高亮顯示。下面是示例代碼:
<ul> <li v-for="item in filteredList" v-html="highlight(item.content)"></li> </ul> methods: { highlight(content) { if(!this.searchContent) { return content; } const regex = new RegExp(this.searchContent, 'gi'); return content.replace(regex, match =>{ return '<span class="highlight">' + match + '</span>'; }) } } .highlight { background-color: yellow; }
最后我們還需要在CSS中為高亮部分設置樣式,這里我們可以設置背景色為黃色。至此,我們已經完成了Vue中搜索關鍵詞高亮顯示的實現(xiàn)。