vue如何实现自定义底部菜单栏


Posted in Javascript onJuly 01, 2019

最近vue不是特别火,自己想写一个vue 的底部菜单栏,然后试着开始写,起来还是听痛苦的,但是还是写出来,这个过程重查询了一些资料和看了一些视频。

1 写好界面

这是我写好的四个界面

vue如何实现自定义底部菜单栏

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>资产</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:'发现',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 这就是最终结果

vue如何实现自定义底部菜单栏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现计算加载页面所用的时间
Apr 02 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
Jan 14 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
vue-cli3跨域配置的简单方法
Sep 06 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 #Javascript
vue中的面包屑导航组件实例代码
Jul 01 #Javascript
Vue动态面包屑功能的实现方法
Jul 01 #Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 #Javascript
基于Vue SEO的四种方案(小结)
Jul 01 #Javascript
JavaScript一元正号运算符示例代码
Jun 30 #Javascript
重学JS之显示强制类型转换详解
Jun 30 #Javascript
You might like
使用apache模块rewrite_module (转)
2007/02/14 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
Javascript中的数学函数集合
2007/05/08 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python Django批量导入数据
2016/03/25 Python
python3编码问题汇总
2016/09/06 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python监控nginx端口和进程状态
2019/09/06 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
Python模块常用四种安装方式
2020/10/20 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
大学生水文观测实习自我鉴定
2013/09/29 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
python如何获取网络数据
2021/04/11 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python