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 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
javascript删除字符串最后一个字符
Jan 14 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
详解javascript new的运行机制
Jan 26 Javascript
js仿百度切换皮肤功能(html+css)
Jul 10 Javascript
p5.js入门教程之鼠标交互的示例
Mar 16 Javascript
浅谈vue首屏加载优化
Jun 28 Javascript
Vue中props的详解
May 16 Javascript
vue不操作dom实现图片轮播的示例代码
Dec 18 Javascript
vue实现瀑布流组件滑动加载更多
Mar 10 Javascript
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
微信小程序实现原生步骤条
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制作静态网站的模板框架(三)
2006/10/09 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
DEFER怎么用?
2006/07/01 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
运用js实现图层拖拽的功能
2019/05/24 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
js实现随机点名功能
2020/12/23 Javascript
React实现todolist功能
2020/12/28 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python元字符的用法实例解析
2018/01/17 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python随机数函数代码实例解析
2020/02/09 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
诚信考试倡议书
2014/04/15 职场文书
新学期标语
2014/06/30 职场文书
质检员岗位职责
2015/02/03 职场文书