小程序
小游戏
企业微信
微信支付
扫描小程序码分享
用scroll-view向上或向下监听滚动到某一个位置,然后用this.setData让scrollTop变成true或false,使某一块fixed定位到页面顶部,我直接在页面上显示scrollTop的值,很慢才显示出来。这样导致fixed布局的那个块也定位很慢,用户体验非常差。PS:我尝试用showToast输出,速度非常快,证明方法是没问题的,有问题的是setData赋值很慢。
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我也遇到这个问题,体验感很差,请问解决了吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
是因为赋值setData调用太频繁了
和我遇到的问题一样啊。有时候卡在那里不动。
现在解决了没?
没有,不知道怎么弄,我看了几个小程序,好像都有这个问题。
你好,请问解决了吗? 一样的问题,但我发现链家小程序一样的效果 却没有这个问题,不知道他们怎么解决的~
链家那个我也看到了,不知道怎么做的,你后来搞好了吗怎么弄啊,setdata太慢了
1. 页面渲染时候获取nav块距离顶部的高度
wx.createSelectorQuery().select('#nav').boundingClientRect(function (rect) {
console.log(rect)
_this.setData({
top: rect.top
})
}).exec()
2. bindscroll方法监听向下滚动位置
if (e.detail.scrollTop >= this.data.top) {
this.setData({
scrollTop: true
} else {
return;
}
3. bindscrolltoupper监听向上滚动是否到nav块的位置
scrolltoupper: function (e) {
scrollTop: false
},
ps: scrollTop用来控制nav块定位到页面顶部
本来 sticky 就是这个效果,不过这个属性暂时不稳定,有兼容问题。要不换种实现方式吧,固定顶部的,一直在,但是隐藏着,过了位置就显出来。
我现在就是这样实现的,有一个辅助的块一直固定在顶部,然后通过scrollTop控制它显示隐藏的。
以前我也是这样做的,效果还好,只是比这个多加了一个是否变化的判断。
比如在 e.detail.scrollTop >= this .data.top 中加入 if (this.data.scrollTop == lastScrollTop) return 之类的。
试试直接给这个导航栏设置这个样式属性呗
position: -webkit-sticky;
position: sticky;
top: 0;
不是赋值慢,是渲染慢,渲染是个异步的动作,你要做的是什么效果?
监听页面向下滚动到中部导航栏的位置时,让导航栏fixed定位到页面顶部。向上滚动到导航栏位置时,fixed定位去掉,导航栏复原。
效果是做出来的,在安卓机上导航栏定位很慢,卡几秒才fixed定位到页面顶部。向上滚动复原也很慢
大概知道了,我没有做个这种效果,能看看bindscroll部分的代码吗
解决了吗朋友 我也急啊~这个问题~
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我也遇到这个问题,体验感很差,请问解决了吗?
是因为赋值setData调用太频繁了
和我遇到的问题一样啊。有时候卡在那里不动。
现在解决了没?
没有,不知道怎么弄,我看了几个小程序,好像都有这个问题。
你好,请问解决了吗? 一样的问题,但我发现链家小程序一样的效果 却没有这个问题,不知道他们怎么解决的~
你好,请问解决了吗? 一样的问题,但我发现链家小程序一样的效果 却没有这个问题,不知道他们怎么解决的~
链家那个我也看到了,不知道怎么做的,你后来搞好了吗怎么弄啊,setdata太慢了
1. 页面渲染时候获取nav块距离顶部的高度
wx.createSelectorQuery().select('#nav').boundingClientRect(function (rect) {
console.log(rect)
_this.setData({
top: rect.top
})
}).exec()
2. bindscroll方法监听向下滚动位置
if (e.detail.scrollTop >= this.data.top) {
this.setData({
scrollTop: true
})
} else {
return;
}
3. bindscrolltoupper监听向上滚动是否到nav块的位置
scrolltoupper: function (e) {
this.setData({
scrollTop: false
})
},
ps: scrollTop用来控制nav块定位到页面顶部
本来 sticky 就是这个效果,不过这个属性暂时不稳定,有兼容问题。要不换种实现方式吧,固定顶部的,一直在,但是隐藏着,过了位置就显出来。
我现在就是这样实现的,有一个辅助的块一直固定在顶部,然后通过scrollTop控制它显示隐藏的。
以前我也是这样做的,效果还好,只是比这个多加了一个是否变化的判断。
比如在 e.detail.scrollTop >= this .data.top 中加入 if (this.data.scrollTop == lastScrollTop) return 之类的。
试试直接给这个导航栏设置这个样式属性呗
position: -webkit-sticky;
position: sticky;
top: 0;
不是赋值慢,是渲染慢,渲染是个异步的动作,你要做的是什么效果?
监听页面向下滚动到中部导航栏的位置时,让导航栏fixed定位到页面顶部。向上滚动到导航栏位置时,fixed定位去掉,导航栏复原。
效果是做出来的,在安卓机上导航栏定位很慢,卡几秒才fixed定位到页面顶部。向上滚动复原也很慢
大概知道了,我没有做个这种效果,能看看bindscroll部分的代码吗
解决了吗朋友 我也急啊~这个问题~