位置: IT常识 - 正文

微信小程序实现顶部固定底部分页滚动效果(微信小程序实现支付功能)

编辑:rootadmin
这篇文章主要介绍了微信小程序实现顶部固定底部分页滚动效果,本文大概给大家分享三种解决方案,每种方案给大家详细剖析通过代码解析哪种方案更适合,感兴趣的朋友跟随小编一起看看吧 目录

推荐整理分享微信小程序实现顶部固定底部分页滚动效果(微信小程序实现支付功能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信小程序实现账号密码登录,微信小程序实现轮播图,微信小程序实现轮播效果的组件,微信小程序实现聊天功能,微信小程序实现发红包,微信小程序实现轮播效果的组件,微信小程序实现轮播效果的组件,微信小程序实现轮播效果的组件,内容如对您有帮助,希望把文章链接给更多的朋友!

方案说明:思路说明:

常见商品页效果:顶部banner+分类,下面商品列表。

方案说明:

方案1:整个页面滚动,滚动至某个位置fixed图中“顶部box2”,分页页面触底加载

方案2:页面高度为屏幕高度,商品部分使用scroll-view,scroll-view初始高度为屏幕高度-顶部高度,只滚动scroll-view。

思路说明:

  1 将整个页面分为上下两部分,整个页面高度100vh(原因1:scroll-view高度需要固定高度;原因2:出现两个滚动条)

  2 页面上半部分包括banner(box1)以及固定的搜索及tab(box2)

  3 根据顶部box的高度,算出下面scroll-view的高度(windowHieght - 200)

  4 scroll-view滑动到 顶部box1+margin10的高度,将box1隐藏,box2动画移至顶部;下面scroll高度+滚动高度(或box1高度) + margin10高度(确保scroll的商品吸顶之后任然沾满屏幕)

方案3:使用插件

微信小程序实现顶部固定底部分页滚动效果(微信小程序实现支付功能)

选择的是方案2,为什么不选择方案1,我们来剖析一下。

方案1适合页面交互比较简单,根据页面滚动高度隐藏展示即可。

  场景1:tab吸顶之后,切换tab请求数据,页面就会渲染为最初样式,不会吸顶。(请求会重新setData数据,有些数据有多有少)

复制以下代码可以直接演示demo效果

demo.wxml

<!--pages/demo/demo.wxml--><view class="wrap"><view class="top-box"><view class="top-box1">顶部box1</view><!-- <view class="top-box2"></view> --><scroll-view class="top-box2" scroll-into-view="{{scrollId}}" scroll-x="true"scroll-with-animation="true" ><block wx:for="{{cates}}" wx:key="index"><view class="{{item.id === currentId?'cate-item-act cate-item':'cate-item'}}" data-id="{{item.id}}" id="good{{item.id}}" bindtap="cateChange">{{item.name}}</view></block></scroll-view></view><scroll-view scroll-y="true" class="scroll-con" bindscroll="goodsViewScroll" bindscrolltoupper="goodsViewScrollTop"><view class="scroll-con-item" wx:for="{{cates}}" wx:key="index">{{item.name}}</view></scroll-view></view>

demo.js

Page({data: {cates:[{id:null,name:'全部'},{id:1,name:'分类1'},{id:2,name:'分类2'},{id:3,name:'分类3'},{id:4,name:'分类4'},{id:5,name:'分类5'},{id:6,name:'分类6'},{id:7,name:'分类7'},{id:8,name:'分类8'}],currentId:null,serviceList:[{id:1,name:'1'},{id:2,name:'2'},{id:3,name:'3'},{id:4,name:'4'},{id:5,name:'5'},{id:6,name:'6'},{id:7,name:'7'},{id:8,name:'8'}],scrollId:null,//滑动id,切换tab效果animationStyle:'',isNeedFixed:false},/*** 生命周期函数--监听页面加载*/onLoad(options) {let that = this;wx.getSystemInfo({success: function (res, rect) {that.setData({// 商品scroll高度 = 可使用窗口 - (顶部box的高度+margin20 -20(底部留白))scrollViewHeight: parseInt(res.windowHeight - 220 -20),scrollViewStyle:`height:${parseInt(res.windowHeight - 220-20)}px`})}})},cateChange(e){let currentId = e.currentTarget.dataset.id;let scrollId = e.currentTarget.id;this.setData({currentId,scrollId})},// 加this.data.isNeedFixed条件防止频繁的setdata// 1 隐藏box1,box2会自动吸顶 box2置顶// 2 设置scroll-view高度+120, 设置顶部box高度为box2高度goodsViewScroll(e){console.log(e.detail.scrollTop, this.data.isNeedFixed)if(e.detail.scrollTop >= 120 ){console.log('可以动画调整位置了')this.setData({isNeedFixed:true,box1Style:`height:0px;`,boxStyle:`height:80px;`,scrollViewStyle: `height:${this.data.scrollViewHeight + 120}px`,}}// if(e.detail.scrollTop < 120 ) {// console.log('需要保持原样')// this.setData({// isNeedFixed:false,// box1Style:`height:110px;`,// boxStyle:`height:200px;`,// scrollViewStyle: `height:${this.data.scrollViewHeight}px`,// },()=>{// wx.pageScrollTo({// scrollTop: 0,// })// })// }},goodsViewScrollTop(e){this.setData({isNeedFixed:false,box1Style:`height:110px;`,boxStyle:`height:200px;`,scrollViewStyle: `height:${this.data.scrollViewHeight}px`,})}})

demo.wxss

.wrap {height: 100vh;}.top-box {height: 200px;height: 200px;background-color: #fff;border: 1px solid #d1d1d1;transition:height 0.2s;-webkit-transition:height 0.2s; /* Safari */}.top-box1 {height: 110px;width: 100%;margin-bottom: 10px;background-color: #3293FF;overflow: hidden;transition:height 0.2s;-webkit-transition:height 0.2s; /* Safari */}.top-box2 {height: 80px;width: 100%;background-color: #ffbe32;white-space: nowrap;padding: 50rpx 0;box-sizing: border-box;}.top-box2 .cate-item {display: inline-block;padding: 10rpx 20rpx;font-size: 26rpx;margin-right: 20rpx;color: #767A84;}.top-box2 .cate-item:last-child{margin-right: 0rpx;}.top-box2 .cate-item-act {background: #3293FF;color: #fff;border-radius: 48rpx;}.scroll-con {padding: 0 10px;margin-top: 20px;box-sizing: border-box;background-color: #fff;}.scroll-con-item {height: 100px;width: 100%;background-color: salmon;margin-bottom: 10px;}.ani-btn {display: inline-block;padding: 20rpx;margin: 10rpx;border: 1px solid #d1d1d1;}@keyframes move{ from{transform: translateY( 30px)} to {transform: translateY( 0px)}}

说明1:scroll-into-view 设置哪个方向可滚动,则在哪个方向滚动到该元素

  scroll-view设置x轴滚动到scrollId位置 scroll-x="true"scroll-into-view="{{scrollId}}"    

  item子元素设置id="good{{item.id}}" 由于id不能已数字开头,所以前面拼了"good"

说明2:为什么要在bindscrolltoupper触顶事件中处理初始化样式,而不是在bindscroll的时候处理?

  使用bindscroll处理,滑动会有来回闪动的情况

这些只是大致思路,还有很多细节需要处理和考.......

到此这篇关于微信小程序实现顶部固定 底部分页滚动效果的文章就介绍到这了,更多相关小程序顶部固定内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本文链接地址:https://www.jiuchutong.com/zhishi/310666.html 转载请保留说明!

上一篇:java非公平锁如何理解(java公平锁有哪些)

下一篇:RabbitMQ 常见问题(rabbitmq work queue)

  • 社交推广是做微博营销还是微信营销?(社交平台推广的好处)

    社交推广是做微博营销还是微信营销?(社交平台推广的好处)

  • 抖音里面怎么充抖币(抖音里面怎么充值逗比)

    抖音里面怎么充抖币(抖音里面怎么充值逗比)

  • opporeno4pro有红外线功能吗(opporeno4有红外功能)

    opporeno4pro有红外线功能吗(opporeno4有红外功能)

  • 抖音第一个视频多少播放量正常(抖音第一个视频应该怎么发)

    抖音第一个视频多少播放量正常(抖音第一个视频应该怎么发)

  • 微信文件助手里的文件怎么打印出来(微信文件助手里的图片如何全部拖出来)

    微信文件助手里的文件怎么打印出来(微信文件助手里的图片如何全部拖出来)

  • 华为飞行模式在哪里关(华为飞行模式在哪里找关闭)

    华为飞行模式在哪里关(华为飞行模式在哪里找关闭)

  • 手机carrier是什么意思(苹果手机carrier是什么意思啊)

    手机carrier是什么意思(苹果手机carrier是什么意思啊)

  • 拼多多转化率什么意思(拼多多转化率越高越好吗)

    拼多多转化率什么意思(拼多多转化率越高越好吗)

  • 红外头是什么(红外探测器有什么用)

    红外头是什么(红外探测器有什么用)

  • 网易云音乐账号存在异常(网易云音乐账号手机号换了怎么找回)

    网易云音乐账号存在异常(网易云音乐账号手机号换了怎么找回)

  • 淘宝购物退款淘金币抵扣的还返回吗(淘宝购买退款)

    淘宝购物退款淘金币抵扣的还返回吗(淘宝购买退款)

  • 苹果手机无声怎么办(苹果手机无声怎处理?)

    苹果手机无声怎么办(苹果手机无声怎处理?)

  • 耳机的播放器是什么(耳机播放器搭配)

    耳机的播放器是什么(耳机播放器搭配)

  • 高德地图没声音在哪里可以设置(比亚迪高德地图没声音)

    高德地图没声音在哪里可以设置(比亚迪高德地图没声音)

  • 微信更换实名怎么查账单(微信更换实名怎么更换?)

    微信更换实名怎么查账单(微信更换实名怎么更换?)

  • 苹果care版什么意思(苹果care+有什么用)

    苹果care版什么意思(苹果care+有什么用)

  • lte中 pdcch的作用(ltecpe)

    lte中 pdcch的作用(ltecpe)

  • 结构化程序设计的特点(结构化程序设计的三种基本结构)

    结构化程序设计的特点(结构化程序设计的三种基本结构)

  • 如何限制95开头的电话(怎样设置95开头的号码进黑名单)

    如何限制95开头的电话(怎样设置95开头的号码进黑名单)

  • vivox23有没有防水功能(vivox23手机防窥屏怎么设置)

    vivox23有没有防水功能(vivox23手机防窥屏怎么设置)

  • airpods充了24小时会坏吗(airpods充了一晚上电没事吧)

    airpods充了24小时会坏吗(airpods充了一晚上电没事吧)

  • 苹果电脑pro和air区别(苹果电脑pro和air哪个贵)

    苹果电脑pro和air区别(苹果电脑pro和air哪个贵)

  • 苹果美团闪付怎么关闭(苹果美团闪付怎么还款)

    苹果美团闪付怎么关闭(苹果美团闪付怎么还款)

  • 荣耀20i呼吸灯在哪(荣耀20呼吸灯一直红色)

    荣耀20i呼吸灯在哪(荣耀20呼吸灯一直红色)

  • 面对面建群怎么改群主(面对面建群怎么找不到了)

    面对面建群怎么改群主(面对面建群怎么找不到了)

  • cad横向比例缩放(cad横向缩小)

    cad横向比例缩放(cad横向缩小)

  • 腾讯电脑管家流量监控怎么使用?(腾讯电脑管家流量监控不显示)

    腾讯电脑管家流量监控怎么使用?(腾讯电脑管家流量监控不显示)

  • 苹果手机下载手机铃声教程(苹果手机下载手机克隆哪个版本)

    苹果手机下载手机铃声教程(苹果手机下载手机克隆哪个版本)

  • 联邦学习(FL)+差分隐私(DP)

    联邦学习(FL)+差分隐私(DP)

  • 未认证发票有时间限制吗
  • 出纳与会计现金对不上
  • 汇算清缴补交所得税怎么做凭证
  • 电子承兑被退回在哪里
  • 未认证的发票如何作废
  • 收据能入账抵税吗
  • 个体户生产经营个人所得税
  • 股票发行费用属于资本成本中的筹资费用
  • 非盈利组织收到投资款如何做账
  • 企业存货实际成本的构成包括
  • 发票代码和发票号码是什么
  • 小规模纳税人开具增值税专用发票
  • 合作建房的土地出让金在土地增值税中可以加计扣除嘛
  • 装卸费和保险费是价外费用吗
  • 固定资产当月入账下月计提折旧
  • 质检实验室布局
  • 建设工程项目融资
  • 企业购入物资合同模板
  • 营改增的会计分录
  • 营改增后小规模纳税人
  • 增值税专用发票验票
  • 存货盘亏计入什么科目批准后
  • 股权转让未分配利润如何做账
  • 研发支出期末需结转吗
  • 小企业财务报表模板免费下载
  • 个人股权转给公司要交个税吗
  • 设备器具一次性扣除会计分录
  • win7系统无法启用网络发现
  • 怎么解决win11系统不兼容问题
  • bp程序是什么
  • cyb2k.exe是安全进程吗 cyb2k进程危险吗
  • 微星主板bios更新黑屏
  • win10预览版21337
  • windows10护眼色设置
  • 银行本票实际金额小于票面金额
  • ISBMgr.exe - ISBMgr是什么进程 有什么作用
  • 多提附加税跨年怎么计算
  • 发财树怎么修剪枝叶视频教程
  • 出口退税率的调整方法
  • php能开发微信小程序吗
  • php数据迁移
  • 金店个体户报什么税
  • 旅行社小规模纳税人差额征税
  • 其他收益增加说明什么
  • 承租人对融资租赁的处理原则
  • 运营级别划分
  • 年终奖怎么缴纳
  • 利润分配转作股本的股利属于什么科目
  • 怎么作废银联在网上银行
  • 固定资产折旧计入什么费用
  • 在建工程和预付账款怎么转化
  • 税控盘忘记抄报税怎么办
  • 物业公司代收取暖费怎么缴纳税额
  • 免予缴纳增值税
  • 房地产企业的企业所得税是多少
  • 工程施工的主要事迹
  • 广告宣传费纳税调整额怎么算
  • 在sql查询中使用where子句指定的是
  • microsoft window vista
  • 修改远程桌面端口命令是什么
  • windows service 2008 r2
  • mac怎样解压rar
  • linux命令放在哪个路径
  • Win8.164位/32位KB3096053补丁下载 主要修复KB3069114安装问题
  • Windows XP Vista 2006 简体中文版下载
  • linux系统的
  • 焦点轮播图代码
  • node.js创建服务
  • nodejs bff
  • unity如何调整界面
  • 编写批处理
  • django发送请求
  • 用javascript写表单代码
  • Android使用教程
  • javascript数组的常用方法
  • jquery操作
  • unity网络通信框架
  • 陕西省国家税务局
  • 赞美税务工作者的诗句
  • 建筑工程招标代理服务费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设