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 相关文章推荐
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
Oct 24 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
Vue响应式原理详解
Apr 18 Javascript
详解cordova打包成webapp的方法
Oct 18 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 Javascript
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
微信小程序如何利用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
php PDO中文乱码解决办法
2009/07/20 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
php cli配置文件问题分析
2015/10/15 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
可输入的下拉框
2006/06/19 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
Django 大文件下载实现过程解析
2019/08/01 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
通过自学python能找到工作吗
2020/06/21 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
幼儿园儿童节主持词
2014/03/21 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
青年文明号申报材料
2014/12/23 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers