【h5 uniapp】 滚动 滚动条,数据跟着变化

uniapp项目

在这里插入图片描述

需求:
向下滑动时,数据增加,上方的日历标题日期也跟着变化
向上滑动时,上方的日历标题日期跟着变化

实现思路:

  1. 初次加载目前月份的数据 以及下个月的数据 this.getdate()
  2. 触底加载 下个月份的数据 onReachBottom()
  3. 向上滑动,监听页面滚动onPageScroll() 得到 距离顶部的高度 res.scrollTop
  4. 距离顶部的高度 除以 每个数据块的 高度 再 向下取整 ,得到的数 与 数据的下标 做对比 刚好等于的 说明 正停留在这个数据块,再把数据中的年和月赋值给标签(具体代码实现在 onPageScroll 函数 里)

全文源码

<template><view class="u-p-b-150"><u-sticky><view class="flex_spacebetween u-p-l-40 u-p-r-32 u-p-y-22 u-bg-007 u-color-fff"><view class="u-flex u-f-s-38 u-f-w-600 u-c-p" @click.stop=""><view>{{yue | MonthTrans}} {{nian}}</view><image src="@/static/img/law/you1.png" mode="" class="u-w-32 u-h-32 u-m-l-24"></image></view><view class="bianji" @click.stop="$u.route('/pages/time/edit')">Edit</view></view><!-- 周几 --><view class="riqi u-flex u-p-x-24"><view>Mon</view><view>Tue</view><view>Wed</view><view>Thu</view><view>Fri</view><view>Sat</view><view>Sun</view></view></u-sticky><!-- 几号 --><view class="u-flex wrap u-p-x-19 yuansu"><view class="u-text-center u-m-t-24 hao " :class="item.choose?'haoAct':''" v-for="(item,i) in list" :key="i"><view>{{item.name}}</view><view v-if="item.choose" class="u-p-t-10">{{item.hour}}hr</view></view></view><lawTabbar :current='2'></lawTabbar></view>
</template><script>import {lsLawyerTimeMonth} from "@/api/index/index.js"import lawTabbar from '@/components/lawTabbar.vue'export default {components: {lawTabbar},data() {return {jinnian: '', // 记录 当前时间年份,不改变jinyue: '', // 记录 当前时间月份,不改变yuefen: '', // 当前时间  示例 2023-10-01  传值用nian: '', // 页面显示用yue: '', // 页面显示用nianyueri: '', // 现在的 2022-2-12-01xianianyueri: '', // 下一个月份 2022-2-12-01list: [// {choose:true,hour:'4hr',name:1},],scrollTop: 0}},filters: {MonthTrans(val) {let result = nullswitch (val) {case 1:return (result = 'January')breakcase 2:return (result = 'February')breakcase 3:return (result = 'March')breakcase 4:return (result = 'April')breakcase 5:return (result = 'May')breakcase 6:return (result = 'June')breakcase 7:return (result = 'July')breakcase 8:return (result = 'August')breakcase 9:return (result = 'September')breakcase 10:return (result = 'October')breakcase 11:return (result = 'November')breakcase 12:return (result = 'December')break}return result},},onShow() {this.list = [];this.getdate();},onLoad(option) {// this.getwidth();// yuansu 监听某个div 到达顶部},// mounted(){//  window.addEventListener('scroll',this.handleScrollx,true)// },// // 需要在页面销毁时,移除监听事件,避免了内存泄漏// beforeDestroy() {// 		window.removeEventListener("scroll",this.handleScrollx);// },methods: {// handleScrollx() {// 	// console.log(this.list.length)//   console.log('滚动高度',window.pageYOffset);//  },// 获取当前  年与月份getdate() {let that = this;var today = new Date();var year = today.getFullYear();var month = today.getMonth() + 1;var jinday = today.getDate();this.jinnian = year;this.jinyue = month;// 获取每月是多少天var day = new Date(year, month, 0).getDate();console.log(month + '月有' + day + '天');// 本月for (var i = 0; i < day; i++) {this.list.push({choose: false, // 是否选中hour: 0, // 总共多长时间name: i + 1, // 日month: month, // 月nian: year, // 年riqi: year + '-' + month + '-' + (Number(i + 1) < 10 ? '0' + Number(i + 1) : Number(i +1)) // 日期 2023-11-18});}// 获取每月1号是 周几let one = month + '/1' + '/' + year; //   10/1/2023// var weekArr = ['星期天','星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];var weekArr = ['0', '1', '2', '3', '4', '5', '6'];var week = weekArr[new Date(one).getDay()];console.log(month + '月1号是周' + week);let arr = []if (week == 2) {arr = [{name: ''}]} else if (week == 3) {arr = [{name: ''}, {name: ''}]} else if (week == 4) {arr = [{name: ''}, {name: ''}, {name: ''}]} else if (week == 5) {arr = [{name: ''}, {name: ''}, {name: ''}, {name: ''}]} else if (week == 6) {arr = [{name: ''}, {name: ''}, {name: ''}, {name: ''}, {name: ''}]} else if (week == 0) {arr = [{name: ''}, {name: ''}, {name: ''}, {name: ''}, {name: ''}, {name: ''}]}this.list = arr.concat(this.list);this.yuefen = year + '-' + month + '-01';this.nianyueri = year + '-' + month + '-' + jinday;this.nian = year;this.yue = month;uni.showLoading({title:'Loading'});this.getlist();setTimeout(function() {that.jiaFun();}, 300);},jiaFun() {// 月份加1var date2 = new Date(this.nianyueri);date2.setMonth(date2.getMonth() + 1);this.xianianyueri = this.DateToString(date2, 'yyyy-MM-dd')// console.log(this.xianianyueri ,'下一个月');var today1 = new Date(this.xianianyueri);var year1 = today1.getFullYear();var month1 = today1.getMonth() + 1;var jinday1 = today1.getDate();// 获取下一个月每月是几天var day1 = new Date(year1, month1, 0).getDate();console.log(this.xianianyueri + '有多少天' + day1)for (var i = 0; i < day1; i++) {this.list.push({choose: false, // 是否选中hour: 0, // 总共多长时间name: i + 1, // 日month: month1, // 月nian: year1, // 年riqi: year1 + '-' + month1 + '-' + (Number(i + 1) < 10 ? '0' + Number(i + 1) : Number(i +1)) // 日期 2023-11-18});}console.log(this.list, '所有')this.yuefen = this.xianianyueri;this.getlist();},// 月份 加1 DateToString(date, fmt) {var o = {'Q+': Math.floor((date.getMonth() + 3) / 3), // 季度'M+': date.getMonth() + 1, // 月份'd+': date.getDate(), // 日'h+': (date.getHours() % 24 == 0) ? '00' : date.getHours() % 24, // 小时'H+': date.getHours(), // 小时'm+': date.getMinutes(), // 分's+': date.getSeconds(), // 秒'f+': date.getMilliseconds() // 毫秒};var week = {'0': '/u65e5','1': '/u4e00','2': '/u4e8c','3': '/u4e09','4': '/u56db','5': '/u4e94','6': '/u516d'};if (/(y+)/.test(fmt))fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));if (/(E+)/.test(fmt))fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '/u661f/u671f' : '/u5468') :'') + week[date.getDay() + '']);for (var k in o) {if (k == 'f+') {if (new RegExp('(' + k + ')').test(fmt)) {var regExp0 = '000000000' + o[k];fmt = fmt.replace(RegExp.$1, regExp0.substr(regExp0.length - RegExp.$1.length));}} else {if (new RegExp('(' + k + ')').test(fmt))fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));}}return fmt;},getlist() {let data = {yuefen: this.yuefen,lawyerId: uni.getStorageSync('lawyerId')}lsLawyerTimeMonth(data).then(res => {uni.hideLoading();res.rows.forEach(item => {this.list.forEach(itemdata => {if (item.riqi == itemdata.riqi) {itemdata.choose = true;itemdata.hour = item.zongTime;}});});});}},//监听页面滚动onPageScroll(res) {let that = this;let a = 0a = res.scrollTop / 300;a = parseInt(a);if (a == 0) {that.nian = this.jinnian;that.yue = this.jinyue;} else {that.list.forEach((item, i) => {if (i / 29 == a + 1) {that.nian = item.nian;that.yue = item.month;}});}},// 触底加载onReachBottom() {console.log('触底加载', this.yue, this.nian);console.log('现在的月份', this.yuefen);var date = new Date(this.yuefen);date.setMonth(date.getMonth() + 1);this.yuefen = this.DateToString(date, 'yyyy-MM-dd');var today1 = new Date(this.yuefen);var year1 = today1.getFullYear();var month1 = today1.getMonth() + 1;var jinday1 = today1.getDate();// 获取下一个月每月是几天var day1 = new Date(year1, month1, 0).getDate();console.log(this.yuefen + '有多少天' + day1)for (var i = 0; i < day1; i++) {this.list.push({choose: false, // 是否选中hour: 0, // 总共多长时间name: i + 1, // 日month: month1, // 月nian: year1, // 年riqi: year1 + '-' + month1 + '-' + (Number(i + 1) < 10 ? '0' + Number(i + 1) : Number(i +1)) // 日期 2023-11-18});}this.nian = year1;this.yue = month1;this.getlist();},// onPullDownRefresh() {// 	this.pageNum = 1;// 	this.getlist();// 	setTimeout(function() {// 		uni.stopPullDownRefresh();// 	}, 1000);// }}
</script><style lang='scss' scoped>.bianji {width: 120rpx;height: 56rpx;border-radius: 28rpx;border: 2rpx solid #FFFFFF;font-size: 30rpx;font-family: Helvetica-Bold, Helvetica;font-weight: bold;line-height: 56rpx;text-align: center;cursor: pointer;}/* 750 - 48 / 7 == 100 2200 - 48 / 7 == 307*/.riqi {background: #F7F7F7;font-size: 30rpx;font-family: Helvetica;padding: 30rpx 0;view {cursor: pointer;width: 100rpx;text-align: center;}}.hao {font-size: 30rpx;font-family: Helvetica;padding-top: 16rpx;height: 124rpx;border-radius: 8rpx;width: 96rpx;box-sizing: border-box;margin: 0 3rpx;}.haoAct {background: #E5F7FF;color: #0078B2;font-family: Helvetica-Bold, Helvetica;font-weight: bold;}@media only screen and (min-width: 750px) {.riqi {view {width: 307rpx;}}.hao {width: 302rpx;}}
</style>```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/138769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CL-MVSNet论文精读

本文是对CL-MVSNet: Unsupervised Multi-View Stereo with Dual-Level Contrastive Learning Kaiqiang Xiong, Rui Peng, Zhe Zhang, Tianxing Feng, Jianbo Jiao, Feng Gao, Ronggang Wang的阅读记录 Proceedings of the IEEE/CVF International Conference on Computer Visio…

基于JavaWeb+SpringBoot+微信小程序的酒店商品配送平台系统的设计和实现

基于JavaWebSpringBoot微信小程序的酒店商品配送平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 本章内容概括了基于微信小程序的酒店商品配送平台的可行性分析、系统功…

MySQL中UUID主键的优化

UUID&#xff08;Universally Unique IDentifier 通用唯一标识符&#xff09;&#xff0c;是一种常用的唯一标识符&#xff0c;在MySQL中&#xff0c;可以利用函数uuid()来生产UUID。因为UUID可以唯一标识记录&#xff0c;因此有些场景可能会用来作为表的主键&#xff0c;但直接…

ObjectArx动态加载及卸载自定义菜单

上节中我们介绍了如何制作自定义菜单即cuix文件&#xff1a;给CAD中添加自定义菜单CUIX-CSDN博客https://blog.csdn.net/qianlixiaomage/article/details/134349794在此基础上&#xff0c;我们开发时通常需要在ObjectArx程序中进行动态的添加或者删除cuix菜单。 创建ObjectArx…

浅析移动端车牌识别技术的工作原理及其过程

随着社会经济的发展与汽车的日益普及带来巨大的城市交通压力,在此背景下,智能交通系统成为解决这一问题的关键。而在提出发展无线智能交通系统后,作为智能交通的核心,车牌识别系统需要开始面对车牌识别移动化的现实需求。基于实现车牌识别移动化这一目标,一种基于Android移动终…

适用于4D毫米波雷达的目标矩形框聚类

目录 一、前言 二、点云聚类分割 三、基于方位搜索L型拟合 四、评价准则之面积最小化 五、评价准则之贴合最大化 六、评价准则之方差最小化 一、前言 对于多线束雷达可以获取目标物体更全面的面貌&#xff0c;在道路中前向或角雷达可能无法获取目标车矩形框但可以扫到两边…

物联网AI MicroPython学习之语法uzlib解压缩

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; uzlib 介绍 uzlib 模块解压缩用DEFLATE算法压缩的二进制数据 &#xff08;通常在zlib库和gzip存档器中使用&#xff09;&#xff0c;压缩功能尚未实现。 注意&#xff1a;解压缩前&#xff0c;应检查模块内可…

力扣字符串--总结篇

前言 字符串学了三天&#xff0c;七道题。初窥kmp&#xff0c;已经感受到算法的博大精深了。 内容 对字符串的操作可以归结为以下几类&#xff1a; 字符串的比较、连接操作&#xff08;不同编程语言实现方式有所不同&#xff09;&#xff1b; 涉及子串的操作&#xff0c;比…

Unity Mirror学习(一) SyncVars特性使用

官网中所说的网络对象&#xff0c;指的是挂了 NetworkIdentity组件的对象 官网中所说的玩家对象&#xff0c;指的是NetworkManager脚本上的PlayerPrefab预制体 这个概念对阅读官网文档很重要&#xff0c;我刚开始并不理解&#xff0c;走了歪路 SyncVars&#xff08;同步变量&a…

【C++笔记】优先级队列priority_queue的模拟实现

【C笔记】优先级队列priority_queue的模拟实现 一、优先级队列的介绍与使用方式1.1、优先级队列介绍1.2、优先级队列的常见使用 二、优先级队列的模拟实现1.0、仿函数的介绍1.1、构造函数1.2、优先级队列的插入push1.3、优先级队列的删除(删除堆顶元素)1.4、获取堆顶元素1.5、判…

自然语言处理(一):RNN

「循环神经网络」&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一个非常经典的面向序列的模型&#xff0c;可以对自然语言句子或是其他时序信号进行建模。进一步讲&#xff0c;它只有一个物理RNN单元&#xff0c;但是这个RNN单元可以按照时间步骤进行展开…

classification_report分类报告的含义

classification_report分类报告 基础知识混淆矩阵&#xff08;Confusion Matrix&#xff09;TP、TN、FP、FN精度&#xff08;Precision&#xff09;准确率&#xff08;Accuracy&#xff09;召回率&#xff08;Recall&#xff09;F1分数&#xff08;F1-score&#xff09; classi…

管理员模式运行cmd或则bat文件的时候,出现路径错误的问题

最近在使用Comfyui, 不清楚啥原因&#xff0c;有时候Git无法访问&#xff0c;有时候文件夹无法访问的。就想把它的运行bat命令直接用 管理员模式运行&#xff0c;给到最高的权限&#xff0c;试试。但就这么简单的问题&#xff0c;搜了半天&#xff0c;都是一大堆不靠谱的教程&a…

大数据毕业设计选题推荐-污水处理大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

selenium+python做web端自动化测试框架实战

最近受到万点暴击&#xff0c;由于公司业务出现问题&#xff0c;工作任务没那么繁重&#xff0c;有时间摸索seleniumpython自动化测试&#xff0c;结合网上查到的资料自己编写出适合web自动化测试的框架&#xff0c;由于本人也是刚刚开始学习python&#xff0c;这套自动化框架目…

数字马力笔试面试复盘

笔试——10月9日19&#xff1a;00 单选&#xff1a;30题 16.如何获取AJAX 请求的响应状态码? A通过AJAX对象的 statusCode 属性获取 B通过AJAX对象的responseText 属性获取C通过AJAX对象的status 属性获取 D通过AJAX对象的responseCode属性获取 答案&#xff1a;可以通过AJAX…

osg点云加载与渲染

目录 效果 laslib 关键代码 完整代码 效果 las点云读取使用了laslib这个库。 laslib 关键代码 {// 这里演示读取一个 .txt 点云文件const char* lasfile path.c_str();std::ifstream ifs;ifs.open(lasfile, std::ios::in | std::ios::binary);liblas::ReaderFactory f;libl…

Spring Cloud学习(三)【Nacos注册中心】

文章目录 认识 NacosNacos 安装使用 Nacos 完成服务注册Nacos 服务分级存储模型集群负载均衡策略 NacosRule根据权重负载均衡Nacos 环境隔离&#xff08;命名空间&#xff09;Nacos 和 Eureka 的区别 认识 Nacos Nacos 是阿里巴巴的产品&#xff0c;现在是 SpringCloud 中的一…

Azure - 机器学习:自动化机器学习中计算机视觉任务的超参数

Azure Machine Learning借助对计算机视觉任务的支持&#xff0c;可以控制模型算法和扫描超参数。 这些模型算法和超参数将作为参数空间传入以进行扫描。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济…

【C++入门】构造函数析构函数

目录 前言 1. 类的默认成员函数 2. 构造函数 2.1 什么是构造函数 2.2 构造函数的特性 3. 析构函数 3.1 什么是析构函数 3.2 析构函数的特性 前言 前边我们已经了解了类和对像的基本概念&#xff0c;今天我们将继续深入了解类。类有6个默认成员函数&#xff0c;即使类中什么都…