uniapp修改tabbar背景图片

在uniapp项目中,遇到需要自定义tabbar背景图的需求,首先尝试通过设置透明背景和CSS定位实现,但在真机测试时出现黄色背景问题。然后使用uni.setTabBarStyle设置背景图片,但在H5端失效。最后通过条件编译结合两种方法,解决了跨端显示问题,确保在H5和手机端都能正确显示背景图。
摘要由CSDN通过智能技术生成

背景

最近遇到一个项目,UI给的设计图上tabbar是带有背景图片的,由于习惯使用uniapp自带的tabbar,首先查阅了pages.json中tabBar的配置,没有设置背景图片的参数。

第一个解决办法

首先想到的第一个办法是把tabbar背景设为全透明的,再通过CSS定位一个元素和tabbar重合,就可以出现背景图的效果

"tabBar":{"backgroundColor":"#ffffff00"}
<view class="" style="position: fiexd;width: 100%;height: 100rpx;background: url(../../static/images/bgs.png);left: 0;bottom: 0;"></view>

配置好后,拿H5一测,完美解决
但是拿真机测试时,出现了问题,应该是背景颜色不能设置全透明的原因,出现tabbar背景颜色为黄色的状况

第二个解决办法

出现了上面的问题,开始找第二个解决办法,在官方的api文档中有一个方法uni.setTabBarStyle可以设置背景图片

uni.setTabBarStyle({
	backgroundImage: '/static/images/bgs.png',
	backgroundRepeat: 'repeat'
})

再拿手机测试,完美解决,但是再重新加载一下H5的,又不行了

最终方法

既然两个方法都会在各端出问题,那么把两个方法结合起来就可以解决了

"tabBar":{"backgroundColor":"#ffffff00"}

条件编译一下,H5时使用定位的方法

<!-- #ifdef H5 -->
<view class="" style="position: fiexd;width: 100%;height: 100rpx;background: url(../../static/images/bgs.png);left: 0;bottom: 0;"></view>
<!-- #endif -->

条件编译一下,除了H5均使用自带的方法,只需要第一个tabbar页面运行即可

onLoad() {
	// #ifndef H5
	uni.setTabBarStyle({
		backgroundImage: '/static/images/bgs.png',
		backgroundRepeat: 'repeat'
	})
	// #endif
},
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值