位置: IT常识 - 正文

uniapp自定义动态tabbar及全局挂载底部自定义组件(uniapp动态设置标题)

编辑:rootadmin
uniapp自定义动态tabbar及全局挂载底部自定义组件

推荐整理分享uniapp自定义动态tabbar及全局挂载底部自定义组件(uniapp动态设置标题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp动态修改样式,uniapp动态修改tabbar,uniapp动态启动页面,uniapp动态修改样式,uniapp 动态生成页面,uniapp自定义加载动画,uniapp动态修改样式,uniapp 动态生成页面,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇文章解决的问题如下:

1:uniapp在pages.json中定义的tabbar,在非tabbar页面的时候不会显示,所以自定义了一个tabbar组件。(注意是自定义组件不是官方的custom-tab-bar组件)

2:有些tabbar需要动态变化,会员登陆前和会员登陆后可能会需要在tabbar上面展示不同的项目,所以要做到动态判断

3:uniapp所有页面底部都插入同一个组件(例如版权信息,或右侧悬浮的内容),每个页面都引入一次太过麻烦,所以在main.js里面挂载一次就可以所有页面使用。

uniapp自定义动态tabbar及全局挂载底部自定义组件(uniapp动态设置标题)

一:自定义tabbar组件:(就不需要在pages.json里面再定义tabbar了)

<!-- @时间:2020-03-16 @描述:自定义底部导航栏 @使用: 在main.js全部引入: import tabBar from "@/pages/common/tabBar.vue" Vue.component('tabBar', tabBar) 在需要显示的页面底部添加: <view> <view>这里是页面内容代码区域</view>       // 其中uni-p-b-98是公共样式类名,表示padding-bottom: 98upx; 设置的98upx是和底部导航栏的高度保持一致,页面的内容就不会被底部导航遮挡住啦 <view class="uni-p-b-98"></view>       // 最后引入自定义组件,并传当前栏目对应的pagePath到自定义组件,显示当前栏目的选中样式 <tabBar :pagePath="'/pages/tabBar/home/home'"></tabBar> </view> --><template> <view class="uni-tabbar"> <view class="uni-tabbar__item" v-for="(item,index) in tabbar" :key="index" @tap="changeTab(item)"> <view class="icon" :class="[item.fontIcon , item.pagePath == pagePath?'uni-active':'']"></view> <!-- 上面使用的是字体图标,解决切换页面的时候图标会闪的效果,毕竟每切换一个页面都会闪一下不太好看,可以切换使用下面的图片方式 --> <view v-if="false" class="uni-tabbar__bd"> <view class="uni-tabbar__icon"> <image v-if="item.pagePath == pagePath" class="uni-w-42 uni-h-42" mode="aspectFit" :src="item.selectedIconPath"></image> <image v-else class="uni-w-42 uni-h-42" mode="aspectFit" :src="item.iconPath"></image> </view> </view> <view class="uni-tabbar__label" :class="{'active': item.pagePath == pagePath}"> {{item.text}} </view> </view> </view></template><script> export default { props: { pagePath: null }, data() { return { page: 'contact', showPage: false, containerHeight: 400, tabbar: [ { "pagePath": "/pages/tabBar/home/home", "iconPath": "/static/tabBar/home.png", "selectedIconPath": "/static/tabBar/home_col.png", "text": "首页", "fontIcon": "icon-shouye" },            // 这里是要动态切换的栏目,先隐藏,动态追加 // { // "pagePath": "/pages/tabBar/manage/manage", // "iconPath": "/static/tabBar/home.png", // "selectedIconPath": "/static/tabBar/home_col.png", // "text": "管理", // "fontIcon": "icon-guanli" // }, { "pagePath": "/pages/tabBar/person/person", "iconPath": "/static/tabBar/person.png", "selectedIconPath": "/static/tabBar/person_col.png", "text": "我的", "fontIcon": "icon-wode" } ] }; }, mounted() { // true为判断条件,根据实际的需求替换即可 if(true) { this.tabbar.splice(1,0, { "pagePath": "/pages/tabBar/manage/manage", "iconPath": "/static/tabBar/home.png", "selectedIconPath": "/static/tabBar/home_col.png", "text": "管理", "fontIcon": "icon-guanli" } ) } }, methods: { changeTab(item) { this.page = item.pagePath;          // 这里使用reLaunch关闭所有的页面,打开新的栏目页面 uni.reLaunch({ url: this.page }); }, } }</script><style lang="scss" scoped> [nvue] uni-scroll-view, [nvue] uni-swiper-item, [nvue] uni-view { flex-direction: unset; } [nvue-dir-column] uni-swiper-item, [nvue-dir-column] uni-view { flex-direction: unset; } .uni-tabbar { position: fixed; bottom: 0; z-index: 999; width: 100%; display: flex; justify-content: space-around; height: 98upx; padding: 16upx 0; box-sizing: border-box; border-top: solid 1upx #ccc; background-color: #fff; box-shadow: 0px 0px 17upx 1upx rgba(206, 206, 206, 0.32); .uni-tabbar__item { display: block; line-height: 24upx; font-size: 20upx; text-align: center; } .uni-tabbar__icon { height: 42upx; line-height: 42upx; text-align: center; } .icon { display: inline-block; } .uni-tabbar__label { line-height: 24upx; font-size: 24upx; color: #999; &.active { color: #1ca6ec; } } }</style>

然后在各页面中使用组件即可

**注意修改代码中的页面路径**

**注意使用字体图标的话需要先在APP.Vue中引入iconfont.css**

<tabBar :pagePath="'/pages/list/list'"></tabBar>

 **传入的路径用于当前项目高亮**

二:全局挂载自定义组件(在main.js中)

import Vue from 'vue'Vue.prototype.baseUrl = tools.baseUrlVue.config.productionTip = falseimport tabBar from "@/components/tabbar/tabbar.vue"Vue.component('tabBar', tabBar)import Aside from "@/components/aside/aside.vue"Vue.component('Aside', Aside)

**注意要放在import Vue之后才行**

然后在各个页面中无须再import,也无须再components注册,直接<Aside></Aside>就可以用了。

本文链接地址:https://www.jiuchutong.com/zhishi/289677.html 转载请保留说明!

上一篇:弗吉尼亚理工大学利用OpenText Exceed TurboX (ETX)对高性能图形应用程序进行访问(弗吉尼亚理工大学美国排名)

下一篇:最贵的微博是什么(史上最贵的微博)

  • 怎么取消钱袋宝签约(怎么取消钱袋宝快捷支付)

    怎么取消钱袋宝签约(怎么取消钱袋宝快捷支付)

  • 小米10pro相机怎么用(小米10pro相机怎么设置)

    小米10pro相机怎么用(小米10pro相机怎么设置)

  • 投屏是什么(无线投屏是什么)

    投屏是什么(无线投屏是什么)

  • p40悬浮球在哪(p40悬浮球哪关)

    p40悬浮球在哪(p40悬浮球哪关)

  • 电脑快捷重启按什么键(电脑快捷重启按哪个键)

    电脑快捷重启按什么键(电脑快捷重启按哪个键)

  • 小米手环2无法绑定手机(小米手环2无法开机怎么办)

    小米手环2无法绑定手机(小米手环2无法开机怎么办)

  • 电脑不支持5gwifi如何解决(电脑不支持5gwifi用连接线可以吗)

    电脑不支持5gwifi如何解决(电脑不支持5gwifi用连接线可以吗)

  • iphone7plus可以分屏吗(苹果7plus能分屏吗?)

    iphone7plus可以分屏吗(苹果7plus能分屏吗?)

  • 发微信怎么能撤回(发出微信怎么撤回来)

    发微信怎么能撤回(发出微信怎么撤回来)

  • 为啥华为p30pro摇晃里面会有异响(华为p30遥控器功能不见了)

    为啥华为p30pro摇晃里面会有异响(华为p30遥控器功能不见了)

  • 微信账单删了怎么恢复(微信账单删了怎么联系收款方)

    微信账单删了怎么恢复(微信账单删了怎么联系收款方)

  • 苹果x信息有个感叹号(iphone信息有个)

    苹果x信息有个感叹号(iphone信息有个)

  • 怎么关win10的杀毒软件(如何关闭win10的杀毒)

    怎么关win10的杀毒软件(如何关闭win10的杀毒)

  • word2019怎么自动生成目录(word2019怎么自动换行)

    word2019怎么自动生成目录(word2019怎么自动换行)

  • 京东碎屏险怎么理赔(京东碎屏险怎么转让)

    京东碎屏险怎么理赔(京东碎屏险怎么转让)

  • 苹果手机减弱动态效果有什么用(苹果手机减弱动态效果要开吗)

    苹果手机减弱动态效果有什么用(苹果手机减弱动态效果要开吗)

  • 华为20i什么时候上市(华为20s什么时候发布)

    华为20i什么时候上市(华为20s什么时候发布)

  • 华为智慧能力可以关闭吗(华为智慧能力可以卸载吗)

    华为智慧能力可以关闭吗(华为智慧能力可以卸载吗)

  • 拼多多天天领红包真的能提现么(拼多多天天领红包真的可以提现吗)

    拼多多天天领红包真的能提现么(拼多多天天领红包真的可以提现吗)

  • 黑鲨一代和二代的区别(黑鲨一代和二代区别大吗)

    黑鲨一代和二代的区别(黑鲨一代和二代区别大吗)

  • 荣耀20手电筒在哪(荣耀手电筒在手机哪里打开设置)

    荣耀20手电筒在哪(荣耀手电筒在手机哪里打开设置)

  • oppo手机复制的东西在哪里找(OPPO手机复制的历史记录)

    oppo手机复制的东西在哪里找(OPPO手机复制的历史记录)

  • 灯光璀璨的曼哈顿下城,美国纽约 (© New York On Air/Offset/Shutterstock)(灯光璀璨的夜晚)

    灯光璀璨的曼哈顿下城,美国纽约 (© New York On Air/Offset/Shutterstock)(灯光璀璨的夜晚)

  • 华为OD机试 - 租车骑绿岛(Java & JS & Python)(华为od机试题题库)

    华为OD机试 - 租车骑绿岛(Java & JS & Python)(华为od机试题题库)

  • 增值税进项发票怎么做账
  • 自己房子出租发布信息
  • 年度减免税限额
  • 企业如何帮员工交公积金
  • 资源税计入什么科目
  • 应交所得税的计算公式
  • 微信支付算库存现金还是银行存款
  • 税务局的信用等级是多少
  • 工亡赔偿金如何支付
  • 非流动资产处置损失包括哪些
  • 邮局可以开发票吗 税点多少
  • 甲方也要跟项目走的吧
  • 哪些单位和个人可构成全宗
  • 营改增后的民办养老院收入是否含增值税收入?
  • 去税务局交的社保能退么
  • 房地产销售税额抵减
  • 发票已入账跨年可以红冲重开吗
  • 公司自建房产的房产证
  • 赠送的商品怎么入账
  • 外购商品用于招待怎么做账
  • 成本控制的基本原则包括
  • 餐饮研发费用确认条件
  • 小规模企业企业所得税优惠政策2022年
  • 购车发票怎么做分录
  • 个税专项扣除有几项
  • 企业所得税汇算表
  • PHP:xml_parser_create()的用法_XML解析器函数
  • php如何实现多进程
  • 代扣的工会会费和工会经费
  • 那些收入不用缴税
  • file*fp什么意思
  • 对其他公司的建议
  • 新空调的安装费是多少
  • 钢铁企业成本核算表
  • 股权投资收益需要缴纳企业所得税吗
  • python字符串操作作业
  • javascript零基础
  • 税务申报说明怎么写范文
  • vue 组件
  • thinkphp如何连接数据库
  • 权益法转换为成本法
  • 固定资产处置金额是什么意思
  • 法人股东分红要缴纳多少税
  • 日常收集整理常用工具
  • 深入理解jvm第三版pdf百度云
  • 销售自用的生产设备一台
  • 短期借款有哪几种类型
  • 事业单位购入
  • 事业单位零余额账户使用流程
  • 专项应付款支出的账务处理
  • 所得税汇算清缴需要调增的项目
  • 明细账分类账登记
  • 企业会计准则中职工薪酬
  • sql数据库监控工具
  • mysql 修改值
  • window怎么操作
  • 无法将此电脑升级到最新版本的windows10
  • window10预览在哪里找
  • WIN10系统硬盘设置
  • 创建一个windows
  • centos真机安装后只有lo
  • 注销与退出登录
  • ubuntu如何清理缓存
  • linux gunzip
  • 如何调整心态和正确处理情绪
  • win7屏幕颜色不正常
  • linux安装fping
  • win8.1技巧
  • javascript中的函数
  • c和unity3d
  • node-red 全局变量
  • javascript io
  • unity3d跑酷游戏教程
  • 关于angularjs1说法,错误的是
  • jquery控制滚动条位置
  • javascript开发app教程
  • jquery层次选择器主要包括哪几种分类
  • 出口免税不退税主要适用于什么情形
  • 如何查发票是否作废
  • 金融知识宣传的建议
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设