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


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 相关文章推荐
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
Jul 01 Javascript
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
js onload事件不起作用示例分析
Oct 09 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
Sep 09 Javascript
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
获取select的value、text值的简单示例(jquery与javascript)
Dec 07 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 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中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
pandas通过loc生成新的列方法
2018/11/28 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
安全标准化实施方案
2014/02/20 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
保险专业求职信
2014/07/07 职场文书
商场消防安全责任书
2014/07/29 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
爱国主义电影观后感
2015/06/18 职场文书
信用卡工作证明范本
2015/06/19 职场文书