美文网首页微信小程序
小程序填坑日记之获取view高度

小程序填坑日记之获取view高度

作者: MacSam | 来源:发表于2017-12-20 14:54 被阅读1617次

    这两天UI提了一种交互效果,希望页面滚动到某个位置的时候让一个按钮fix住,而这个位置时不定高度的,这个位置会根据当前页面的内容多少而动态改变(简而言之就是 height:auto)
    废话不多说,直接撸代码

    • 在Page的onReady回调里获取特定元素的高度
      这里用到了小程序api-wx.createSelectorQuery(),指定ID元素的详细属性会在rect的回调里返回
    onReady () {
        setTimeout(() => {
          const _this = this
          wx.createSelectorQuery().select('#YOUR_ELEMEMT_ID')
            .boundingClientRect(function (rect) {
                console.log(rect)
                _this.setData({
                  top: rect.top
               })
          }).exec()
        }, 300)
    }
    
    • 有人可能会问上面代码的定时器是干嘛的,不是已经在页面渲染完成OnReady回调里了吗?
    • 事实上,这里可能是小程序的bug,如果不加定时器,获取的元素高度还是没渲染完异步数据前的高度
    • 当获取到高度后就可以实现滚动到某个位置进行fixed的操作了
    onPageScroll (e) {
        if (this.data.top <= e.scrollTop) {
          this.setData({
            fixed: true
          })
        } else {
          this.setData({
            fixed: false
          })
        }
      }
    
      <!-- 这里是粗略的页面和样式-->
      <view class="{{fixed?'fixed':''}}" id="YOUR_ELEMENT_ID">
         在这里固定住
      </view>
    
     .fixed{
       position:fixed;
     }
    
    • 写在最后的话:
      1. 如果有更好的解决方案请在下方留言
      2. 转载请注明出处

    相关文章

      网友评论

        本文标题:小程序填坑日记之获取view高度

        本文链接:https://www.haomeiwen.com/subject/juygwxtx.html