vue實(shí)現(xiàn)nav導(dǎo)航欄的方法

每一個(gè)網(wǎng)頁項(xiàng)目都少不了導(dǎo)航欄,通過原始的方法基本上都是可以寫出來的。但是要寫出代碼量少,冗余度低的代碼就要動腦子思考一下了。

目前成都創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、武江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

最近寫了一個(gè)百度地圖的項(xiàng)目,要求底部有一個(gè)導(dǎo)航欄。具體如下圖:

vue實(shí)現(xiàn)nav導(dǎo)航欄的方法

首先,拿到了底部導(dǎo)航欄的所有圖標(biāo)圖片,圖片都有兩種?;疑拇砦催x中,選中的用帶樣色的圖片替換。

先看一下,組件中 html結(jié)構(gòu):通過vue提供的v-for方法,進(jìn)行遍歷顯示footNav這個(gè)數(shù)組。數(shù)組里邊存放著{title:"銀行",url:" ",url1:" "},將圖片的 src與isSelect進(jìn)行綁定,并進(jìn)行判斷,如果等于當(dāng)前的title時(shí)即為選中當(dāng)前的導(dǎo)航,顯示選中時(shí)的圖片url1。

<div class="footer">
 <ul>
 <li v-for="item in footNav" @click="selectMapNav(item.title)">
 <img :src="isSelect === item.title ? item.url1 : item.url" alt="">
 <p>{{item.title}}</p>
 </li>
 </ul>
</div>

樣式用的是擴(kuò)展語言less寫的,應(yīng)該都能看懂,只是簡單的嵌套了一下。給這個(gè)地步加一個(gè)寬為100%,固定的高度。因?yàn)橐潭ㄔ诘撞匡@示,所以加了一個(gè)固定定位和背景顏色。寫的是手機(jī)端項(xiàng)目,瀏覽器都比較新,所以不用考慮兼容問題。大膽的flex布局可以很方便的實(shí)現(xiàn)導(dǎo)航欄。

.footer ul{
 width:100%;
 height:50px;
 position:fixed;
 bottom:0;
 z-index:1;
 background-color:#fff;
 display:flex;
 li{
 text-align:center;
 flex:1;
 img{height:23px;width:23px;margin-top:5px;}
 p{font-size:0.1rem;height:15px;line-height:10px;}
 }
}

在vue data () 中定義一個(gè)數(shù)組,里邊存放每一個(gè)導(dǎo)航的標(biāo)題,如‘銀行',未選中時(shí)顯示的圖片url,選中時(shí)的圖片url1。isSelect表示當(dāng)前選中的,默認(rèn)選中銀行。

isSelect: '銀行',
footNav: [{title: '銀行', url: '../../../static/baiduMap/23@2x.png', url1: '../../../static/baiduMap/22@2x.png'},
 {title: '公交 ', url: '../../../static/baiduMap/11@2x.png', url1: '../../../static/baiduMap/10@2x.png'},
 {title: '地鐵 ', url: '../../../static/baiduMap/13@2x.png', url1: '../../../static/baiduMap/12@2x.png'},
 {title: '教育 ', url: '../../../static/baiduMap/15@2x.png', url1: '../../../static/baiduMap/14@2x.png'},
 {title: '醫(yī)院 ', url: '../../../static/baiduMap/17@2x.png', url1: '../../../static/baiduMap/16@2x.png'},
 {title: '休閑 ', url: '../../../static/baiduMap/19@2x.png', url1: '../../../static/baiduMap/18@2x.png'},
 {title: '購物 ', url: '../../../static/baiduMap/21@2x.png', url1: '../../../static/baiduMap/20@2x.png'}
]

在methods方法中,寫上html中調(diào)用的事件。通過html結(jié)構(gòu)層那里的點(diǎn)擊事件selectMapNav(item.title)傳過來的title賦值給isSelect即可實(shí)現(xiàn)導(dǎo)航欄的點(diǎn)擊狀態(tài)的變化。

selectMapNav (title) {
 this.isSelect = title }

來看一下最終的結(jié)果,很完美。

vue實(shí)現(xiàn)nav導(dǎo)航欄的方法

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

本文題目:vue實(shí)現(xiàn)nav導(dǎo)航欄的方法
路徑分享:http://muchs.cn/article20/ghspjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、品牌網(wǎng)站制作自適應(yīng)網(wǎng)站、品牌網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化