vue实现多组关键词对应高亮显示功能


Posted in Javascript onJuly 25, 2019

先上效果图:

 vue实现多组关键词对应高亮显示功能

我们有多组关键词,这里实现了关键词的背景色与匹配值的字体颜色值相同

先拟定一组数据

colors: [
    "#FFB5C5",
    "#EEC900",
    "#D1EEEE",
    "#40E0D0",
    "#FFFF00",
    "#FF7F00",
    "#FF6A6A",
    "#B3EE3A",
    "#9F79EE",
    "#FFC1C1"
   ],
   keywordsdetail: ["好看", "美丽", "wfewf"],
   comments: [
    {
     text: "老师 好看好看222"
    },
    {
     text: "老师美丽11111极了"
    },
    {
     text: "老师太搞笑34234了"
    },
    {
     text: "老师搞笑的不的了"
    },
    {
     text: "老师:ox::beer:wfewf啊"
    }
   ]

我们自定义一些颜色值以及关键词和详情文字

用内联样式的方法设置关键词的不同背景色显示

<span
    v-for="(item,index) in keywordsdetail"
    :key="index"
    class="keyworditem"
    :style="{backgroundColor:colors[index]}"
    @click="showpartkey(index,comments)"
   >{{item}}</span>

下面定义关键词匹配改变字体颜色的方法

changeColor(resultsList, keywords) {
   keywords.map((keyitem, keyindex) => {
    resultsList.map((item, index) => {
     if (keyitem && keyitem.length > 0) {
      // 匹配关键字正则
      let replaceReg = new RegExp(keyitem, "g");
      // 高亮替换v-html值
      let replaceString =
       '<span class="highlight"' +
       ' style="color: ' +
       this.colors[keyindex] +
       ';">' +
       keyitem +
       "</span>";
      resultsList[index].text = item.text.replace(
       replaceReg,
       replaceString
      );
     }
    });
   });

   this.comments = [];
   this.comments = resultsList;
  }

我们主要看这一行

let replaceString = '<span class="highlight"' +' style="color: ' + this.colors[keyindex] + ';">' + keyitem + "</span>";

这里采取了字符串拼接的方法来进行渲染

但如果你写成这样

<span class="highlight">keyitem</span>

然后在css中定义highlight的样式

.highlight {
color:red
}

这样做是不生效的

解释我参考了这位兄弟说的

所以解决方法有以下几种

1.直接去掉css的scoped属性 但是这样做很容易搞乱布局

2.写成以下形式

.aaa >>>.highlight{
color:red
}

3.把样式以字符串拼接的方式插入

这样做的好处是 可以动态设置v-html的样式

总结

以上所述是小编给大家介绍的vue实现多组关键词对应高亮显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
js导出excel文件的简洁方法(推荐)
Nov 02 Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 Javascript
node+koa实现数据mock接口的方法
Sep 20 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
May 18 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
一篇文章带你从零快速上手Rollup
Sep 07 Javascript
微信小程序实现原生步骤条
Jul 25 #Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 #Javascript
微信小程序tabBar 返回tabBar不刷新页面
Jul 25 #Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 #Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 #Javascript
微信小程序实现收货地址左滑删除
Nov 18 #Javascript
jquery-ui 进度条功能示例【测试可用】
Jul 25 #jQuery
You might like
PHP网站备份程序代码分享
2011/06/10 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
Javascript 对象的解释
2008/11/24 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
javascript轮播图算法
2016/10/21 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
2014年高三毕业生自我评价
2014/01/11 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
广告设计应届生求职信
2014/03/01 职场文书
五四青年节演讲稿
2014/05/26 职场文书
小学学校评估方案
2014/06/08 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL