小程序获取元素高度的API有时候会只获取到一半
- 当前 Bug 的表现(可附上截图)
需求: 点击tab分类的时候tab分类移动到顶部。
实现: 通过 wx.createSelectorQuery(); api获取到元素的高度,然后通过wx.pageScrollTo进行移动,偶尔(大约二十次触发一次)的时候会只移动一半的距离。
大体逻辑如下
const query = wx.createSelectorQuery(); let index = e.target.dataset.index; let top = 0; query.select( '#index' + index).boundingClientRect() query.selectViewport().scrollOffset() query.exec( function (res) { curTop = res[0].top + res[1].scrollTop; that.setData({ count: 2 }) var addTop = res[0].top + res[1].scrollTop; that.setData({ currentTop: addTop }) top = that.data.currentTop ? that.data.currentTop : curTop; wx.pageScrollTo({ scrollTop: top + 2, duration: 300 }) }) |