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


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 json2 使用方法
Mar 16 Javascript
使用ExtJS技术实现的拖动树结点
Aug 05 Javascript
js 中的switch表达式使用示例
Jun 03 Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
Dec 06 Javascript
在vue中created、mounted等方法使用小结
Jul 21 Javascript
Vue实现穿梭框效果
Sep 30 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和ACCESS写聊天室(五)
2006/10/09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP中的session安全吗?
2016/01/22 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
JavaScript ES 模块的使用
2020/11/12 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
python中metaclass原理与用法详解
2019/06/25 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
医学生自我评价
2014/01/27 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
工程承包协议书范本
2014/09/29 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
个人自查自纠材料
2014/10/14 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
2015年入党决心书
2015/02/05 职场文书
初二英语教学反思
2016/02/15 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL