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


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实现滚动图片新闻的实例代码
Nov 27 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
Jan 03 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 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
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP微信API接口类
2016/08/22 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python之str操作方法(详解)
2017/06/19 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Python绘制股票移动均线的实例
2019/08/24 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
人力资源作业细则
2014/03/03 职场文书
仓库规划计划书
2014/04/28 职场文书
十佳家长事迹材料
2014/08/26 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
刑事案件上诉状
2015/05/23 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL