这是我目前发现较好的uni-app 自定义底部导航栏方法,其他方法的缺点主要是在切换时,要么会闪烁,要么会每点击一下,都会请求一次数据。如果有其他更好的方法,欢迎评论留言,最近才开始用uni-app写项目,之前只是看了下文档。
1. tabbar 组件
<template> <view class="tabbar-container"> <view :style="{ color: currentIndex == index ? '#007EFF' : '#333333' }" v-for="(item, index) in tabbarList" :key="index" style="flex: 1" @click="switchTab(index)" > <view :class="'iconfont ' + item.icon" /> <view class="title">{{ item.title }}</view> </view> </view> </template> mounted(){ let dom = uni.createSelectorQuery().select('.tabbar-container') dom.boundingClientRect(e => { // tabbarHeight使用频次较高,就设为全局变量了 getApp().globalData.tabbarHeight = e.height }).exec() } <style scoped lang="scss"> .iconfont { font-size: 18px; } .tabbar-container { display: flex; justify-content: space-evenly; text-align: center; padding: 10px 0; background-color: #fff; box-shadow: 0 -1.5px 3px #eee; z-index: 999; .title { font-size: 12px; } } </style>
2. 引入
这里使用的是swiper,duration为0是为了关闭页面切换动画效果,
<template> <view :style="'height: calc(100vh - ' + tabbarHeight + 'px)'"> <tab-bar :currentIndex="currentIndex" class="tabbar-container" @getCurrentIndex="getCurrentIndex" /> <swiper duration="0" disable-touch :current="currentIndex" style="height: 100%"> <swiper-item> <scroll-view scroll-y style="height: 100%"> <home /> </scroll-view> </swiper-item> <swiper-item> <todo-page /> </swiper-item> <swiper-item> <launch-task /> </swiper-item> <swiper-item> <my-page /> </swiper-item> </swiper> </view> </template> mounted() { this.tabbarHeight = getApp().globalData.tabbarHeight }, getCurrentIndex(e) { this.currentIndex = e; }
到此这篇关于uni-app 自定义底部导航栏的实现的文章就介绍到这了,更多相关uni-app 底部导航栏内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持呐喊教程!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。