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 相关文章推荐
JavaScript中的其他对象
Jan 16 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
优化RequireJS项目的相关技巧总结
Jul 01 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
jQuery实现滚动效果
Nov 17 jQuery
Vue开发环境跨域访问问题
Jan 22 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
Jquery submit()无法提交问题
2013/04/21 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
解读Python中degrees()方法的使用
2015/05/18 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
pip命令无法使用的解决方法
2018/06/12 Python
Python  Django 母版和继承解析
2019/08/09 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python用什么编辑器进行项目开发
2020/06/17 Python
python 简单的调用有道翻译
2020/11/25 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
庆七一活动简报
2015/07/20 职场文书
爱国主题班会教案
2015/08/14 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫