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


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 相关文章推荐
jQuery textarea的长度进行验证
May 06 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
node.js学习总结之调式代码的方法
Jun 25 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
js简单实现网页换肤功能
Apr 07 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
vue项目tween方法实现返回顶部的示例代码
Mar 02 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
Apr 03 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
微信小程序自定义可滑动日历界面
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中使用Oracle数据库(3)
2006/10/09 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
react-router中的属性详解
2017/06/01 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
自主招生自荐信范文
2013/12/04 职场文书
爱情保证书大全
2014/04/29 职场文书
医院党员公开承诺书
2014/08/30 职场文书
内科护士节演讲稿
2014/09/11 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
全陪导游词
2015/02/04 职场文书
茶花女读书笔记
2015/06/29 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python