vue如何實現(xiàn)自定義底部菜單欄
更新時間:2019年07月01日 14:30:02 作者:小李不小
這篇文章主要介紹了vue如何實現(xiàn)自定義底部菜單欄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
最近vue不是特別火,自己想寫一個vue 的底部菜單欄,然后試著開始寫,起來還是聽痛苦的,但是還是寫出來,這個過程重查詢了一些資料和看了一些視頻。
1 寫好界面
這是我寫好的四個界面
2 在router.js重定義路由
在一級路由下面定義自己tabbr的子路由。
routes: [ { path: '/', name: 'index', component:()=>import('./views/index'), //懶加載引入,路由 children:[ {path:'',redirect:'/charts'},//重定項 {path:'/charts',name:'charts',component:()=>import('./views/charts.vue')}, {path:'/adiscover',name:'adiscover',component:()=>import('./views/adiscover.vue')}, {path:'/ybutton',ybutton:'ybutton',component:()=>import('./views/ybutton.vue')}, {path:'/me',name:'me',component:()=>import('./views/me.vue')} ] }, ]
3 封裝tabbar底部菜單欄 組件
<template> <!-- <div class="footbar"> <router-link to='/' tag='div'> <span> <img :src="this.$route.path=='/charts'?'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3100024767,29226190&fm=58':'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3993527673,913427098&fm=58'" alt=""> </span> <span>資產(chǎn)</span> </router-link> <router-link to='/adiscover' tag='div'> <span> <img :src="this.$route.path=='/adiscover'?'https://10.url.cn/qqcourse_logo_ng/ajNVdqHZLLAcYPom22osQf2IIdMD25ofYUibd1USSQFHdiaUIiavicpAibgSReIqCky8gqY8ku5qdXsc/356':'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3993527673,913427098&fm=58'" alt=""> </span> <span>商城</span> </router-link> <router-link to='/ybutton' tag='div'> <span> <img :src="this.$route.path=='/ybutton'?'https://10.url.cn/qqcourse_logo_ng/ajNVdqHZLLAcYPom22osQf2IIdMD25ofYUibd1USSQFHdiaUIiavicpAibgSReIqCky8gqY8ku5qdXsc/356':'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3993527673,913427098&fm=58'" alt=""> </span> <span>交易</span> </router-link> <router-link to='/me' tag='div'> <span> <img :src="this.$route.path=='/me'?'https://10.url.cn/qqcourse_logo_ng/ajNVdqHZLLAcYPom22osQf2IIdMD25ofYUibd1USSQFHdiaUIiavicpAibgSReIqCky8gqY8ku5qdXsc/356':'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3993527673,913427098&fm=58'" alt=""> </span> <span>我的</span> </router-link> </div> --> <div class="footer"> <router-link v-for="(item,index) in data" :key="index" :to="item.path"> <div class="divs" @click="tab_click(item.path)"> <i :class="item.icon==true?'red':'bloack'">1</i> <i>{{item.title}}</i> </div> </router-link> </div> </template> <script> import { constants } from 'crypto'; export default { props:{ data:Array }, data(){ return{ datai:this.data } }, created(){ }, mounted(){ console.log(this.data) }, methods:{ tab_click(path){ const that=this; let datary=this.data; for(let i=0;i<datary.length;i++){ datary[i].icon=false; if(datary[i].path==path){ datary[i].icon=true; console.log('---------',datary[i].path) } } this.datai=datary; console.log(datary) } } } </script> <style scoped> .footer{ position: fixed; bottom:0px; left:0px; width:100%; display:flex; justify-content: space-between; } .footer .divs{padding:10px;} .red{color:red;font-size:14px;} .bloack{font-size:14px;color:black;} /* ---------------- */ .footbar{ width: 100%; height: 2.613333rem; position: fixed; bottom: 0; display: flex; align-items: center; background: white; border-top: 1px solid #eeeeee; color: #999999; } .footbar span{ display: block; font-size: .64rem; } .footbar div{ flex: 1; text-align: center; } .footbar img{ height: 1.066667rem; } .footbar .router-link-exact-active{ color: #2F83C3; } .footbar .active{ color: #2F83C3; } </style>
4 顯示底部菜單欄的界面 引入tabbar 組件
<template> <div class="index"> 主頁 <router-view></router-view> <tabbar :data="tabbarData"/> </div> </template> <script> import tabbar from '../components/tabbaer' export default { name:'index', data() { return { tabbarData:[ {title:'微信',icon:true,path:'/charts'}, {title:'通訊錄',icon:false,path:'/adiscover'}, {title:'發(fā)現(xiàn)',icon:false,path:'/ybutton'}, {title:'我的',icon:false,path:'/me'}, ] } }, components:{ tabbar, }, } </script> <style scoped> .index{ width:100%; height:100%; overflow: hidden; padding:16px; box-sizing:border-box; } </style>
5 這就是最終結(jié)果
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Vue中keep-alive的作用及使用方法
keep-alive是Vue的內(nèi)置組件,當它包裹動態(tài)組件時,會緩存不活動的組件實例,該組件將不會銷毀,這篇文章主要介紹了關(guān)于Vue中keep-alive的作用是什么?怎么使用,需要的朋友可以參考下2023-04-04vue3父子同信的雙向數(shù)據(jù)的項目實現(xiàn)
我們知道的是,父傳子的通信,和子傳父的通信,那如何實現(xiàn)父子相互通信的呢,本文就來詳細的介紹一下,感興趣的可以了解一下2023-08-08vue使用v-model進行跨組件綁定的基本實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于vue使用v-model進行跨組件綁定的基本實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04vue使用vuedraggable插件實現(xiàn)拖拽效果
這篇文章主要介紹了vue使用vuedraggable插件實現(xiàn)拖拽效果,本文分步驟介紹了安裝vuedraggable插件的方法及頁面引入的方法,需要的朋友可以參考下2024-04-04