vue实现仿浏览器搜索功能 高亮显示关键词
时间: 2023-08-09 17:09:40 浏览: 192
Vue实现搜索结果高亮显示关键字
要实现仿浏览器搜索功能并且高亮显示关键词,可以使用 Vue.js 中的计算属性和 v-html 指令来实现。
首先,在你的组件中定义一个计算属性,用于根据输入框中的值过滤列表数据并且高亮显示匹配的关键词,例如:
```
<template>
<div>
<input type="text" v-model="searchText" placeholder="Search...">
<ul>
<li v-for="item in filteredList" :key="item.id" v-html="highlight(item.text)"></li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ id: 1, text: 'apple' },
{ id: 2, text: 'banana' },
{ id: 3, text: 'orange' },
{ id: 4, text: 'pear' }
],
searchText: ''
}
},
computed: {
filteredList() {
return this.list.filter(item => {
return item.text.toLowerCase().includes(this.searchText.toLowerCase())
})
}
},
methods: {
highlight(text) {
if (!this.searchText) {
return text
}
const regex = new RegExp(this.searchText, 'gi')
return text.replace(regex, '<span class="highlight">$&</span>')
}
}
}
</script>
```
在 highlight 方法中,首先判断搜索框中是否有值,如果没有值,则直接返回原始的文本。如果有值,则使用正则表达式将匹配的关键词用 span 标签包裹起来,并添加一个 highlight 类名,用于设置样式。
最后,在 CSS 中设置 highlight 类名的样式,例如:
```
.highlight {
background-color: yellow;
font-weight: bold;
}
```
这样就可以实现仿浏览器搜索功能并且高亮显示关键词了。
阅读全文