微信小程序日历组件使用方法详解


Posted in Javascript onDecember 29, 2018

这个日历采用小程序组件化开发,有兴趣的同学可以引用本组件(怎么引用不多赘述,自行去微信小程序开发api了解)

wxml

<!--pages/components/calender.wxml-->
<view class='calender'>
<view class='operate'>
<text catchtap='reduce'>减少</text>
<text catchtap="add">增加</text>
</view>
<view class='year'>
<text>{{year}}年</text>
<text>{{currentMonth}}月</text>
</view>
<view class='week'>
<block wx:for="{{weekArr}}" wx:key="{{index}}">
<text>{{item}}</text>
</block>
</view>
<view class='date'>
<block wx:for="{{dateArr}}" wx:key="{{index}}">
<text>{{item-(weekNum-1)<=0?"":item-(weekNum-1)>yearMonth[currentMonth-1]?"":item-(weekNum-1)}}</text>
</block>
</view>
</view>

js

// pages/components/calender.js
Component({
data:{
weekArr:["日","一","二","三","四","五","六"],
yearMonth:[],
rowNum:"",
dateArr:[],
currentMonth:"",
year:"",
weekNum:""
},
created:function(){},
attached:function(){
let T = new Date()
this.setData({
currentMonth: T.getMonth() + 1,
year: T.getFullYear()
})
//判断闰年
let yeartype = (this.data.year % 4 == 0) && (this.data.year % 100 != 0 || this.data.year % 400 == 0)
if ( yeartype ){
this.setData({
yearMonth: [31, 29 , 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
})
}else{
this.setData({
yearMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth +"-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth] + new Date(currentMonthDay).getDay())/7)
})
for( let i=0 ; i<this.data.rowNum ; i++ ){
for( let j = 0 ; j<7 ; j++ ){
this.data.dateArr.push(i*7+j)
}
}
this.setData({
dateArr:this.data.dateArr
})
},
methods:{
//获取下一个月份
add:function(){
this.triggerEvent("addone")
this.setData({
dateArr: []
})
if (this.data.currentMonth==12 ){
this.setData({
currentMonth: 1,
year:this.data.year+1
})
}else{
this.setData({
currentMonth: this.data.currentMonth + 1
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth + "-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth-1] + new Date(currentMonthDay).getDay()) / 7)
})
for (let i = 0; i < this.data.rowNum; i++) {
for (let j = 0; j < 7; j++) {
this.data.dateArr.push(i * 7 + j)
}
}
this.setData({
dateArr: this.data.dateArr
})
},
//获取上一个月份
reduce:function(){
this.triggerEvent("reduceone")
this.setData({
dateArr:[]
})
if (this.data.currentMonth == 1) {
this.setData({
currentMonth: 12,
year: this.data.year - 1
})
} else {
this.setData({
currentMonth: this.data.currentMonth - 1
})
}
let currentMonthDay = this.data.year + "-" + this.data.currentMonth + "-01"
let weekStr = ""
this.setData({
weekNum: new Date(currentMonthDay).getDay(),
rowNum: Math.ceil((this.data.yearMonth[this.data.currentMonth-1] + new Date(currentMonthDay).getDay()) / 7)
})
for (let i = 0; i < this.data.rowNum; i++) {
for (let j = 0; j < 7; j++) {
this.data.dateArr.push(i * 7 + j)
}
}
this.setData({
dateArr: this.data.dateArr
})
console.log(this.data.dateArr)
}
}
})

wxss

/* pages/components/calender.wxss */
.operate{
width:100%;
display: flex;
flex-direction: row;
justify-content: space-around;
font-size: 32rpx;
color:#000;
padding-bottom: 40rpx;
}
.year{
padding:0 30%;
display: flex;
flex-direction: row;
justify-content: space-around;
font-size:32rpx;
color:#404040;
margin-bottom: 40rpx;
}
.calender{
display: flex;
flex-direction: column;
padding:0 4.5%;
width:91%;
border-top:1rpx solid #eaeaea;
padding-top:30rpx;
color:#404040;
}
.calender .week{
display: flex;
flex-direction: row;
}
.calender .week text{
width:14%;
text-align: center;
font-size:26rpx;
}
.calender .date text{
width:14%;
display: inline-block;
text-align: center;
font-size:26rpx;
color:#000;
}

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

Javascript 相关文章推荐
javascript 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
Jul 27 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
微信公众号 摇一摇周边功能开发
Dec 08 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
微信小程序实现拖拽功能
Sep 26 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
springboot+vue实现文件上传下载
Nov 17 Vue.js
微信小程序自定义可滑动日历界面
Dec 28 #Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 #Javascript
微信小程序实现复选框效果
Dec 28 #Javascript
6行代码实现微信小程序页面返回顶部效果
Dec 28 #Javascript
微信小程序下拉框组件使用方法详解
Dec 28 #Javascript
微信小程序实现星级评价效果
Dec 28 #Javascript
微信小程序实现日历效果
Dec 28 #Javascript
You might like
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
AJAX的使用方法详解
2017/04/29 PHP
php数组和链表的区别总结
2019/09/20 PHP
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
Vue.js的动态组件模板的实现
2018/11/26 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
OpenLayers3实现地图显示功能
2020/09/25 Javascript
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python 字符串池化的前提
2020/07/03 Python
如何解决python多种版本冲突问题
2020/10/13 Python
关于python中remove的一些坑小结
2021/01/04 Python
python模块内置属性概念及实例
2021/02/18 Python
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
酒店总经理工作职责
2013/12/13 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
《藏戏》教学反思
2014/02/11 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
立志成才演讲稿
2014/09/04 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
OpenCV实现常见的四种图像几何变换
2022/04/01 Python
使用Ajax实现无刷新上传文件
2022/04/12 Javascript