3615关注12211浏览
如题,我要实现一个sticky组件,需要在onPageScroll中调用boundingClientRect获取元素的位置信息,但是
现在有一个问题:
如果页面慢慢滚动的话,能在4ms内获取到元素位置信息,看起来过渡就很流畅;
而如果一下子将页面滚动到顶部或者底部(页面到头后会超出可滚动区域然后回弹一下),这个时候获取位置信息就会很慢,平均500ms,有时候是1700ms,这会导致过渡的时候有一个卡顿。
下图console中打印的是我滚动页面时,每次调用boundingClientRect前和执行boundingClientRect的回调函数之间的时间差,可以看到,有时候很快(2、30、80ms),有时候就很慢(315、1367、1900ms)。
我已经给onPageScroll事件设置了debounce,保证滚动结束后100ms后才调用boundingClientRect。
我上传了一个代码片段,复现步骤是:滚动的稍微慢点,或者特别快(我也不知道具体是什么情况下)多试试。它有时候获取得很快,都在10ms内:
有时候就获取得很慢,是1000ms以上:
请问这是什么原因?
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
Reid
19人对此回答表示赞同
解决了吗
展开196回复分享发布于 6年前评论(6)
收起评论
-
Caroline1
18人对此回答表示赞同
mark关注一下
展开180回复分享发布于 6年前评论(0)
收起评论
-
Jack李墨杰
14人对此回答表示赞同
遇到了相同的问题关注
展开140回复分享发布于 6年前评论(0)
收起评论
-
明月望舒
2人对此回答表示赞同
没有解决,开发者工具上依然很卡。我感觉这个情况出现是不确定的,在开发者工具上经常出现,但是在真机上会好很多,只会偶尔出现。
展开20回复分享发布于 6年前评论(0)
收起评论
把引用组件的路径改一下就可以了
VM1237:formatted:320AnSelectorQuerycallisignoredbecausenoproperpageorcomponentisfound.Pleaseconsideringusing`SelectorQuery.in`tospecifyaproperone.
有bug麻烦和我说一下~
wechatide://minicode/mCdQCdmN77Cu
代码片段能分享一波吗
没有解决,开发者工具上依然很卡。我感觉这个情况出现是不确定的,在开发者工具上经常出现,但是在真机上会好很多,只会偶尔出现。