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


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 20 Javascript
javascript removeChild 使用注意事项
Apr 11 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
Oct 17 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
Aug 04 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
基于JavaScript实现类名的添加与移除
Apr 23 Javascript
基于复选框demo(分享)
Sep 27 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
ES5和ES6中类的区别总结
Dec 21 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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 图像函数大举例(非原创)
2009/06/20 PHP
php连接数据库代码应用分析
2011/05/29 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
php链式操作的实现方式分析
2019/08/12 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
js密码强度检测
2016/01/07 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
flask框架中勾子函数的使用详解
2018/08/01 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
网页设计个人找工作求职信
2013/11/28 职场文书
违反学校规定检讨书
2014/01/18 职场文书
四年级数学教学反思
2014/02/02 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
老师的检讨书
2014/02/23 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
在校实习生求职信
2014/06/18 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
学生会主席任命书
2015/09/21 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏