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


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 相关文章推荐
两个select之间option的互相添加操作(jquery实现)
Nov 12 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
JavaScript新增样式规则(推荐)
Jul 19 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
Nov 29 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
Vue 3.0中jsx语法的使用
Nov 13 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
js 上传图片预览问题
2010/12/06 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
python获取本机外网ip的方法
2015/04/15 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
python 字符串追加实例
2019/07/20 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Django nginx配置实现过程详解
2020/09/10 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
保时捷设计:Porsche Design
2019/03/30 全球购物
个人自我评价分享
2013/12/20 职场文书
毕业生的自我评价
2013/12/30 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
员工考核管理制度
2014/02/02 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
新文化运动的基本口号
2014/06/21 职场文书
2014年妇联工作总结
2014/11/21 职场文书
单位介绍信格式
2015/01/31 职场文书
导游词300字
2015/02/13 职场文书
主持人开场白台词
2015/05/29 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Vue深入理解插槽slot的使用
2022/08/05 Vue.js