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 相关文章推荐
JS 常用校验函数
Mar 26 Javascript
javascript 写类方式之一
Jul 05 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
浅谈jQuery中height与width
Jul 06 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
JQuery实现网页右侧随动广告特效
Jan 17 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
sea.js常用的api简易文档
Nov 15 Javascript
Angular2入门--架构总览
Mar 29 Javascript
Vue from-validate 表单验证的示例代码
Sep 26 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
js正则匹配多个全部数据问题
Dec 20 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
第十节--抽象方法和抽象类
2006/11/16 PHP
实现PHP搜索加分页
2016/10/12 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
layui实现三级联动效果
2019/07/26 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
python中使用while循环的实例
2019/08/05 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
经典C++面试题一
2016/11/06 面试题
.NET面试题:什么是反射
2016/09/30 面试题
竞聘演讲稿范文
2014/01/12 职场文书
军训自我鉴定200字
2014/02/13 职场文书
关于环保的标语
2014/06/13 职场文书
公司租车协议书
2015/01/29 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
跑出一片天观后感
2015/06/08 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL