小程序获取元素高度的API有时候会只获取到一半
发布于 6 年前 作者 libai 11996 次浏览 来自 问答
  • 当前 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
        })
       
    })
1 回复

wx.pageScrollTo支持锚点,不用自己计算高度了

回到顶部