vue搜索高亮popsearch組件的實(shí)現(xiàn)示例
背景
最近項(xiàng)目中需要制作一個(gè)搜索高亮的組件(如下圖展示),今天分享一下這個(gè)組件功能。希望能拋磚引玉,給大家?guī)韱l(fā)。
需求功能
我們需要一個(gè)輸入框,比如用來搜索網(wǎng)站的所有菜單,這個(gè)時(shí)候搜索結(jié)果高亮顯示。
1.搜索關(guān)鍵詞篩選;
2.關(guān)鍵詞鍵入篩選;
3.關(guān)鍵詞列表高亮;
設(shè)計(jì)開發(fā)
先說一下我的開發(fā)環(huán)境版本:
- node: v11.3.0
- npm: 6.4.1
- vue:2.5.11
如果不是以上版本也沒關(guān)系,今日分享的思路,相信你可以自己造出來~
1.先做html排版,簡(jiǎn)單的用position相對(duì)定位來做哈:
<div class='popcover'> <input type="text" class="z-input" placeholder="請(qǐng)輸入" v-model="data"> <div class="popcoverbox"> <p v-if="!list.filter(one=>one.name.includes(data)).length"> 無數(shù)據(jù) </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賦上對(duì)應(yīng)的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.方法高亮定義:
// 搜索關(guān)鍵詞高亮 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>`) },
本組件只用于學(xué)習(xí)交流哈!暫時(shí)沒有定義父級(jí)傳入?yún)?shù)哈,效果如下:
寫在最后
到此這篇關(guān)于vue搜索高亮popsearch組件的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)vue搜索高亮popsearch 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳細(xì)了解Vue?3.0中的onMounted和onUnmounted鉤子函數(shù)
Vue3.0引入了新的組件生命周期鉤子函數(shù)onMounted和onUnmounted,分別用于組件掛載后和卸載前的操作,這些鉤子函數(shù)為開發(fā)者提供了更多靈活性,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10django+vue實(shí)現(xiàn)注冊(cè)登錄的示例代碼
這篇文章主要介紹了django+vue實(shí)現(xiàn)注冊(cè)登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-0515分鐘學(xué)會(huì)vue項(xiàng)目改造成SSR(小白教程)
這篇文章主要介紹了15分鐘學(xué)會(huì)vue項(xiàng)目改造成SSR(小白教程),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12vue-cropper插件實(shí)現(xiàn)圖片截取上傳組件封裝
這篇文章主要為大家詳細(xì)介紹了vue-cropper插件實(shí)現(xiàn)圖片截取上傳組件封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05詳解vue 配合vue-resource調(diào)用接口獲取數(shù)據(jù)
本篇文章主要介紹了vue 配合vue-resource調(diào)用接口獲取數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06