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

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

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.png" 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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序wxs实现吸顶效果

    在.js文件中使用page的onPageScroll事件和scroll-view的scroll事件中产生卡顿 (setData 渲染会阻塞其它脚本执行,导致了整个用户交互的动画过程会有延迟), 所以使用wxs响应事件来实现吸顶效果.wxs响应事件基础库 2.4.4 开始支持,低版本需做兼容处理. 附上文档链接:wxs响应事件 吸顶效果 使用scroll-view组件实现滚动效果,页面和scroll-view组件的高度设成100%,当竖向滚动条大于等于导航到顶部距离时,导航变成固定定位,固定显示在

  • 微信小程序实现吸顶效果的方法实例

    目录 1. 实现方式 2. 存在的问题 3. 考虑是否有更好的实现方式 总结 背景是做一个日期title随着用户滑动,当滑到当前日期list数据时,有一个吸顶效果,并且该效果与原来样式不一样 1. 实现方式 scroll-view为小程序原生组件 handleScroll为滑动时触发的事件 scroll-y表示在垂直方向上允许滑动 class为fixed的元素在这做固定定位在scroll-view容器的顶部用于显示当前滑动到的日期 利用动态绑定class的方法去控制visibility的显示与否

  • 微信小程序实现吸顶特效

    本文实例为大家分享了微信小程序实现吸顶特效的具体代码,供大家参考,具体内容如下 效果图 wxml代码: <view class="xiding {{oneFixed}}" id="tab"> <van-row custom-class="goods_row" > <van-col span="12" custom-class="title-1"> 食疗方法 </va

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

    最开始的时候,在小程序中实现吸顶效果,开发工具看起来还挺好的,但是在真机上就会有问题了. 原因是我不停的去 setData 会导致操作反馈延迟严重,无法及时将操作处理结果及时传递到视图层. 后面就对代码进行了调整,避免不停的去setData 效果图 吸顶前 吸顶后 代码部分 wxml <view style="width: 90%; height: 300rpx; background: #f0f0f0; margin: 30rpx auto;"></view>

  • 微信小程序实现列表滚动头部吸顶的示例代码

    本文介绍了小程序头部吸顶的实现代码示例,分享给大家,也给自己留个笔记 demo 地址: https://github.com/iotjin/Jh_weapp 效果图: 吸顶主要是 position: sticky; .header { background: rgb(230, 230, 230); height: 25px; line-height: 25px; padding-left: 30rpx; font-size: 13px; align-items: center; position

  • 微信小程序实现简单吸顶效果

    本文实例为大家分享了微信小程序实现吸顶效果的具体代码,供大家参考,具体内容如下 吸顶效果思路: 1.首先获取 Tab 栏与顶部的距离: 2.监听页面滚动事件 onPageScroll,判断 Tab 栏是否滚动到顶部: 3.当 Tab 栏滚动到顶部时,添加吸顶样式,实现效果. Page({   data: {     navbarInitTop: 0, //导航栏初始化距顶部的距离     isFixedTop: false, //是否固定顶部   },     /**    * 生命周期函数--

  • 微信小程序实现简单的吸顶效果

    本文实例为大家分享了微信小程序实现简单吸顶效果的具体代码,供大家参考,具体内容如下 需求:进入页面后首先看到banner布局,然后是tab切换栏以及页面内容,当页面滚动到一定距离后,tab切换栏始终固定在顶部 wxml部分代码如下: <!--pages/test/test.wxml--> <view style="padding-bottom:30rpx;position:fixed;top:0;width:100%;background:#2ea7e0;">

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

    本文实例为大家分享了微信小程序实现吸顶盒效果的具体代码,供大家参考,具体内容如下 html部分  <!-- 列表 -->     <view class="partner-content-container mt15">         <!-- 吸顶盒 -->         <view class="partner-list-header {{isFixedTop?'tab-fixed':''}}" id='operat

  • 微信小程序 利用css实现遮罩效果实例详解

    微信小程序 利用css实现遮罩效果实例详解 实现效果图: 如图所示,使用css实现小程序的遮罩效果,代码如下 js文件代码: //index.js //获取应用实例 var app = getApp() Page({ data: { flag: false }, a: function(){ this.setData({flag: false}) }, b: function(){ this.setData({flag: true}) } }) wxss文件代码: .b1{position:fi

  • 微信小程序中吸底按钮适配iPhone X方案

    随着第二三批iPhone X的陆续到货,身边的土豪们纷纷用了起来,因为iPhone X的齐刘海导致的适配问题很多,所以这群土豪更沉浸在各种找bug中,不出所料,豌豆公主小程序在一些地方也出现了一丢丢体验不好的地方,主要是商品详情页和购物车的吸底按钮栏,会与 Home Indicator 横条重叠,这样在点击下方按钮时很容易误触发手势操作,如下图: 截图来自网络,侵删 是bug就得修,是体验问题就得优化,于是立马搞了一台iPhone X开始研究. 网页端的适配还好,有 viewport meta

  • 微信小程序实现验证码获取倒计时效果

    本文实例为大家分享了微信小程序实现获取验证码倒计时效果的具体代码,供大家参考,具体内容如下 wxml <button disabled='{{disabled}}' data-id="2" bindtap="getVerificationCode"> {{time}} </button> js var interval = null //倒计时函数 Page({ data: { date:'请选择日期', fun_id:2, time: '获

  • 详解微信小程序用定时器实现倒计时效果

    平常在微信小程序开发的时候,因项目的需求,倒计时必不可少,下面主要讲解定时器在微信小程序中的使用. 这里要先声明一点的就是,该篇主要实现倒计时功能,而且实现是时长较短的倒计时,其他的优化什么的不作主要考虑. 如果实现简单的60s倒计时效果,我们可直接使用setInterval即可,但是在微信小程序中,我们需要用微信小程序的语法,这时就会遇到一个难题,那就是怎么关闭定时器的问题,下面给出实例. WXML代码 <view class='countDown'>倒计时:<text style='

  • 微信小程序实现单选选项卡切换效果

    这里展示一个工作中用到的微信小程序的单选选项卡切换效果的制作方法,供大家参考,具体内容如下 效果如图: wxml: <view class="item" wx:for="{{data}}" wx:for-item="item" wx:for-index="idx" data-idx="{{idx}}" bindtap="chooseItem"> <view class=

  • 微信小程序页面缩放式侧滑效果的实现代码

    先给大家展示下效果图,大家感觉不错,请参考实现代码: 实现原理:点击按钮,往需要动画的div中添加或移除拥有动画效果的class. 由于微信小程序中不能操作page这个根节点,所以,只有用一个div(view)来模仿page根节点. 1.结构 <view class='page {{isFix?"pageShow":"pageHide"}}' > <view class='header'> <view class='h-toggle i

随机推荐