微信小程序实现吸顶盒效果

本文实例为大家分享了微信小程序实现吸顶盒效果的具体代码,供大家参考,具体内容如下

html部分

 <!-- 列表 -->     <view class="partner-content-container mt15">         <!-- 吸顶盒 -->         <view class="partner-list-header {{isFixedTop?'tab-fixed':''}}" id='operation-bar'>             <view class="partner-list-title">合伙人</view>             <view class="partner-list-title icon-container" style="width:60%!important">                 <text>操作</text>                 <image src="../../../../static/imges/right_arrow.webp" class="right-arrow" mode="widthFix"></image>             </view>         </view>         <!-- 用于吸顶后 占位用的 -->         <view class="partner-list-header" wx:if="{{isFixedTop}}"></view>         <!-- 列表 -->         <view class="partner-list-content" wx:for='{{memLs}}' wx:key='index'>             <view class="item-desc">{{item.agent_name}}</view>             <view class="co-wrapper">                 <view>                     <scroll-view scroll-x="true" style=" white-space: nowrap; " >                         <text class="co-btn" bindtap="toMember" data-g="{{item.agent_id}}" data-storename='{{item.agent_name}}'>成员管理</text>                         <text class="co-btn" bindtap="toMachineList" data-g="{{item.agent_id}}" data-storename='{{item.agent_name}}'>设备管理</text>                         <text class="co-btn" bindtap="toPoint" data-g="{{item.agent_id}}" data-storename='{{item.agent_name}}'>门店管理</text>                     </scroll-view>                 </view>                  <view>                     <scroll-view scroll-x="true" style=" white-space: nowrap; " >                         <text class="co-btn" bindtap="toReplnishApply" data-g="{{item.agent_id}}" data-storename='{{item.agent_name}}'>补货申请</text>                         <text class="co-btn" bindtap="toReplnishApplyList" data-g="{{item.agent_id}}" data-storename='{{item.agent_name}}'>补货申请记录</text>                     </scroll-view>                 </view>             </view>         </view> </view>

css部分 

.partner-content-container{     width: 100%;     background: #fff; } .partner-list-header{     display: flex;     justify-content: space-around;     height: 80rpx;     line-height: 80rpx;     border-bottom: 3rpx dashed #b2b3b2;     margin: 0 20rpx;     font-weight:bold;     background: #fff;     width: 100%; } .tab-fixed{     position: fixed;     top: 0;     left: 0;     z-index: 1; } .partner-list-title{     width: 40%;     text-align: center; } .icon-container{     display: flex;     justify-content:center;     align-items: center; } .right-arrow{     width: 50rpx;     margin-right: 20rpx; } .partner-list-content{     display: flex;     justify-content: space-around;     align-items: center;     background: #fff;     line-height: 100rpx;     margin: 0 20rpx; } .co-wrapper{     width: 55%;     box-sizing: border-box; } .item-desc{     width:45%;     overflow: hidden;     white-space: nowrap;     text-overflow: ellipsis;     text-align: center; } .co-btn{     background: rgb(14 37 199);     font-size: 24rpx;     margin-top: 10rpx;       border-radius: 10rpx;     color: #fff;     padding: 18rpx 22rpx;     margin:0 10rpx 0 0; }

js部分

data:{    navbarInitTop: 0, //导航栏初始化距顶部的距离   isFixedTop: false, //是否固定顶部 } /*监听页面滑动事件*/     onPageScroll: function(e) {        let that = this;        let scrollTop = parseInt(e.scrollTop); //滚动条距离顶部高度        let isSatisfy = scrollTop >= that.data.navbarInitTop ? true : false;        //为了防止不停的setData, 这儿做了一个等式判断。 只有处于吸顶的临界值才会不相等       if (that.data.isFixedTop === isSatisfy) {         return false;       }        that.setData({            isFixedTop:isSatisfy        })     },     onShow: function () {         let that = this;         wx.createSelectorQuery().select('#operation-bar').boundingClientRect(function(rect) {             if (rect && rect.top > 0) {                 var navbarInitTop = parseInt(rect.top);                 that.setData({                     navbarInitTop: navbarInitTop                 });                  console.log(that.data.navbarInitTop)             }         }).exec();     },

wx.createSelectorQuery().select('#operation-bar').boundingClientRect(function(rect)}rect值可能为null

有查询节点需求可以用延时方法或者操作事件来获取。

推荐阅读