vue 实现简单的关键词搜索实例带高亮

转载 (原文地址) 1130331201 随笔 vue 265阅读 2018-06-25 13:51:04 举报

<template>
<div class="row mt-3">
<p>搜索框高亮!</p>
<input type="text" name="search" value="" v-model="input1">

<div v-for="item in itemData">
<div class="item" v-if="getword(item)">
<div class="title">
<span v-html="
setColor(item.title,input1)">
</span></div>
<p class="title" v-html="
setColor(item.content,input1)"></p>
<div class="title sender">{{ item.name }}</div>
<div class="title time">{{ item.time }}</div>
</div>
</div>
</div>
</template>

<script>
var data = [{
title:"雄安新区召开三县干部会议:强调防止炒房影响投资",
content:"澎湃新闻(www.thepaper.cn)获悉,4月3日上午9时,河北保定市下辖雄县、容城、安新三县村以上干部在容城县金孔雀温泉酒店7楼召开“雄安新区驻村工作学习培训会议”,会议由河北省雄安新区临时党委副书记、筹备工作委员会主任刘宝玲主持。会议一直开到当天中午十二点多才结束。",
name: "来源: 人民日报",
time: new Date().getFullYear()+"-"+(new Date().getMonth()+1)+
"-"+new Date().getDate()
},
{
title:"中国第六代战机要来了 三大关键特征曝光相当科幻",
content:"近日,中国歼-20总设计师杨伟在接受媒体采访时,称中国正在展开六代机的研制工作,有评论称六代机可能是科幻电影最大胆的想象都没有描述过的外形,其实,六代机没那么玄乎,它的发展趋势还是有迹可循的。",
name: "来源: 朝日新闻",
time: new Date().getFullYear()+"-"+(new Date().getMonth()+1)+
"-"+new Date().getDate()
},
{
title:"习近平在芬兰媒体发表署名文章",
content:"我曾经两次到访芬兰,这里纯净秀丽的林湖风光、勤勉创新的发展理念、淳厚安宁的人文风情,给我留下美好印象。芬兰地处东西方文明交汇前沿,数百年来,芬兰人民在历史激荡中奋勇前行,发扬坚韧不拔的“西苏”精神,取得民族独立、国家富强的伟大成就。这里孕育了交响乐大师西贝柳斯,研发出享誉世界的Linux操作系统,并发展成全球幸福和清廉指数最高的国家之一。",
name: "来源: 财经网",
time: new Date().getFullYear()+"-"+(new Date().getMonth()+1)+
"-"+new Date().getDate()
},
{
title:"共享单车相随总理走出国门",
content:"今年1月,摩拜单车创始人被李克强总理请入中南海参加座谈。总理当时肯定这家企业“依托互联网和服务业带动制造业的发展”。他特别强调,对新产业新业态新模式要本着鼓励创新,探索审慎监管方式,使市场包容有序、充满活力。",
name: "来源: 新华社",
time: new Date().getFullYear()+"-"+(new Date().getMonth()+1)+
"-"+new Date().getDate()
},
{
title:"黑客如何超越麦克风,窃听你的一举一动!",
content:"白宫总统顾问康威(Kellyanne Conway)在接受媒体采访时称,前总统奥巴马对川普阵营的实际监控可能比川普总统暗示的监听他的手机更广泛,监听设备甚至可以是微波炉,引发网友嘲讽。",
name: "来源: 纽约时报",
time: new Date().getFullYear()+"-"+(new Date().getMonth()+1)+
"-"+new Date().getDate()
}
];

export default{
data(){
return{
input1:"",
itemData: data
}
},
methods:{
setColor:function(item, val){
return item.replace(new RegExp(val,'ig') ,
"<span style='color:#f00'>"+val+"</span>");
},
getword:function(item){
if(item.title.indexOf(this.input1)>=0 ||
item.content.indexOf(this.input1)>=0 ){
return true;
}
}
}
}

</script>

<style>
.item{width:500px;min-height:100px;box-shadow:0px 0px 2px #bbb;transition:box-shadow 0.9s ease;padding:10px;margin-bottom:20px;}
.item:hover{box-shadow:0px 0px 7px #00f;}
.title{font-size:14px;cursor:pointer;}
.sender{margin:5px auto;}
.sender,.time{font-size:12px;color:#888;display:inline-block;margin-right:30px;}
input[type=text]{width:200px;height:30px;padding:2px 5px 2px 5px;border:2px solid #00f;display:inline-block;margin-bottom:20px;font-size:16px;}
input[type=text]:focus{box-shadow:0 0 5px rgba(0,0,255,0.4);}
type=button{outline:none;border:none;width:100px;height:38px;color:#fff;background-color:rgba(0,0,130,0.4);}

</style>

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复