uniAPP微信小程序 滚动到顶部固定悬浮

首先,先定义滚动的子组件ScrollContent , 定义data的属性:

data(){
	return {
			isFixed: false,
			nameTop: '',
			rect: 0,
	}
}

再在父组件中定义:

<ScrollContent id="scrollId" :class="{'is-fixed': isFixed}"></ScrollContent>

给他一个id是为了接下来的获取这一个组件,我们使用微信小程序的接口wx.createSelectorQuery,写在onLoad里面:

onLoad(){
			let that = this;
			const query = wx.createSelectorQuery();
			query.select('#scrollId').boundingClientRect();
			query.exec(function(res){
				console.log(res)
				if(res && res[0])
					that.nameTop = res[0].top
			})
		},

同时,监听页面的scroll事件,

onPageScroll(e){
				
				this.rect = e.scrollTop;
			}

然后我们使用计算属性,计算的原理是这样的:子组件一开始获得的距离顶部的值nameTop,还有滚动的时候距离顶部的值rect,如果rect-nameTop > 0, 说明已经该组件到了该固定的顶部的时候了,否则就把他的固定class取消:

computed: {
			//滑动组件置顶
			pageFixed(){
				if (this.rect > this.nameTop ){
					this.isFixed = true;
				}else{
					this.isFixed = false;
				}
			}
		}

为了使他能悬浮在顶部,我们首先想到的就是使用css的position:fixed属性:

.is-fixed{
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
	}

通过动态的设置isFixed的值,就可以动态的使他固定/不固定在顶部了

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值