uniapp中使用uview UI的组件Sticky 吸顶 在H5下报错‘bottom‘ of null。纯css实现吸顶功能。

在uniapp使用uview UI组件Sticky时遇到H5环境下'bottom' of null的错误。问题源于组件与底部tabbar页面切换的冲突。尝试在组件onHide中设置enable为false未成功。最终通过CSS样式成功实现了吸顶功能。

项目场景:

提示:这里简述项目相关背景:
uniapp中使用uview UI的组件Sticky 吸顶 在H5下报错’bottom’ of null。纯css实现吸顶功能。


问题描述

在uniapp中使用uview UI的组件Sticky在H5下报错’bottom’ of null。网上查找了很多,都说产生的原因是:吸顶组件u-sticky和底部导航栏tabbar切换页面时产生冲突

原因分析:

原因是切换页面,页面的sticky的Observer监听没有销毁,所以需要在onHide中将sticky的属性enable设置为false

<template>
	<view>
		<!--  @property {Boolean} enable 是否开启吸顶功能(默认true)-->
		<u-sticky :enable="enable">
			<view>
				……
			</view>
		</u-sticky>
	</view>
</template>
<script>
export default {
	data() {
		return {
			enable: true
		}
	},
	// 在对应的show和hide页面生命周期中打开或关闭监听
	onShow() {
		this.enable= true
	},
	onHide() {
		this.enable= false
	}
}
</script>


解决方案:

上面的方法尝试了,但没有生效,所以又尝试了利用css样式实现吸顶

<template>
	<view class="stickyTop selectSticky" style="top:80rpx;">
		<iDropdown v-on:c_filtrate="filtrate"></iDropdown>
	</view>
</template>
<script>
export default {
	data() {
		return {
		
		}
	},
}
</script>

<style>
.stickyTop{
	/* 兼容chorme */
	position: -webkit-sticky;
	position: sticky;
	top: var(--window-top);
	z-index: 99;
}
</style>

效果如图
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值