微信小程序顶部搜索栏随界面滑动变换

初始状态:

目标状态:

 

效果:在界面向下滑动的时候,根据滑动的距离,缩短搜索框,并向上滑动

第一步:使用小程序的生命周期onPageScroll接听界面滚动,并获取下滑距离

                因为在本案例中,我胶囊顶部与默认状态下的搜索框顶部距离为74rpx,所以,我只需要0~74这个区间的内容,并拿到这个值(这个值是生命周期onPageScroll()自带的)

//监听界面滚动
  onPageScroll(e){
    //这个pxAndRpx是我计算的rpx和px的比例,如无必要也可以不用,直接默认为2
    var mrtop = e.scrollTop * this.data.pxAndRpx
    //滑动距离小于74时
    if ( mrtop<=74||this.data.marginTop<=74) {
      this.setData({
        marginTop : mrtop>74?74:mrtop
      })
    }
    // console.log("jhkkjh",this.data.marginTop);
  },

第二步:

在wxml中使用

//上方文字
<view class="addressClass" style="margin-top: {{胶囊属性中的距顶高度}};opacity: {{marginTop<=37?'1':(74-marginTop)/74}}; z-index: 100;">
    <text class="addressText">目标文字</text>
</view>


//搜索框
<view class="searchClass" style="height: {{胶囊高度}}rpx;margin-right: {{marginTop>='37'?(+37*6):(marginTop*6)}}rpx;margin-top: {{marginTop>='37'?(初始状态下的搜索框距顶高度-marginTop):(初始状态下的搜索框距顶高度)}}rpx;z-index: 101;">
我是搜索框
</view>

        这种效果实现的搜索框变换动画为,界面向上滑动,搜索框上下先不变,先由右向左缩短,达到一定程度后,在向上滑动。

还有一种效果

//上方文字
<view class="addressClass" style="margin-top: {{胶囊属性中的距顶高度}};opacity: {{marginTop<=37?'1':(74-marginTop)/74}}; z-index: 100;">
    <text class="addressText">目标文字</text>
</view>


//搜索框
<view class="searchClass" style="height: {{胶囊高度}}rpx;margin-right: {{marginTop>='74'?(74*3):(marginTop*3)}}rpx;margin-top: {{marginTop>='74'?(初始状态下的搜索框距顶高度-74):(初始状态下的搜索框距顶高度-marginTop)}}rpx;z-index: 101;">
我是搜索框
</view>

这种效果实现的搜索框变换动画为,边向上滑,边由右向左缩短,同步进行。

搜索框

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值