vue2 自定义指令 v-highlight 文本高亮显示分享

简单分享一个文本高亮显示的自定义指令,主要分两部分:

1、代码实现:在 main.js 文件中添加一个自定义指令,实现搜索时文本高亮显示,代码如下:

const highlightText = (el, searchText) => {
  const textContent = el.textContent;
  const regex = new RegExp(searchText, 'gi');
  const highlightedText = textContent.replace(regex, (matchedText) => {
    return `<mark style="background-color:#fff;color:#FF6A29">${matchedText}</mark>`;
  });
  el.innerHTML = highlightedText;
};

// 文本高亮的指令
Vue.directive('highlight', {
  // 当绑定元素插入到 DOM 中时
  inserted(el, binding) {
    // 确保传入的表达式是一个字符串
    if (typeof binding.value !== 'string') {
      console.warn(`Expect a string value for v-highlight`);
      return;
    }
    // 调用高亮逻辑
    highlightText(el, binding.value);
  },

  // 当绑定元素所在的组件的 VNode 更新时
  componentUpdated(el, binding) {
    // 调用高亮逻辑,因为文本可能已经改变
    highlightText(el, binding.value);
  },

  // 当你需要清理一些在指令创建时设置的东西时(比如事件监听器)
  unbind(el) {
    // 可选:移除高亮,恢复原始文本
    el.innerHTML = el.textContent;
  }
});

2、使用部分

<template>
  <div class="demo">
    <div v-highlight="searchKey"
      >·东临碣石,以观沧海。水何澹澹,山岛竦峙。树木丛生,百草丰茂。秋风萧瑟,洪波涌起。日月之行,若出其中;星汉灿烂,若出其里。幸甚至哉,歌以咏志。
      —— 东汉末年/三国·曹操《观沧海》
      ·神龟虽寿,犹有竟时;腾蛇乘雾,终为土灰。老骥伏枥,志在千里;烈士暮年,壮心不已。盈缩之期,不但在天;养怡之福,可得永年。幸甚至哉,歌以咏志。
      —— 东汉末年·曹操《龟虽寿》</div
    >
  </div>
</template>

<script>
export default {
  name: 'demo',
  data() {
    return {
      searchKey: '水何澹澹'
    };
  }
};
</script>

2.2 页面效果如下:

相关推荐

  1. Vue定义指令

    2024-02-06 21:12:01       46 阅读
  2. Vue定义指令

    2024-02-06 21:12:01       48 阅读
  3. Vue-------定义指令

    2024-02-06 21:12:01       39 阅读
  4. Vue定义指令

    2024-02-06 21:12:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-06 21:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-06 21:12:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-06 21:12:01       82 阅读
  4. Python语言-面向对象

    2024-02-06 21:12:01       91 阅读

热门阅读

  1. OpenCV实战项目——多种颜色识别

    2024-02-06 21:12:01       50 阅读
  2. 单片机和 ARM 的区别

    2024-02-06 21:12:01       40 阅读
  3. LeetCode解法汇总292. Nim 游戏

    2024-02-06 21:12:01       57 阅读
  4. 计算机网络的形成和发展

    2024-02-06 21:12:01       47 阅读
  5. 【数据提取Xpath/BeautifulSoup4】

    2024-02-06 21:12:01       49 阅读
  6. Python f-strings - PEP 498 - 字面字符串插值

    2024-02-06 21:12:01       47 阅读
  7. SQL--DML

    SQL--DML

    2024-02-06 21:12:01      44 阅读
  8. PostgreSQL导出导入

    2024-02-06 21:12:01       55 阅读
  9. 抖音ip地址可以改?抖音如何改ip地址

    2024-02-06 21:12:01       48 阅读
  10. 重学 VUE —— 一、创建一个应用

    2024-02-06 21:12:01       51 阅读