当前位置:首页 > VUE

vue实现搜索变色

2026-01-16 23:31:09VUE

实现搜索关键词高亮的方法

在Vue中实现搜索关键词高亮显示,可以通过自定义指令或过滤器实现。以下是两种常见实现方式:

方法一:使用v-html指令

创建一个方法处理文本并替换关键词:

methods: {
  highlight(text, keyword) {
    if (!keyword) return text
    const regex = new RegExp(keyword, 'gi')
    return text.replace(regex, match => `<span class="highlight">${match}</span>`)
  }
}

在模板中使用:

<div v-html="highlight(content, searchKeyword)"></div>

方法二:自定义指令

注册全局指令:

Vue.directive('highlight', {
  inserted(el, binding) {
    const { value, arg } = binding
    if (!arg) return
    const regex = new RegExp(arg, 'gi')
    el.innerHTML = value.replace(regex, match => 
      `<span style="background-color: yellow;">${match}</span>`
    )
  }
})

使用指令:

<div v-highlight:keyword="content"></div>

样式处理

添加CSS样式控制高亮效果:

.highlight {
  background-color: yellow;
  font-weight: bold;
  color: #333;
}

注意事项

  1. 使用v-html时需注意XSS攻击风险,确保内容可信
  2. 复杂匹配场景可考虑使用第三方库如mark.js
  3. 性能优化:大量文本处理时建议使用虚拟滚动

完整组件示例

<template>
  <div>
    <input v-model="keyword" placeholder="输入关键词"/>
    <div v-html="highlightedText"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      originalText: '这是一段需要搜索高亮的示例文本'
    }
  },
  computed: {
    highlightedText() {
      return this.highlight(this.originalText, this.keyword)
    }
  },
  methods: {
    highlight(text, keyword) {
      if (!keyword) return text
      const regex = new RegExp(keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi')
      return text.replace(regex, match => `<span class="highlight">${match}</span>`)
    }
  }
}
</script>

vue实现搜索变色

标签: vue
分享给朋友:

相关文章

vue 实现手册

vue 实现手册

以下是关于 Vue.js 实现手册的整理内容,涵盖核心概念、实践方法和常见场景的解决方案: 核心概念与基础用法 Vue.js 是一个渐进式 JavaScript 框架,核心特点包括数据驱动视图和组件…

vue实现本地数据存储

vue实现本地数据存储

使用 localStorage 或 sessionStorage Vue 中可以直接调用浏览器提供的 localStorage 或 sessionStorage API 进行数据存储。localSto…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…