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

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

  • 怎么查看自己淘宝id(怎么查看自己淘宝店铺)

    怎么查看自己淘宝id(怎么查看自己淘宝店铺)

  • 健康码是不是自动定位(健康码是随机的还是固定的)

    健康码是不是自动定位(健康码是随机的还是固定的)

  • 小红书安全认证怎么回事(小红书安全认证进不去)

    小红书安全认证怎么回事(小红书安全认证进不去)

  • 2016年超级计算机叫什么(2016年超级计算机)

    2016年超级计算机叫什么(2016年超级计算机)

  • 华为evr-al00是什么型号(华为evr-al00是什么型号手机)

    华为evr-al00是什么型号(华为evr-al00是什么型号手机)

  • vivo跟oppo是不是一家(vivo和oppo是一家么)

    vivo跟oppo是不是一家(vivo和oppo是一家么)

  • oppoa92s是不是5G手机(oppoa92s是不是双卡双待)

    oppoa92s是不是5G手机(oppoa92s是不是双卡双待)

  • 算法的表示方法有几种(算法的表示方法不包括E-R)

    算法的表示方法有几种(算法的表示方法不包括E-R)

  • 微pe中ghost和cgi区别(微pe做ghost)

    微pe中ghost和cgi区别(微pe做ghost)

  • macbook截图保存在哪里(mac 截图 保存)

    macbook截图保存在哪里(mac 截图 保存)

  • ppt演示文档的扩展名是(PPT演示文档的扩展名是)

    ppt演示文档的扩展名是(PPT演示文档的扩展名是)

  • 新的华为p30pro屏幕需要贴膜吗(p30 p30pro屏幕)

    新的华为p30pro屏幕需要贴膜吗(p30 p30pro屏幕)

  • 多媒体数据压缩可分为(多媒体数据压缩技术是多媒体关键技术之一)

    多媒体数据压缩可分为(多媒体数据压缩技术是多媒体关键技术之一)

  • 华为nova5充电速度(华为nova5i充电速度慢的原因)

    华为nova5充电速度(华为nova5i充电速度慢的原因)

  • 魅族16s屏幕分辨率是多少(魅族16th屏幕分辨率可以更改吗?)

    魅族16s屏幕分辨率是多少(魅族16th屏幕分辨率可以更改吗?)

  • 小米8来电秀无法显示(小米手机来电秀不显示视频画面)

    小米8来电秀无法显示(小米手机来电秀不显示视频画面)

  • 古代爱国的人物故事(古代爱国的人物素材)

    古代爱国的人物故事(古代爱国的人物素材)

  • 快手私信删除能恢复吗(快手私信删除还能找到吗)

    快手私信删除能恢复吗(快手私信删除还能找到吗)

  • 华为怎么连车usb放歌(华为怎么连车上的carplay)

    华为怎么连车usb放歌(华为怎么连车上的carplay)

  • 13.1.2系统更新了什么(更新13.3系统)

    13.1.2系统更新了什么(更新13.3系统)

  • oppo十倍变焦的手机有什么特殊的功能(oppo十倍变焦的返回键怎么设置)

    oppo十倍变焦的手机有什么特殊的功能(oppo十倍变焦的返回键怎么设置)

  • icoud内存满了怎么办(icloud内存满了怎么办)

    icoud内存满了怎么办(icloud内存满了怎么办)

  • 微信转账跟红包一样吗(微信转账跟红包都是24小时的吗)

    微信转账跟红包一样吗(微信转账跟红包都是24小时的吗)

  • 钉钉老板有哪些权限(钉钉老板有哪些名字)

    钉钉老板有哪些权限(钉钉老板有哪些名字)

  • 8p和8plus区别(苹果8plus和8p有什么区别)

    8p和8plus区别(苹果8plus和8p有什么区别)

  • Linux怎么使用压缩和解压到指定目录的命令?(linux中压缩)

    Linux怎么使用压缩和解压到指定目录的命令?(linux中压缩)

  • Windows系统中Hosts文件的作用(window的hosts文件)

    Windows系统中Hosts文件的作用(window的hosts文件)

  • 【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间(wx小程序)

    【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间(wx小程序)

  • ecms怎么通过执行sql获取需要的记录(ecs怎么用)

    ecms怎么通过执行sql获取需要的记录(ecs怎么用)

  • 个人所得税申报操作流程
  • 有关研发支出的账务怎么做?
  • 纺织品产量
  • 企业亏损结转年限举例说明
  • 销售人员的工资属于什么会计科目
  • 生产成本里面的工资
  • 发票丢失说明怎么填写
  • 其他综合收益的税后净额怎么计算
  • 其他应收款包括的内容
  • 开给别的公司的支票可以转给其它人去抵账?
  • 把黑龙江省
  • 境外施工
  • 外币报表折算差额在会计报表中应作为( )
  • 存货的核算心得体会
  • 受赠人个人所得税
  • 卷烟批发企业批发卷烟是否缴纳消费税
  • 制造费用如何分摊到产品的成本
  • 餐饮店工装
  • 企业买进基金用什么账户
  • 招待费进项税额转出在申报表
  • 教你从脸上看出风水
  • 企业投资收益如何做账
  • 用友软件查其他业务收入怎么查
  • 如何手机个人热点连电脑
  • php的类
  • win11 zen2
  • 公司基本户可以异地开户吗
  • php1 zybdjx
  • 语音模块作用
  • 瓦尔德内尔精彩
  • vue经典案例
  • 常用的3个第三方类库
  • 去年买的设备今年入固定资产如何做账
  • 出口发票的开具时间问题
  • 小规模纳税人的增值税账务处理
  • xss漏洞利用的场景
  • 处置资产的账务处理
  • 残疾人保证金优惠减免怎么申请退税
  • php页面跳转可以用header
  • 增值税直接减征的情形
  • 交易性金融资产属于流动资产
  • 外包人员的餐费可以全部扣除吗
  • 银行手续费必须有发票才能入账吗
  • 在建工程怎么做账务处理
  • 以前年度损益调整结转到本年利润吗
  • mysql出现的问题
  • 综合所得减除费用标准为60000.00元/年
  • 不得从销项税额中抵扣的进项税额,不得计提加计抵减额
  • 分公司是否具有独立承担民事责任的能力
  • 小规模纳税人劳务派遣可以差额征税吗
  • 制造费用主要包括哪些内容
  • 混凝土增值税发票税率
  • 收到汇款计入什么科目
  • 工业增加值计算表(按生产法)
  • 怎么处理固定资产残值
  • 免税申请需要什么材料
  • 固定资产清理的税率是多少
  • 小规模商贸公司没有进项票怎么办
  • 蓝字发票认证怎么操作
  • 会计往来账如何记账
  • 残保金不申报可以补缴吗
  • mysql参数表
  • 如何修改sqlserver中sa用户的密码
  • 如何设置sqlserver数据库用户名密码
  • 动态创建表
  • freebsd使用
  • freebsd安装pkg
  • linux mds
  • mac视频预览图不显示
  • win7共享设置(详细图文步骤)
  • macbookair电脑屏幕
  • 获取shell脚本执行结果
  • ssh客户端软件
  • Android自定义对话框
  • 浅析javascript中function 的 length 属性
  • linux shell条件判断语句
  • javascript含义
  • python 中的列表
  • js添加一个div
  • 广州地税局官网办事点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设