如题,我要实现一个sticky组件,需要在onPageScroll中调用boundingClientRect获取元素的位置信息,但是

现在有一个问题:

如果页面慢慢滚动的话,能在4ms内获取到元素位置信息,看起来过渡就很流畅;

而如果一下子将页面滚动到顶部或者底部(页面到头后会超出可滚动区域然后回弹一下),这个时候获取位置信息就会很慢,平均500ms,有时候是1700ms,这会导致过渡的时候有一个卡顿。


下图console中打印的是我滚动页面时,每次调用boundingClientRect前和执行boundingClientRect的回调函数之间的时间差,可以看到,有时候很快(2、30、80ms),有时候就很慢(315、1367、1900ms)。




我已经给onPageScroll事件设置了debounce,保证滚动结束后100ms后才调用boundingClientRect。



我上传了一个代码片段,复现步骤是:滚动的稍微慢点,或者特别快(我也不知道具体是什么情况下)多试试。它有时候获取得很快,都在10ms内:




有时候就获取得很慢,是1000ms以上:



请问这是什么原因?

展开全部
收起
4回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Reid

    19人对此回答表示赞同

    解决了吗

    展开
    19
    6回复
    发布于 6年前

    评论(6)

    收起评论

    • Ezra 2019-01-08 12:41

      把引用组件的路径改一下就可以了

      回复
    • Carlos 2019-01-10 17:20

      VM1237:formatted:320AnSelectorQuerycallisignoredbecausenoproperpageorcomponentisfound.Pleaseconsideringusing`SelectorQuery.in`tospecifyaproperone.

      回复
    • 货真价实冰麒麟 2019-01-12 16:38

      有bug麻烦和我说一下~

      回复
    • 兵荒马乱 2019-01-14 16:04

      wechatide://minicode/mCdQCdmN77Cu

      回复
    • Kinsley 2019-01-16 16:23

      代码片段能分享一波吗

      回复
    • 八角与丁香 2019-01-18 08:57

      没有解决,开发者工具上依然很卡。我感觉这个情况出现是不确定的,在开发者工具上经常出现,但是在真机上会好很多,只会偶尔出现。

      回复
  • Caroline1

    18人对此回答表示赞同

    mark关注一下

    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jack李墨杰

    14人对此回答表示赞同

    遇到了相同的问题关注

    展开
    14
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 明月望舒

    2人对此回答表示赞同

    没有解决,开发者工具上依然很卡。我感觉这个情况出现是不确定的,在开发者工具上经常出现,但是在真机上会好很多,只会偶尔出现。

    展开
    2
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部