今天迁移支付宝小程序发现支付宝的API不完善,目前小程序滚动只能使用pageScrollTo,而支付宝小程序滚动位置只能在选择器和滚动目标位置二选一。
坑点来了,因为我使用的是自定义导航栏,如果使用选择器(为啥不用目标位置,狡辩一下,因为是内容是不确定的,使用选择器需要存储位置会浪费较多的性能,主要是我脑抽了),那么支付宝小程序会把顶部的导航栏当做选择器的起始位,即高度从手机顶部开始计算。
其实我想要的应该是往下开始一部分。
后来参考微信的API,发现多了一个offsetTop,可以实现选择器和位移的共存。
- wx.pageScrollTo({
- selector: `.tabNum-${tabNum}`,
- offsetTop: -180,//偏移的位置
- duration: 300,
- });
因为支付宝小程序没有提供,(就是我实在脑抽),另外想了一种滚动实现方案(支付宝小程序和微信小程序都可以使用)。
<view class="btn" ontap="scrollToElement">会员锚点1view>
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 // 滚动动画的时长
- });
- })
- },