这个想法源于最近自己在开发一个移动端博客的一个底部导航栏,原型设计如下:

我们来分析一下这个导航栏,其实很简单啦,就是自适应固定在底部 我们可以使用CSS3属性display:flex设置父级盒子为伸缩盒子模型,子元素设置flex:1自适应大小。

html布局如下

<template><div class="footer"><div v-for='(item,index) of items' :key="index" :class='[item.cls,{on:index === idx}]' @click="change(item,index)"><img :src="index===idx?item.srcSelect:item.src" v-if="showIconOrSrc"><i :class="index===idx?item.iconSelect:item.icon" v-if="!showIconOrSrc"></i><span :class="['colorChange',{on:index===idx}]" >{{item.name}}</span></div></div>
</template>
复制代码

样式如下:

<style  scoped>
.footer{display: flex;position: fixed;left: 0;bottom: 0;box-sizing: border-box;background: rgb(248, 248, 248);width: 100%;
}
div{flex: 1;padding: 5px;
}
div img{width: 30px;height: 30px;
}
div span{display: block;color:black;color: rgb(168, 168, 168);
}
.on{color: rgb(25, 137, 250);
}
</style>
复制代码

此间碰到一个路由嵌套问题

router.js配置 这个组件可以设置是iconfont图标样式,也可以使用图片 js逻辑如下:

<script type="text/javascript">
// eslint-disable-next-line
/* eslint-disable */export default{props:{idx: {type: Number,default: 0,},showIconOrSrc:{// true表示显示图片途径 src// false 表示icon图标类名type: Boolean,default: true,},items: {type: Array,default: function(){return ([{cls:"home",name:"首页",push:"/home",icon: 'iconfont icon-shouye',iconSelect: 'iconfont icon-shouye',src:"http://118.190.209.124/img/home_normal.png",srcSelect:"http://118.190.209.124/img/home_selected.png"},{cls:"shares",name:"归档",push:"/shares",icon: "iconfont icon-guidang",iconSelect: 'iconfont icon-guidang',src:"http://118.190.209.124/img/guidang_normal.png",srcSelect:"http://118.190.209.124/img/guidang_selected.png"},{cla:"community",name:"博主",push:"/community",icon: "iconfont icon-bozhuguanli",iconSelect: 'iconfont icon-bozhuguanli',src:"http://118.190.209.124/img/user_normal.png",srcSelect:"http://118.190.209.124/img/user_selected.png"},{cla:"mine",name:"链接",push:"/mine",icon: "iconfont icon-lianjie2",iconSelect: 'iconfont icon-lianjie2',src:"http://118.190.209.124/img/lianjie_normal.png",srcSelect:"http://118.190.209.124/img/lianjie_selected.png"}]);}}},data(){return {}},methods: {change(item,index) {this.$router.push(item.push);this.$emit("change",index)}}} </script>
复制代码

接下来就是引用:

<template><div class="box"><router-view></router-view><v-navbar :items="items" :showIconOrSrc="showIconOrSrc" :idx="idx" @change="change"></v-navbar></div>
</template><script>
import NavBar from "@/navbar/navbar"
export default {name: 'navbar',data() {return {idx:0,showIconOrSrc: false,items: [{cls:"home",name:"首页",push:"/home",icon: 'iconfont icon-shouye',iconSelect: 'iconfont icon-shouye',src:"http://118.190.209.124/img/home_normal.png",srcSelect:"http://118.190.209.124/img/home_selected.png"},{cls:"shares",name:"归档",push:"/shares",icon: "iconfont icon-guidang",iconSelect: 'iconfont icon-guidang',src:"http://118.190.209.124/img/guidang_normal.png",srcSelect:"http://118.190.209.124/img/guidang_selected.png"},{cla:"community",name:"博主",push:"/community",icon: "iconfont icon-bozhuguanli",iconSelect: 'iconfont icon-bozhuguanli',src:"http://118.190.209.124/img/user_normal.png",srcSelect:"http://118.190.209.124/img/user_selected.png"},{cla:"mine",name:"链接",push:"/mine",icon: "iconfont icon-lianjie2",iconSelect: 'iconfont icon-lianjie2',src:"http://118.190.209.124/img/lianjie_normal.png",srcSelect:"http://118.190.209.124/img/lianjie_selected.png"}],}},components: {"v-navbar": NavBar,},methods: {change(index){this.idx = index}}
}
</script><style scoped>
.box{width: 100%;height: 100%;
}
</style>
复制代码

最终效果就是入下图:

开发vue底部导航栏组件相关推荐

  1. vue底部跳转_详解Vue底部导航栏组件

    不多说直接上代码 BottomNav.vue: {{item.name}} export default{ props:['idx'], data(){ return { items:[{ cls:& ...

  2. vue.js项目实战运用篇之抖音视频APP-第三节:底部导航栏组件功能

    [温馨提示]:若想了解更多关于本次项目实战内容,可转至vue.js项目实战运用篇之抖音视频APP-项目规划中进一步了解项目规划. [项目地址] 项目采用Git进行管理,最终项目将会发布到GitHub中 ...

  3. 微信小程序开发错误——底部导航栏没有显示完全

    微信小程序开发错误--底部导航栏没有显示完全 原因:由于在app.json中设置跳转页面时,假设有A.B.C.D四个图标(点击可以跳转),B和C的跳转页面相同,C的图标就会覆盖B的图标,B的图标就相当 ...

  4. 前端 vue 自定义导航栏组件高度及返回箭头 自定义 tabbar 图标

    前端vue自定义导航栏组件高度及返回箭头 自定义tabbar图标, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12986 喜 ...

  5. vue底部导航栏(选中状态刷新不消失)解决

    我们用Vue写手机端的项目,经常会写底部导航栏,我这里总结一套比较方便实用的底部导航栏方法,并且可以解决浏览器刷新选中状态消失的问题.也可以选择自适应屏幕.看一下效果,底部的图标是我自己找的,选中和未 ...

  6. 【Flutter】StatefulWidget 组件 ( 底部导航栏组件 | BottomNavigationBar 组件 | BottomNavigationBarItem 组件 | 选项卡切换 )

    文章目录 一.BottomNavigationBar 组件 二.BottomNavigationBarItem 组件 三.BottomNavigationBar 底部导航栏代码示例 四.BottomN ...

  7. 小程序开发|uniapp底部导航栏的如何设置

    1.进行小程序开发之前自行下载 HBuilder X的压缩包,它是不需要进行安装的解压以后,将HBuilder X.exe文件拖到桌面上就可直接使用: 2.点击HBuilder X,新建项目,起一个项 ...

  8. android 开发实例 底部导航栏(1)

    1.使用LinearLayout 底部布局+imageView 实现 底部四个主导航页面 布局文件  activity_main.xml <LinearLayout xmlns:android= ...

  9. Android开发之底部导航栏标准

    以下是封装的库源码: 1 package com.example.oldtab; 2 3 import java.util.ArrayList; 4 5 import android.content. ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+Brewer调色板)实战
  2. matlab2014仿真pid程序,先进 PID 控制及其 MATLAB 仿真 (PDF+程序)
  3. anaconda能跑c语言哪,anaconda环境下实现SiamCAR
  4. python各种类型转换-int,str,char,float,ord,hex,oct等
  5. 这家厂商正式宣布退出手机市场:将加强汽车零部件业务
  6. vba显示正在加载_利用VBA代码显示工作簿的路径及完全路径的方案及对工作薄的操作...
  7. python写入指定路径的文件_python 从shell读取指定文件以及写入指定文件
  8. 第006讲 多媒体页面 标签汇总
  9. Python scapy网络包嗅探模块(转载)
  10. GAN 网络讲解(一):生成式对抗网络(GANs)简介
  11. webview的白屏,和硬件加速
  12. 个人作业2——集大通APP案例分析
  13. 应急通信于气象雷达的应用
  14. 《多基因病的遗传》学习笔记
  15. Bug随手记----关于java.lang.IllegalStateException: The following classes could not be excluded because the
  16. python基础-异常处理try-except
  17. R系银河麒麟配置本地镜像源
  18. 2016版excel_开启下一个十年,全新 Microsoft 365 订阅版终于来了!
  19. wifi服务器维护需要多长时间,WIFI服务器设置及维护.ppt
  20. VM虚拟机开机黑屏解决方法(转载)

热门文章

  1. 超经典的存储过程分页 ;-) 引自CSDN网友所作
  2. bg和fg指令(整理)以及 Linux中Ctrl+C、Ctrl+D等按键操作进程相关命令
  3. SVN的标准目录结构:trunk、branches、tags
  4. readonly时禁用删除键,readonly按删除键后页面后退解决方案
  5. L4,C16:差1墩,从张数最多的套上去找
  6. (原创)用讯飞语音实现人机交互的功能
  7. Chromium浏览器之渲染引擎Blink
  8. x86汇编指令具体解释
  9. (How to)Windows Live Writer使用技巧
  10. LINUX下PHP使用PDO访问MYSQL的连接设置注意事项