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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
JavaScript编程设计模式之构造器模式实例分析
Oct 25 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
Jquery获取radio选中值实例总结
Jan 17 jQuery
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
vue-quill-editor的使用及个性化定制操作
Aug 04 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
JavaScript利用html5新方法操作元素类名详解
Nov 27 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中动态HTML的输出技术
2006/10/09 PHP
PHP对字符串的递增运算分析
2010/08/08 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
javascript里的条件判断
2007/02/27 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
创业大赛策划书
2014/03/01 职场文书
申论倡议书范文
2014/05/13 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
请假条应该怎么写?
2019/06/24 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python