微信小程序的吸顶效果

吸顶效果如下图所示:
未吸顶前
-------------------华丽丽的的分割线-------------------
吸顶后
要吸顶的元素:

<view id="luyou" class="{{flag?'active':''}}">
  <view>aa</view>
  <view>bb</view>
  <view>cc</view>
  <view>dd</view>
</view>

首先,要了解如何获取元素的相关属性:

wx.createSelectorQuery().select('#the-id').boundingClientRect(function(rect){
      rect.id      // 节点的ID
      rect.dataset // 节点的dataset
      rect.left    // 节点的左边界坐标
      rect.right   // 节点的右边界坐标
      rect.top     // 节点的上边界坐标
      rect.bottom  // 节点的下边界坐标
      rect.width   // 节点的宽度
      rect.height  // 节点的高度
}).exec()

然后:
1、先获取要吸顶的元素的高度:

wx.createSelectorQuery().select('#luyou').boundingClientRect(rect => {
      // console.log(666, rect.top)
      this.setData({
        top:rect.top
      })
    }).exec()

2、监控页面滚动时,随时获取页面向上滚动的距离并判断是否已经超出元素距离顶部的高度,若超出,令data中的flag=true:`

  onPageScroll(e){
    if (e.scrollTop > this.data.top){
      console.log("可以吸顶啦")
      this.setData({
        flag:true
      })
    }else{
      console.log("不需要吸顶啦")
      this.setData({
        flag:false
      })
    }
  },

3、flag=true时,令元素的position属性为fixed,这里是为true时调用class为active的类名。

 class="{{flag?'active':''}}"
.active{
  width: 750rpx;
  position: fixed;
  top: 0;
  background: pink;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值