位置: 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)对高性能图形应用程序进行访问(弗吉尼亚理工大学美国排名)

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

  • 中国邮政快递客服电话怎么转人工(中国邮政快递客服电话)(中国邮政快递客服人工)

    中国邮政快递客服电话怎么转人工(中国邮政快递客服电话)(中国邮政快递客服人工)

  • 苹果13pro防水吗(苹果手机13防水吗)

    苹果13pro防水吗(苹果手机13防水吗)

  • 状态函数有哪些性质(不属于状态函数有哪些)

    状态函数有哪些性质(不属于状态函数有哪些)

  • 苹果手机耗电突然变快(苹果手机耗电突然变快是怎么回事)

    苹果手机耗电突然变快(苹果手机耗电突然变快是怎么回事)

  • 抖音的抖音钻卡怎么获得(抖音钻卡最不好得的是什么)

    抖音的抖音钻卡怎么获得(抖音钻卡最不好得的是什么)

  • 苹果11刚买几天出现卡机卡顿(苹果11刚买几天就发热)

    苹果11刚买几天出现卡机卡顿(苹果11刚买几天就发热)

  • 华为mate30来信息指示灯在哪里设置(华为mate30来信息闪灯怎么设置)

    华为mate30来信息指示灯在哪里设置(华为mate30来信息闪灯怎么设置)

  • 苹果id一般是什么格式(苹果id一般是什么组合icloud)

    苹果id一般是什么格式(苹果id一般是什么组合icloud)

  • 视频通话没声音怎么回事

    视频通话没声音怎么回事

  • 钉钉退出企业后考勤还在么(钉钉退出企业后群还在吗)

    钉钉退出企业后考勤还在么(钉钉退出企业后群还在吗)

  • 苹果6s电池容量多少(苹果6s电池容量8000多毫安是真的吗)

    苹果6s电池容量多少(苹果6s电池容量8000多毫安是真的吗)

  • 快手直播延迟多少秒(快手直播间延迟多少秒)

    快手直播延迟多少秒(快手直播间延迟多少秒)

  • 手机拍出来的照片为什么是倒的?(手机拍出来的照片和本人一样吗)

    手机拍出来的照片为什么是倒的?(手机拍出来的照片和本人一样吗)

  • 华为mate30pro拍照教程(华为mate30pro拍照变成绿色)

    华为mate30pro拍照教程(华为mate30pro拍照变成绿色)

  • mate20有没有无线充电(华为mate20支持无线)

    mate20有没有无线充电(华为mate20支持无线)

  • 淘宝抢购提醒在哪里看(淘宝抢购提醒在哪里)

    淘宝抢购提醒在哪里看(淘宝抢购提醒在哪里)

  • vue视频怎么加音乐(vue视频怎么添加背景图片)

    vue视频怎么加音乐(vue视频怎么添加背景图片)

  • 抖音里照片很快的节奏怎么做成的(抖音照片怎么让照片速度快一点)

    抖音里照片很快的节奏怎么做成的(抖音照片怎么让照片速度快一点)

  • 美团学生认证在哪(美团学生认证在哪看有没有成功)

    美团学生认证在哪(美团学生认证在哪看有没有成功)

  • 崽崽怎么换自己的头像(崽崽怎么换自己相册的头像2021)

    崽崽怎么换自己的头像(崽崽怎么换自己相册的头像2021)

  • 苹果手机怎么下载两个qq(苹果手机怎么下微信分身)

    苹果手机怎么下载两个qq(苹果手机怎么下微信分身)

  • 微信群禁言在哪里设置(微信群禁言在哪里开?)

    微信群禁言在哪里设置(微信群禁言在哪里开?)

  • 如何把文件夹加密码锁(如何把文件夹加密码锁手机)

    如何把文件夹加密码锁(如何把文件夹加密码锁手机)

  • 工资记借方还是贷方
  • 不动产统一发票图片
  • 股东股权转让印花税公司可以报销吗
  • 免交附加税政策
  • 个体户超过3万交个人所得税
  • 减免增值税申报表
  • 资产减值损失在利润表怎么填列
  • 计提代扣代缴个人缴纳的社会保险费分录
  • 缴纳个人所得税扣除项目
  • 旧公司库存如何管理
  • 最新出口退税申报流程
  • 专项土地补偿款怎么入账?
  • 建筑物加高违法么
  • 上个月的进项发票可以这个月勾选吗
  • 销售成本结转中的库存商品的单价错了怎么改u8
  • 投资收益会计处理
  • 应缴纳增值税计算公式
  • 无形资产摊销可以按照其价值和使用情况
  • 预收房屋租金如何交房产税
  • 公司招待技术维护方案
  • 维修设备领用材料会计分录怎么写
  • 租房合同开发票的金额要和合同一致吗
  • 季报现金流量表怎么填
  • 免税和零税率和税率区别
  • 收到上月发票怎么写分录
  • 企业是核定征收还是查账征收怎么查
  • 普通支票如何转账
  • 报税期间如何开发票?
  • 电脑怎么安装双显卡
  • win 11操作系统
  • 利润分配属于什么活动
  • 用系统自带命令行安装WIN10
  • uniapp微信小程序支付流程
  • 想要探究的问题
  • 销售点的增值税计算公式
  • 解决脱发的8个方法
  • 房产前期开发
  • 零星采购无票怎么办
  • 结转制造费用用什么科目
  • thinkphp教程
  • 个体工商户的酒店增值税率是多少
  • 医疗机构收据
  • php上传大视频
  • access微软
  • db2 deadlock
  • 党建经费提取是上年度还是下年
  • 将自产产品用于赠送
  • 专用发票与普通发票的区别有
  • 坏账准备的账务处理会计分录
  • 银行承兑汇票贴现利息怎么算
  • 期末贷方余额什么意思
  • 工资社保医保计算
  • 债券分期付息到期还本的意思
  • 日常费用报销管理制度
  • 实物投资的会计科目
  • 总分类账示例
  • 银行存款日记账填写样本图
  • 直接计算法是依据零件图样上给定的尺寸
  • 会计报表分析的方法
  • win10系统崩溃怎么修复开不了机
  • 数据中心为什么要建在山洞里
  • solaris配置ip地址
  • win7关闭窗口的方式有哪些
  • linux ldt
  • windowsxp入门
  • qq远程桌面操作
  • win7如何升级到win10有什么要求
  • 勒索病毒一般勒索多少钱
  • linux we
  • node-red 全局变量
  • shell嵌套for循环
  • unity平面透明
  • 百度坐标转换成WGS84坐标
  • python调用python代码
  • javascript面向对象精要pdf
  • 上海社保基数对照表
  • 福州市税务局领导班子成员名单
  • 税务注销了怎么查看纳税申报表
  • 重庆国税12316
  • 增值税电子专用发票如何进行冲红处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设