微信小程序第六篇:元素吸顶效果实现

 系列文章传送门:

微信小程序第一篇:自定义组件详解

微信小程序第二篇:七种主流通信方法详解

微信小程序第三篇:获取页面节点信息

微信小程序第四篇:生成图片并保存到手机相册

微信小程序第五篇:页面弹出效果及共享元素动画

话不多说,先看效果:

这种效果在我们日常开发中是非常常见的,下面让我们结合代码一起来看看是如何实现的吧。

js 部分数据:

data: {
    content: {
      value: '啦啦啦',
      isShow: false
    },
    message: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],
    mainHeight: app.globalData.wHeight - app.globalData.headerHeight
  },
 

wxml部分代码: 

<template name="scrollData">
    <view style="height: 100rpx; width: 90%;margin: 20rpx auto;background-color: rgb(172, 212, 219);">
        {{item}}
    </view>
</template>

<view>
    <header bg="{{'transparent'}}">YinJie</header>
    <view style="height: 60rpx;width: 100%;background-color: pink;text-align: center;font-size: 22rpx;position: fixed;z-index: 999;"
      wx:if="{{content.isShow}}"
    >
        {{content.value}}
    </view>  
    <scroll-view class="" scroll-y="true" bindscroll="scroll" enable-flex="true" style="height: {{mainHeight}}rpx;">
        <view style="height: 400rpx; width:90%; margin: 0 auto; background-color: grey">
        </view>
        <view style="height: 60rpx;width: 100%;background-color: pink;text-align: center;font-size: 22rpx;margin-top: 20rpx;">
            啦啦啦
        </view>
        <template is="scrollData" data="{{item}}" wx:for="{{message}}" wx:key="index"></template>
    </scroll-view>
</view>

我们要实现“啦啦啦”所在的元素块在移动到它的时候吸顶,那必然需要结合 scroll-view 标签的 bindscroll 属性实现,吸顶的关键就是我们在header标签下写一个和要吸顶元素一模一样的wxml元素。通过 wx:if 来控制它的显示与隐藏,当页面移动到“啦啦啦”所在位置的时候显示这个元素,并且让他的 position 为 fixed,这样就巧妙实现了元素的吸顶效果。

  scroll: function(e) {
      if (e.detail.scrollTop >= 216) {
        if (!this.data.content.isShow) {
          this.setData({
            'content.isShow': true
          })
        }
      } else {
        if (this.data.content.isShow) {
          this.setData({
            'content.isShow': false
          })
        }
      }
  },

当页面距离顶部高度超过 216 也就是 “啦啦啦” 所在元素高度时,就让 header 下的元素显示。反之,当页面距离顶部高度小于 216 时再让他隐藏就可以啦!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YinJie…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值