微信小程序 typescript 开发日历界面

1.界面代码

<view class="o-calendar"><view class="o-calendar-container" ><view class="o-calendar-titlebar"><view class="o-left_arrow" bind:tap="prevMonth">《</view>{{year}}年{{month}}月<view class="o-right_arrow" bind:tap="nextMonth">》</view><view class="o-btn-current-month" bind:tap="locateThisMonth"><image class="o-btn-current-month-img" src="../../images/month.svg" /></view></view><view class="o-calendar-weekdays"><view wx:for="{{weekdays}}" wx:key="id" class="o-calendar-weekdays-item" >{{item}}</view></view><view class="o-calendar-weeks"><block wx:for="{{calendarData}}" wx:key="index" ><view class="o-calendar-week"><block wx:for="{{item}}" wx:key="index"><block wx:if="{{item===0}}"><view class="o-calendar-item"></view></block><block wx:else><block wx:if="{{today && item===day}}"><view class="o-calendar-day o-calendar-day-cur" bindtap="selectDate" data-value='{{item}}'>{{item}}</view></block><block wx:elif="{{item===selectedDay}}"><view class="o-calendar-day o-calendar-day-selected" bindtap="selectDate" data-value='{{item}}'>{{item}}</view></block><block wx:else><view class="o-calendar-day" bindtap="selectDate" data-value='{{item}}'>{{item}}</view></block></block> </block></view></block></view></view> </view>

2.样式设置

page{--o-calendar-background-color: #F1EBFE;
}.o-calendar {width: 100%;display: flex;flex-direction: column;box-sizing: border-box;padding: 10rpx 30rpx;
} .o-calendar-container{padding: 0rpx 16rpx;background-color: var(--o-calendar-background-color);border-radius: 20rpx;
}.o-calendar-titlebar{display: flex;justify-content: center;align-items: center;height: 50rpx;font-size: 18px;font-weight: bold;padding-top: 20rpx;
}.o-left_arrow {width: 50rpx;height: 50rpx;position: absolute;left: 180rpx;
}.o-right_arrow {width: 50rpx;height: 50rpx;position: absolute;right: 180rpx;
}.o-btn-current-month{width: 50rpx;height: 50rpx;position: absolute;right: 80rpx;
}
.o-btn-current-month-img{width: 100%;height: 100%;
}.o-calendar-weekdays{width: 100%;height: 80rpx;display: flex;justify-content: space-between;align-items: center;
}
.o-calendar-weekdays-item{width: 60rpx;line-height: 60rpx;text-align: center;margin: 5rpx;
}.o-calendar-week{width: 100%;display: flex;justify-content: space-between;
}.o-calendar-item{width: 60rpx;height: 60rpx;position: relative;line-height: 60rpx;margin: 5rpx;
}.o-calendar-day {width: 60rpx;height: 60rpx;position: relative;display: flex;line-height: 60rpx;text-align: center;justify-content: center;margin: 5rpx;border-radius: 50%;cursor: pointer;background-color: #fff;
}.o-calendar-day-cur{font-weight: bold;color: #fff;background-color: #F6AD77;
}.o-calendar-day-selected{font-weight: bold;color: #fff;background-color: rgb(7, 3, 1);
}

3.typescript脚本处理

  /*** 页面的初始数据*/data: {year: 0, //记录年month: 0, //记录月day:0,//记录日selectedDay:0,calendarData: [], //记录日期weekdays: ['日', '一', '二', '三', '四', '五', '六'],today:false,},/*** 生命周期函数--监听页面加载*/onLoad() {this.renderCalendar();},renderCalendar: function () {//获取当前日期const currentDate:Date = new Date();const currentYear:number = currentDate.getFullYear();const currentMonth:number = currentDate.getMonth() + 1;const currentDay:number = currentDate.getDate();//获取年月日,未设置时默认当前日期const year:number = this.data.year || currentYear;const month:number = this.data.month || currentMonth;const day:number = this.data.day || currentDay;// 获取指定月份的总天数const totalDays:number = new Date(year, month, 0).getDate();// 获取指定月份第一天是星期几let firstDayOfWeek:number = new Date(year, month - 1, 1).getDay();//构建周期偏移实际数据let total = firstDayOfWeek + totalDays;// Math.ceil(total/7) -> 实际周期数total = Math.ceil(total/7)*7;// 定义存放日历数据的数组const calendarData:number[][] = [];// 初始化一个星期的数组let week:number[] = [];let num:number =0;for(let i=1;i<=total;i+=7){week = [];for(let j=0;j<7;j++){num = i-firstDayOfWeek +jweek.push(num<0 || num>totalDays? 0: num)}calendarData.push(week);}// 将生成的日历数据更新到页面数据中,使页面重新渲染this.setData({year: year,month: month,day:day,calendarData: calendarData as any,selectedDay:this.data.selectedDay,today: year==currentYear && month==currentMonth && day==currentDay,});
},selectDate(event: any){//console.log(event);this.setData({selectedDay: event.currentTarget.dataset.value,});},prevMonth(event: any){this.data.month -= 1;if(this.data.month==0){this.data.year -= 1;this.data.month = 12;}this.data.selectedDay=0;this.renderCalendar();},nextMonth(event: any){this.data.month += 1;if(this.data.month==13){this.data.year += 1;this.data.month = 1;}this.data.selectedDay=0;this.renderCalendar();},locateThisMonth(event: any){this.data.year=0;this.data.month=0;this.data.day=0;this.data.selectedDay=0;this.renderCalendar();},

4.效果

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

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

相关文章

Kafka集群安装部署

简介 Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样&#xff0c;Kafka也是消息队列。不过RabbitMQ多用于后端系统&#xff0c;因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系&#xff0c;因其更加专注于数据的吞吐能力…

机器学习:预测评估8类指标

机器学习&#xff1a;8类预测评估指标 R方值、平均值绝对误差值MAE、均方误差MSE、均方误差根EMSE、中位数绝对误差MAD、平均绝对百分误差MAPE、可解释方差分EVS、均方根对数误差MLSE。 一、R方值 1、说明&#xff1a; R方值&#xff0c;也称为确定系数或拟合优度&#xff…

css样式flex布局之,盒子垂直居中

<div class"item"><img src"../../assets/images!code_app.png" alt"" /><div>5555</div><p>微信扫一扫关注</p><p>“快速预约挂号”</p></div>.item{display: flex;flex-direction: col…

高薪程序员必修课-Java中 ReentrantLock的公平锁和非公平锁底层实现原理

目录 前言 公平锁&#xff08;Fair Lock&#xff09; 原理 实现 示例代码 底层实现 非公平锁&#xff08;Non-Fair Lock&#xff09; 原理 实现 示例代码 底层实现 比较与选择 总结 ⭐️ 好书推荐 前言 在Java中&#xff0c;ReentrantLock 提供了公平锁和非公平锁…

taoCMS v3.0.2 文件上传漏洞(CVE-2022-23880)

前言 CVE-2022-23880是一个影响taoCMS v3.0.2的任意文件上传漏洞。攻击者可以利用此漏洞通过上传特制的PHP文件在受影响的系统上执行任意代码。 漏洞细节 描述: 在taoCMS v3.0.2的文件管理模块中存在任意文件上传漏洞。攻击者可以通过上传恶意的PHP文件来执行任意代码。 影响…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备&#xff0c;实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点&#xff0c;能够满足光伏电站数据采集的各种需求。&#xff08;key-iot.com/iotlist/sr500…

如何策划交互设计创意?( 计育韬老师高校公益巡讲答疑实录2024)

这是计育韬老师第 8 次开展面向全国高校的新媒体技术公益巡讲活动了。而在每场讲座尾声&#xff0c;互动答疑环节往往反映了高校师生当前最普遍的运营困境&#xff0c;特此计老师在现场即兴答疑之外&#xff0c;会尽量选择有较高价值的提问进行文字答疑梳理。 *本轮巡讲主题除了…

【Altium】AD-在原理图中如何绘制贝塞尔曲线

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 在原理图中绘制贝塞尔曲线的方法 2、 问题场景 贝塞尔曲线主要用来描述各种波形曲线&#xff0c;如正弦、余弦曲线等。贝塞尔曲线的绘制和直线类似&#xff0c;需要固定多个顶点&#xff08;最少4个&#xff09;后即…

详解 RisePro 信息窃密木马

RisePro 是一种窃密木马&#xff0c;以恶意软件即服务&#xff08;MaaS&#xff09;的模式在地下论坛出售。该恶意软件家族最早在 2022 年被发现&#xff0c;近期攻击行为快速增长。 RisePro 不依赖特定的感染媒介&#xff0c;可以通过多种方式植入失陷主机&#xff0c;通常使…

Zabbix 配置WEB监控

Zabbix WEB监控介绍 在Zabbix中配置Web监控&#xff0c;可以监控网站的可用性和响应时间。Zabbix提供了内置的Web监控功能&#xff0c;通过配置Web场景&#xff08;Web Scenario&#xff09;&#xff0c;可以监控HTTP/HTTPS协议下的Web服务。 通过Zabbix的WEB监控可以监控网站…

Java的NIO体系

目录 NIO1、操作系统级别下的IO模型有哪些&#xff1f;2、Java语言下的IO模型有哪些&#xff1f;3、Java的NIO应用场景&#xff1f;相比于IO的优势在哪&#xff1f;4、Java的IO、NIO、AIO 操作文件读写5、NIO的核心类 :Buffer&#xff08;缓冲区&#xff09;、Channel&#xff…

【代码随想录——图论——图论理论基础】

1. 图论理论基础 1.1 图的基本概念 二维坐标中&#xff0c;两点可以连成线&#xff0c;多个点连成的线就构成了图。 当然图也可以就一个节点&#xff0c;甚至没有节点&#xff08;空图&#xff09; 1.1.1 图的种类 有向图 加权有向图无权有向图 无向图 加权无向图无权无向…

.NET C# 使用OpenCV实现人脸识别

.NET C# 使用OpenCV实现模型训练、人脸识别 码图~~~ 1 引入依赖 OpenCvSHarp4 - 4.10.0.20240616 OpenCvSHarp4.runtime.win - 4.10.0.20240616 2 人脸数据存储结构 runtime directory | face | {id}_{name} | *.jpg id - 不可重复 name - 人名 *.jpg - 人脸照片3 Demo 3.…

松下Panasonic机器人维修故障原因

松下机器人伺服电机是许多工业自动化设备的关键组成部分。了解如何进行Panasonic工业机械臂电机维修&#xff0c;对于确保设备正常运行至关重要。 【松下焊接机器人维修案例】【松下机器人维修故障排查】 一、常见松下工业机械手伺服电机故障及原因 1. 过热&#xff1a;过热可…

vue2+element-ui新增编辑表格+删除行

实现效果&#xff1a; 代码实现 &#xff1a; <el-table :data"dataForm.updateData"border:header-cell-style"{text-align:center}":cell-style"{text-align:center}"><el-table-column label"选项字段"align"center&…

C++:求梯形面积

梯形面积 已知上底15厘米&#xff0c;下底25厘米&#xff0c;问梯形面积值是多少&#xff1f; #include<iostream> using namespace std; int main() {//梯形的面积公式&#xff08;上底下底&#xff09; 高 2//上底变量、下底变量int s,d,h,m;s15;d25;h 2*150 * 2/s ;…

相亲交友APP系统婚恋交友社交软件开发语音视频聊天平台定制开发-婚恋相亲交友软件平台介绍——app小程序开发定制

互联网飞速发展的时代&#xff0c;相亲交友软件成为了许多年轻人首选的相亲方式&#xff0c;越来越多的单身男女希望在婚恋交友软件平台上寻找灵魂伴侣&#xff0c;相亲交友软件因此具有很高的市场价值。 多客婚恋相亲交友系统是一款定位高端&#xff0c;到手就能运营的成熟婚恋…

Redis 管道(Pipeline)是什么?有什么用?

目录 1. redis 客户端-服务端模型的不足之处 2. redis 管道是什么&#xff1f;有什么好处&#xff1f; 3. 管道的使用场景 4. 管道使用的注意事项 1. redis 客户端-服务端模型的不足之处 众所周知&#xff0c;redis 是一个客户端-服务端的模型设计&#xff0c;客户端向服务…

SALOME源码分析:View Model

作为一款开源的CAx(CAD/CAE/CAM)软件集成平台&#xff0c;为了实现各个Module支持不同的数据显示与交互方案&#xff0c;出于扩展性的考虑&#xff0c;SALOME引入了View Model&#xff0c;用以支持OpenGL、OCC、VTK、ParaView、Qwt等数据显示与交互实现。 本文将以OCCViewer、…

一文搞懂 java 线程池:ScheduledThreadPool 和 WorkStealingPool 原理

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…