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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
Javascript中call与apply的学习笔记
Sep 22 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
Jun 16 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
详解Javascript事件驱动编程
Jan 03 Javascript
使用jQuery监听DOM元素大小变化
Feb 24 Javascript
React中jquery引用的实现方法
Sep 12 jQuery
vue图片加载失败时用默认图片替换的方法
Aug 29 Javascript
小程序两种滚动公告栏的实现方法
Sep 17 Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 Javascript
浅谈react路由传参的几种方式
Mar 23 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 读取文件内容代码(txt,js等)
2009/12/06 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
实例浅析js的this
2016/12/11 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python三元运算符实现方法
2013/12/17 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
django中静态文件配置static的方法
2018/05/20 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
写好自荐信需做到的5要点
2014/03/07 职场文书
个人贷款担保书
2014/04/01 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
出生证明格式
2015/06/15 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python