IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> uniapp自定义底部导航栏h5有效果小程序无效的解决方案 -> 正文阅读

[移动开发]uniapp自定义底部导航栏h5有效果小程序无效的解决方案

有时候使用uniapp开发h5和小程序时,uni自带的底部导航栏可能满足不了我们的需求,我们需要自定义样式,如下:

在这里插入图片描述
相信很多朋友一看官网直接在uniapp的pages.json中直接这样定义:
在这里插入图片描述
然后你会很惊奇的发现h5是可以显示的,但是小程序是无效的哦(这下是不是懵逼了,苦苦还在找自己代码的问题,哈哈哈)

解决方法如下:

1.在以下位置加上"custom":true,这是你会发现小程序的底部导航不见了,不见就是对的

在这里插入图片描述

2.,然后在项目的根目录下引入custom-tab-bar(里面包括wxml、wxss、json、js)文件夹,以下涉及到的图片路径按照你自己的需求写,我这里是我的本地,所以你拷过去图片地址会报错
//wxml
<view class="tab-bar">
  <view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab" >
    <view class="center_part" >
      <view class="center_part_code" wx:if="{{item.isSpecial}}">
        <image class=" center-has-noimg" src="../static/add1.png" ></image>
      </view>
      <image class=" center-has-image" class="{{index==2?'centerAdd':'center-has-image'}}"  src="{{selected === index ? item.selectedIconPath : item.iconPath}}" wx:else></image>
    </view>
    <view style="color: {{selected === index ? selectedColor : color}}" class="cover-text">{{item.text}}</view>
  </view>
</view>
//js
Component({
  data: {
    selected: 0, // 目前tab所在的index
    color: "#999", // 未选中颜色
    selectedColor: "#D0021B", // 选中颜色<br>  // tab 自定义配置需与index.json 保持一致
    list: [{
      pagePath: "/pages/Home/index",
      iconPath: "../static/logo.png",
      selectedIconPath: "../static/logo.png",
      text: "首页",
      isSpecial: false
    }, {
      pagePath: "/pages/Message/index",
      iconPath: "../static/logo.png",
      selectedIconPath: "../static/logo.png",
      text: "商品列表",
      isSpecial: false
    }, {
      pagePath: "/pages/pay/index",
      iconPath: "../static/add1.png",
      selectedIconPath: "../static/add2.png",
      text: "",
      isSpecial: false
    },  {
      pagePath: "/index/index2",
      iconPath: "../static/logo.png",
      selectedIconPath: "../static/logo.png",
      text: "历史订单",
      isSpecial: false
    }, {
      pagePath: "/index/index2",
      iconPath: "../static/logo.png",
      selectedIconPath: "../static/logo.png",
      text: "我的",
      isSpecial: false
    }],
  },
  methods: {  // 切换 tab 事件
    switchTab(e) {
      let that = this
      const idx = e.currentTarget.dataset.index
      const path = e.currentTarget.dataset.path
 
      // 跳转页面
      wx.switchTab({
         url: path,
      })
 
      that.setData({
        selected: idx
      })
    }
  }
})   
//wxss
.tab-bar {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	background: url(https://www.yuanbap.cn/static/bg.png);
	background-size: 100% 100%;
	background-repeat: no-repeat;
	height: 150rpx;
	display: flex;
	padding-bottom: env(safe-area-inset-bottom);
	z-index: 99;
	position: relative;
	padding-top: 17rpx;

}

.tab-bar-item {
	flex: 1;
	text-align: center;
	display: flex;
	justify-content: center;
	align-items: center;
	flex-direction: column;
	    padding-top: 39rpx;
		box-sizing: border-box;
}

.tab-bar-item cover-image {
	width: 55px;
	height: 55px;
}

.tab-bar-item .cover-text {
	font-size: 14px;
}

.txt {
	color: #aaaaaa;
}

.fontWeight {
	font-weight: bold;
}

.bg_rec {
	background: #ffd324;
	width: 80rpx;
	min-height: auto;
	height: 20rpx;
	margin-top: -28rpx;
	vertical-align: text-bottom;
	border-radius: 0;
	z-index: -10;
}

.center_img {
	width: 100rpx;
	height: 100rpx;
	transform: translate(-50%);
	left: 50%;
	bottom: 0;
}

.center-has-noimg {
	width: 100%;
	height: 100%;
}

.center-has-image {
	width: 35rpx;
	height: 35rpx;
}

.centerAdd {
	width: 100rpx;
	height: 100rpx;
	margin-top: -42rpx;
}

.center_part_code {
	padding: 10rpx;
	box-shadow: 0 0 0 #000;
	/* width: 100rpx;
  height: 100rpx; */
	position: absolute;
	top: -30px;
	z-index: 10;
	width: 106rpx;
	height: 106rpx;
	transform: translate(-50%);
	left: 50%;
}

注意!注意!注意!最后你点击底部导航栏切换页面的时候会遇到以下问题:

切换到第二项后在切换到第一项,你会发现激活的图标和文字不是当前页面的,而是上一个页面的,解决方法如下:
在使用tabBar的页面加上以下代码:
onShow: function() {
//在这里需要注意的是,你可能百度出来的使用的是this.getTabBar(),在uniapp项目中这个是没作用的,打印它要么就是undefined,要么就是它不是一个函数,所以在uniapp项目中使用的是this.$mp.page.getTabBar
			if (typeof this.$mp.page.getTabBar === 'function' && this.$mp.page.getTabBar()) {
				this.$mp.page.getTabBar().setData({
					selected: 0 //数字是当前页面在tabbar的索引,如我切换的当前页面的索引是0
				})
			}
		},

这就ok啦,注意这地方的背景图不支持本地图片路径,要么转成base64,要么放到服务器,我在这里是放到服务器的,解决了你的问题就点个赞关注一哈,一起学习哦

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:47:44  更:2022-04-22 18:49:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 22:05:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码