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

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

  • 世人对袁隆平的评价句子(名人对袁隆平评价的句子)(世人对袁隆平的评价语)

    世人对袁隆平的评价句子(名人对袁隆平评价的句子)(世人对袁隆平的评价语)

  • 烂橘子怎么加好友(烂橘子0b/sec)

    烂橘子怎么加好友(烂橘子0b/sec)

  • airpods硬壳取不下来(airpods硬壳拆不下来怎么办)

    airpods硬壳取不下来(airpods硬壳拆不下来怎么办)

  • 怎么突然不能极速退款了(为什么突然不能动了)

    怎么突然不能极速退款了(为什么突然不能动了)

  • 暂时无法提供白条服务是什么意思(暂时无法提供白条怎么办)

    暂时无法提供白条服务是什么意思(暂时无法提供白条怎么办)

  • 苹果手机照片流是什么意思(苹果手机照片流怎么查看)

    苹果手机照片流是什么意思(苹果手机照片流怎么查看)

  • 未兼容android10系统什么意思(未兼容android10怎么办)

    未兼容android10系统什么意思(未兼容android10怎么办)

  • 短信隐藏提醒什么意思(短信隐藏提醒后还能收到信息吗)

    短信隐藏提醒什么意思(短信隐藏提醒后还能收到信息吗)

  • 怎么更改微信名(微信公众号怎么更改微信号)

    怎么更改微信名(微信公众号怎么更改微信号)

  • 爱剪辑有电脑版的吗(爱剪辑3.0电脑版)

    爱剪辑有电脑版的吗(爱剪辑3.0电脑版)

  • 抖音怎样改变推荐内容(抖音如何改变推荐内容)

    抖音怎样改变推荐内容(抖音如何改变推荐内容)

  • 手机下载电视剧怎么下载(手机下载电视剧太慢怎么办)

    手机下载电视剧怎么下载(手机下载电视剧太慢怎么办)

  • 手机北斗导航如何开启(手机北斗导航如何下载)

    手机北斗导航如何开启(手机北斗导航如何下载)

  • 电脑命令窗口怎么打开(电脑命令窗口怎么换行)

    电脑命令窗口怎么打开(电脑命令窗口怎么换行)

  • 华为watch2能打电话吗(华为watch2打电话按键)

    华为watch2能打电话吗(华为watch2打电话按键)

  • 三星s6的呼叫转移怎么设置(三星s6怎么呼叫转接)

    三星s6的呼叫转移怎么设置(三星s6怎么呼叫转接)

  • tpc数据线不分正反吗(type-c数据线正负极)

    tpc数据线不分正反吗(type-c数据线正负极)

  • 华为p30pro是5G手机吗(华为p30pro是5g手机吗)

    华为p30pro是5G手机吗(华为p30pro是5g手机吗)

  • 抖音已重置是封号了吗(抖音封号已重置是什么意思)

    抖音已重置是封号了吗(抖音封号已重置是什么意思)

  • 嗨来电这个软件安全吗(嗨来电下载安装)

    嗨来电这个软件安全吗(嗨来电下载安装)

  • vivox27闪充失灵怎么解决(vivox23闪充失灵)

    vivox27闪充失灵怎么解决(vivox23闪充失灵)

  • oppo开发者选项怎么保存(oppo开发者选项怎么设置最流畅)

    oppo开发者选项怎么保存(oppo开发者选项怎么设置最流畅)

  • 来信息亮屏怎么设置(来信息亮屏怎么弄)

    来信息亮屏怎么设置(来信息亮屏怎么弄)

  • wps循环引用怎么取消(wps循环引用警告怎么取消)

    wps循环引用怎么取消(wps循环引用警告怎么取消)

  • win10锁屏壁纸自动换设置教程(win10锁屏壁纸自动更新)

    win10锁屏壁纸自动换设置教程(win10锁屏壁纸自动更新)

  • win10远程连接失败怎么办(win10远程桌面连接不成功)

    win10远程连接失败怎么办(win10远程桌面连接不成功)

  • 凯恩戈姆山国家公园的欧亚红松鼠,苏格兰高地 (© Scotland: The Big Picture/Minden Pictures)(凯恩kane)

    凯恩戈姆山国家公园的欧亚红松鼠,苏格兰高地 (© Scotland: The Big Picture/Minden Pictures)(凯恩kane)

  • 如何确定关联方及关联关系
  • 汇票签收后可以撤回吗
  • 代开专票上的税额比电子缴款凭证上的税额少怎么调整
  • 农产进项税是多少税率
  • 有限合伙企业要交增值税吗
  • 单位买绿植可以报销吗
  • 小规模纳税人核算方式选什么
  • 现金股利什么时候发放
  • 外经证预交几个点
  • 同一控制企业合并的特征包括
  • 增值税出口免退什么意思
  • 上市公司股票增持是什么回事
  • 医院收到工会的钱怎么办
  • 冲减预提费用
  • 增值税专用发票开错了咋办
  • 增值税发票进项抵扣是什么意思
  • 增资印花税如何申报缴纳
  • 超市购物卡开票可以做账吗
  • 企业注销前注册资本必须到账吗
  • 球场水面办鱼业养殖的税收筹划分析
  • 什么是劳动保护费支出
  • 购买银行承兑汇票的会计分录
  • 简易征收发票认证了之后怎么处理
  • 红字信息表跨越可以撤销吗
  • 出口0税率是免抵退还是免税
  • 王者荣耀中孙膑是男的女的
  • 关于暂时性差异的所得税会计处理,正确的是
  • linux命令“ln file1 file2”的含义是
  • linux配置ssh免密
  • 如何修复错误 OC3 INVT CHF100a
  • 代理公司变更收费标准
  • 支付货款的流程
  • 消费税不可抵扣已纳税款
  • AUTOMATIC1111/stable-diffusion-webui安装教程
  • 废品损失属于产品生产成本吗
  • php zmq
  • 收取增值税一般是多少
  • 员工购买住房公积金申请
  • php 5
  • 长期待摊费计入哪个科目
  • 电商后台管理系统简介
  • vue.js简介
  • 固定资产加速折旧是什么意思
  • 未确认融资费用报表填在哪个科目
  • 设计服务的成本票可以暂估吗
  • 社保缴费基数是怎么确定的
  • mysql union or
  • 税务登记程序有哪些
  • 填写记账凭证的日期一般是会计人员填制记账凭证的
  • 车船税不计入发票
  • 加工费计入什么科目制造企业成本
  • 出租车定额发票代码含义
  • 代扣代缴附加税减免政策文件
  • 普通的收据可以入账吗
  • 员工餐费报销分录怎么弄
  • 一般纳税人增值税申报表怎么填写
  • 打印的机票行程单怎么看
  • 哪些减值准备一经计提不得转回
  • 在建工程的进项税额不再分2年抵扣
  • 跨年做进项税额转出
  • mysql的min函数
  • 基于mysql的sql应用
  • solaris查找文件命令
  • dell power manager是什么
  • diy组装电脑前置怎么样
  • xp系统纯净版gho
  • xp系统怎么没有无线网络连接
  • centos如何查看服务进程
  • centos硬件配置
  • rnbrcache.exe是什么意思
  • 网卡破解
  • win7如何彻底卸载软件
  • opengl geometry shader
  • linux tcp keepalive
  • css网页布局方式
  • pcs可以使用什么在任何地方以各种速率与网络保持联络
  • dom方法总结
  • 税务局 笔录
  • 小规模纳税人房土两税优惠政策
  • 建筑企业个人所得税管理办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设