vue搜索高亮popsearch组件的实现示例

 更新时间:2023年09月27日 11:14:10   作者:啥咕啦呛  
有时候给页面内容添加一个关键词搜索功能,如果搜索结果能够像浏览器搜索一样高亮显示,那找起来就会很明显体验会好很多,本文就来介绍一下vue搜索高亮popsearch组件的实现示例,感兴趣的可以了解一下

背景

最近项目中需要制作一个搜索高亮的组件(如下图展示),今天分享一下这个组件功能。希望能抛砖引玉,给大家带来启发。

需求功能

我们需要一个输入框,比如用来搜索网站的所有菜单,这个时候搜索结果高亮显示。

1.搜索关键词筛选;

2.关键词键入筛选;

3.关键词列表高亮;

设计开发

先说一下我的开发环境版本:

  • node: v11.3.0
  • npm: 6.4.1
  • vue:2.5.11

如果不是以上版本也没关系,今日分享的思路,相信你可以自己造出来~

1.先做html排版,简单的用position相对定位来做哈:

<div class='popcover'>
   <input type="text" class="z-input" placeholder="请输入" v-model="data">
   <div class="popcoverbox">
      <p v-if="!list.filter(one=>one.name.includes(data)).length"> 无数据 </p>
      <ul>
        <li v-for="one in list.filter(one=>one.name.includes(data))" :key="one.id" v-html="searchNamefilter(one.name)" ></li>
      </ul>
   </div>
 </div>

2.给html赋上对应的css(sass):

.z-input{
  outline: none;
  line-height: 30px;
  border: 1px solid #ddd;
  border-radius: 3px;
  padding: 0 10px;
  &:focus{
    border-color: #1676ff;
    + .popcoverbox{
      display: block;
    }
  }
}
.popcover{
  position: relative;
}
.popcoverbox{
  display: none;
  position: absolute;
  top: 32px;
  left: 0;
  min-width: 200px;
  min-height: 30px;
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 3px;
  box-shadow: 3px 4px 3px #eee;
  background: #fff;
  line-height: 30px;
  padding: 0;
  p{
    color: #999;
    padding: 0;
    margin: 0;
    border: 0;
    text-indent: 10px;
  }
  ul{
    padding: 0;
    margin: 0;
    border: 0;
    li{
      margin: 0;
      border: 0;
      box-sizing: border-box;
      width: 100%;
      text-indent: 10px;
      cursor: pointer;
      &:hover{
        color: #333;
        background-color: #eee;
      }
      &.hover{
        color: #1676ff;
        background-color: #e8f1ff;
      }
    }
  }
}

3.给出变量定义:

data:"",
list:[
  {
    id: 0,
    name:'张三'
  },
  {
    id: 1,
    name:'赵四'
  },
  {
    id: 2,
    name:'周四'
  },
  {
    id: 3,
    name:'郑三'
  },
]
}

4.方法高亮定义:

 // 搜索关键词高亮
searchNamefilter(name){
  if(!name)return
  let key = this.data;
  const reg = new RegExp(key, 'ig');
  return name.replace(reg, `<span style="color:red">${key}</span>`)
},

本组件只用于学习交流哈!暂时没有定义父级传入参数哈,效果如下:

写在最后

到此这篇关于vue搜索高亮popsearch组件的实现示例的文章就介绍到这了,更多相关vue搜索高亮popsearch 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)

    解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)

    这篇文章主要介绍了解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等),解决方法是使用this.$forceUpdate()强制刷新,文章给大家分享了代码案例,需要的朋友参考下吧
    2018-07-07
  • vue elementui简易侧拉栏的使用小结

    vue elementui简易侧拉栏的使用小结

    这篇文章主要介绍了vue elementui简易侧拉栏的使用,增加了侧拉栏,目的是可以选择多条数据展示数据,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法

    Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法

    这篇文章主要介绍了Vue移动端用淘宝弹性布局lib-flexible插件做适配的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • vue checkbox 全选 数据的绑定及获取和计算方法

    vue checkbox 全选 数据的绑定及获取和计算方法

    下面小编就为大家分享一篇vue checkbox 全选 数据的绑定及获取和计算方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 封装Vue Element的table表格组件的示例详解

    封装Vue Element的table表格组件的示例详解

    这篇文章主要介绍了封装Vue Element的table表格组件的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-08-08
  • Vue实现搜索结果高亮显示关键字

    Vue实现搜索结果高亮显示关键字

    这篇文章主要为大家详细介绍了Vue实现搜索结果高亮显示关键字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Vue项目history模式下微信分享爬坑总结

    Vue项目history模式下微信分享爬坑总结

    这篇文章主要介绍了Vue项目history模式下微信分享爬坑总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • vuex与map映射实现方法梳理分析

    vuex与map映射实现方法梳理分析

    Vuex中的映射允许您将state中的任何属性(state、getter、mutation和action)绑定到组件中的计算属性,并直接使用state中的数据,下面我们来详细了解
    2022-09-09
  • VUE使用day.js显示时分秒并实时更新时间效果实例

    VUE使用day.js显示时分秒并实时更新时间效果实例

    vue.js是目前比较流行的前端框架之一,它提供了非常多的基础组件和工具库,以方便开发者快速搭建具有可重用性的web应用,下面这篇文章主要给大家介绍了关于VUE使用day.js显示时分秒并实时更新时间效果的相关资料,需要的朋友可以参考下
    2024-04-04
  • vue项目中如何使用TypeScript相关配置

    vue项目中如何使用TypeScript相关配置

    这篇文章主要给大家介绍了关于vue项目中如何使用TypeScript相关配置的相关资料,typescript在开发过程中广泛被应用,在这里总结下项目中ts的应用,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论