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


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 相关文章推荐
datePicker——日期选择控件(with jquery)
Feb 20 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
js分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
浅谈js中的闭包
Mar 16 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
JavaScript的函数式编程基础指南
Mar 19 Javascript
简单实现轮播图效果的实例
Jul 15 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
基于javascript实现日历功能原理及代码实例
May 07 Javascript
js实现炫酷光感效果
Sep 05 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
JQuery live函数
2010/12/24 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python列表切片操作实例总结
2019/02/19 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
面包店的创业计划书范文
2014/01/16 职场文书
营销总经理岗位职责
2014/02/02 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL