当前位置:首页 > VUE

如何用vue实现高亮

2026-02-25 06:09:13VUE

使用 Vue 实现高亮功能

高亮功能通常用于搜索关键词、标记重要内容或交互式文本选择。以下是几种实现方式:

基础文本高亮

通过绑定动态样式或类名实现简单高亮效果:

如何用vue实现高亮

<template>
  <div>
    <p :class="{ 'highlight': isHighlighted }">可高亮文本</p>
    <button @click="isHighlighted = !isHighlighted">切换高亮</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isHighlighted: false
    }
  }
}
</script>

<style>
.highlight {
  background-color: yellow;
  font-weight: bold;
}
</style>

关键词搜索高亮

实现搜索关键词在文本中的高亮显示:

如何用vue实现高亮

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

<script>
export default {
  data() {
    return {
      originalText: '这是一段包含重要信息的示例文本,信息可能重复出现。',
      searchText: ''
    }
  },
  computed: {
    highlightedContent() {
      if (!this.searchText) return this.originalText
      const regex = new RegExp(this.searchText, 'gi')
      return this.originalText.replace(regex, 
        match => `<span class="highlight">${match}</span>`
      )
    }
  }
}
</script>

多色高亮标记

实现不同颜色的高亮标注系统:

<template>
  <div>
    <p ref="textEl">选择文本后点击颜色按钮进行高亮标记</p>
    <button 
      v-for="color in colors" 
      :key="color" 
      :style="{backgroundColor: color}"
      @click="highlightSelection(color)"
    ></button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      colors: ['yellow', 'lime', 'cyan', 'pink']
    }
  },
  methods: {
    highlightSelection(color) {
      const selection = window.getSelection()
      if (selection.toString()) {
        const span = document.createElement('span')
        span.style.backgroundColor = color
        span.appendChild(selection.getRangeAt(0).cloneContents())

        const range = selection.getRangeAt(0)
        range.deleteContents()
        range.insertNode(span)
      }
    }
  }
}
</script>

注意事项

  1. 使用v-html时需注意XSS风险,确保内容可信或进行转义处理
  2. 动态高亮可能影响性能,长文本建议使用虚拟滚动优化
  3. 高亮样式应考虑无障碍访问,确保颜色对比度符合WCAG标准

进阶实现

对于复杂场景可考虑:

  • 使用自定义指令封装高亮逻辑
  • 结合Vuex管理高亮状态
  • 实现持久化存储高亮标记
  • 使用第三方库如mark.js集成更多功能

标签: 如何用vue
分享给朋友:

相关文章

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-mode…

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…

vue实现新闻

vue实现新闻

Vue 实现新闻功能 使用 Vue 实现新闻功能通常涉及新闻列表展示、新闻详情页、分类筛选等模块。以下是实现的基本思路和代码示例。 新闻列表展示 通过 Vue 组件展示新闻列表,通常使用 v-for…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…