应用场景:

很多场景我们都需要用到分类筛选,因此有时候要实现点击分类筛选的时候,分类吸顶,当上滑的时候又回到之前那个位置。

这个功能,我们要清楚几点:

1,点击分类条时候,吸顶
2,分类条滑动到顶部的时候,吸顶
3,当上滑到分类条上面的时候,去掉吸顶
根据上面几点,一步一步的实现

			<view class="menu" :style="{position:scrollTop<topHight?'':'sticky',top:0+'rpx',zIndex:5}">
				<view v-for="(item,b) in classList" :key="b" @click="togglePopup(b)">
					{{item.class}}
					<view class="iconfont iconarrow-sortdown-small"></view>
				</view>
			</view>

1.给点击的分类增加一个点击事件togglePopup,点击时候获取向上卷曲的高度,这里用的是uni官方自带的方法,支持小程序

			//弹出框
			togglePopup(b) {
				//得到向上卷起的高度
				const query = uni.createSelectorQuery().in(this);
				query.select('.topBox').boundingClientRect(data => {
					this.topHight = data.height
					uni.pageScrollTo({
						scrollTop: data.height,
						duration: 200
					});
				}).exec();
			},

2.当分类条滑动到顶部的时候,吸顶,当上滑到分类条上面的时候,去掉吸顶。这个我们要得到向上距离顶部的高度,根据高度判断什么时候吸顶,什么时候去掉。

//这个就是判断来增加去掉吸顶
:style="{position:scrollTop<topHight?'':'sticky',top:0+'rpx',zIndex:5}"
		//距离页面顶部距离
		onPageScroll(res) {
			this.scrollTop = res.scrollTop
			// console.log(res.scrollTop) 
		},

效果请参照美团外卖那个样式,我就不上动态图了。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐