【小程序】滚动到指定位置,支付宝小程序滚动位置不准确

今天迁移支付宝小程序发现支付宝的API不完善,目前小程序滚动只能使用pageScrollTo,而支付宝小程序滚动位置只能在选择器和滚动目标位置二选一。

支付宝小程序

坑点来了,因为我使用的是自定义导航栏,如果使用选择器(为啥不用目标位置,狡辩一下,因为是内容是不确定的,使用选择器需要存储位置会浪费较多的性能,主要是我脑抽了),那么支付宝小程序会把顶部的导航栏当做选择器的起始位,即高度从手机顶部开始计算。

 其实我想要的应该是往下开始一部分。

微信小程序

后来参考微信的API,发现多了一个offsetTop,可以实现选择器和位移的共存。

        wx.pageScrollTo({
            selector: `.tabNum-${tabNum}`,
            offsetTop: -180,//偏移的位置
            duration: 300,
        });

解决方案

因为支付宝小程序没有提供,(就是我实在脑抽),另外想了一种滚动实现方案(支付宝小程序和微信小程序都可以使用)。

wxml

<view class="btn" ontap="scrollToElement">会员锚点1</view>

js

  /**
   * 滚动到指定位置处
   */
  scrollToElement () {
    let query = my.createSelectorQuery(); // 创建节点查询器
    query.selectViewport().scrollOffset();
    query.select('#inputArea').boundingClientRect(); // 选择id为inputAreat的节点并查询的它布局位置
    query.exec(function(res) { //执行请求
      my.pageScrollTo({
        scrollTop: res[0].scrollTop + res[1].top + 200,//滚动到页面节点的上边界坐标,200是偏移量
        duration: 300 // 滚动动画的时长
      });
    })
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值