实现匹配搜索词高亮(Vue3)

1.使用插件实现ohlight

(1).下载插件

// pnpm 
pnpm i ohlight
// npm
npm i ohlight
// yarn
yarn add ohlight

如果让选择版本就按照提示的版本选择

(2).基本使用

>1.(Vue3)的使用

首先在vite.config.js中加入以下代码:

export default defineConfig({
  plugins: [
    vue({
      template: {
        compilerOptions: {
          //将所有包含短横线的标签作为自定义元素处理
          isCustomElement: (tag) => tag.includes("-"),
        },
      },
    }),
  ],
});

如果没用vite,那么在vue.config.js中加入以下代码:

//vue.config.js
module.exports = {
	chainWebpack:config => {
		config.module
			.rule('vue')
			.use('vue-loader')
			.tap(option => ({
				...options,
				compilerOptions:{
					//将所有以ion-开头的标签作为自定义元素处理
					isCustomElement:tag => tag.startsWith('ion-')
				}
			}))
	}
}

然后对于他的使用也很简单,如下:

<script setup>
import { oLight } from "ohlight";
import { ref, reactive } from "vue";

const value = ref();
const lightFont = reactive(["唱", "rap", "跳", "篮球"]);//高亮文字数据
let style = JSON.stringify({
  color: 'red',
  background: 'aliceblue',
  'font-style': 'oblique'
})
</script>
<template>
  <div>
    <input type="text" v-model="value" />
    <o-light :content="value" :keywords="lightFont.join(',')" :styles="style"></o-light>
  </div>
</template>

<style scoped></style>

下面是一些关于插件的属性

Api

属性

属性名类型描述默认值
contentstring文本内容-
keywordsstring关键词字符串,多个关键词使用'','隔开-
stylesstring高亮关键字样式,仅支持序列化后的CSSStyleDeclaration对象;注:涉及到驼峰写法的需要改写成 - 连接如:fontStyle 需要写成 font-style-
stableTimestring | number防抖时间,单位:(ms)200

事件

所有的事件内容均在event.detail中。

事件名类型描述默认值
loadFunction该方法在组件绘制完成并挂载后触发,返回当前组件实例,内容在event.detail中,可供操作dom使用等-
connectedCallbackFunction当自定义元素第一次被连接到文档 DOM 时被调用-
disconnectedCallbackFunction当自定义元素与文档 DOM 断开连接时被调用-
adoptedCallbackFunction当自定义元素被移动到新文档时被调用-
attributeChangedCallbackFunction当自定义元素的一个属性被增加、移除或更改时被调用。-

浏览器支持情况

chromeedgefirefoxoperasafari
53+79+63+40+10+

当然,关于这个插件也可以去他的官网参照,链接放在这里了:

(高亮划词插件链接)[https://www.npmjs.com/package/ohlight]

2.自己实现一个方法

<script setup lang="ts">
import { reactive, ref, toRefs } from 'vue'
const activeObj = reactive({
    arrWords: ['唱', '跳', 'rap', '篮球']
})
const inputVal = ref('');
let { arrWords } = toRefs(activeObj);

const brightenKeyword = (val: any, keyword: any) => {
    const Reg = new RegExp(keyword, 'i');
    const res = val.join('').replace(Reg, `<span style="color: #f4ea2a;">${keyword}</span>`)
    return res;
}
</script>
<template>
    <div class="container">
        <input type="text" v-model="inputVal" />
        <div v-html="brightenKeyword(arrWords, inputVal)"> </div>
    </div>
</template>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3是一种流行的JavaScript框架,用于构建用户界面。它提供了一种声明式的方式来构建可复用的组件,并且具有响应式的数据绑定和组件化的开发模式。 关于使用Vue 3实现PDF搜索高亮,你可以使用vue-pdf库来实现vue-pdf是一个基于PDF.js的Vue组件,可以在Vue应用中显示PDF文件。 首先,你需要安装vue-pdf库。可以通过npm或yarn来安装: ``` npm install vue-pdf ``` 或 ``` yarn add vue-pdf ``` 安装完成后,在你的Vue组件中引入vue-pdf: ```javascript import { pdf } from 'vue-pdf' export default { components: { pdf }, data() { return { pdfFile: '/path/to/your/pdf/file.pdf', searchQuery: '' } }, methods: { highlightText() { // 在这里实现PDF搜索高亮逻辑 } } } ``` 然后,在模板中使用vue-pdf组件来显示PDF文件: ```html <template> <div> <pdf :src="pdfFile"></pdf> <input type="text" v-model="searchQuery" @input="highlightText" placeholder="搜索关键字"> </div> </template> ``` 在上面的代码中,我们通过`:src`属性将PDF文件路径传递给vue-pdf组件进行显示。然后,我们使用`v-model`指令将输入框的值绑定到`searchQuery`变量上,并通过`@input`事件监听输入框的变化,调用`highlightText`方法来实现搜索高亮的逻辑。 至于具体的PDF搜索高亮逻辑,你可以使用PDF.js提供的API来实现。你可以使用PDF.js提供的`find`方法来搜索关键字,并使用`highlight`方法来实现高亮效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值