Calendar was born for several product requirements
in the mobile. It’s free, cute and customized. html
The Calendar was builded by protogenic JavaScript. So you can use it with jQuery,Vue, React, and so on.git
github --- https://github.com/AppianZ/calendar, 欢迎使用github
中文文档在后面~算法
Calendar是为了知足移动端对各类场景
的需求而生的,兼容性强,灵活度高。npm
原生插件,能够与任何框架配合使用。数组
☑️ 限制时间范围,精确到【日期】app
☑️ 有【直接布局】和【弹层显示】两种不一样调用样式框架
☑️ 自由设置【月份和星期的中英文显示】、【星期天的排序位置】和【切换操做】dom
☑️ 利用回调控制【每个日期】的不一样样式ide
☑️ 能够【选中】时间点,或【时间范围】
☑️ 能够根据实际须要,【调整预判手势的灵敏度】
亲自体验一下demo:⬇️⬇️⬇️
1. html中:
<body> <!-- 在弹层模式中会须要一个元素触发弹层,target 能够是任意html标签。--> <div id="target">我是一个点击区域,你们快来点我</div> <!-- 插入日历的容器 --> <div id="container"></div> </body>
2. js中:
// 方式一, 直接引用 <script src="calendar.js"></script> // 方式二, 引入npm包 import Calendar from 'mob-calendar';
<script> // 实例化一个日历插件,具体参数意义能够看下文中的参数列表 new Calendar({ clickTarget: 'target', container: 'container', angle: 0, isMask: true, // 是否须要弹层 beginTime: [2017, 1, 1],//如空数组默认设置成1970年1月1日开始,数组的每一位分别是年月日。 endTime: [2018, 1, 13],//如空数组默认设置成次年12月31日,数组的每一位分别是年月日。 recentTime: [2018, 1, 2],//如空数组默认设置成当月1日,数组的每一位分别是年月日。 isSundayFirst: true, // 周日是否要放在第一列 isShowNeighbor: true, // 是否展现相邻月份的月尾和月头 isToggleBtn: true, // 是否展现左右切换按钮 isChinese: true, // 是不是中文 monthType: 3, // 0:1月, 1:一月, 2:Jan, 3: April canViewDisabled: false, // 是否能够阅读不在范围内的月份 beforeRenderArr: [{ stamp: 1512057600000, className: 'able', }], success: function (item, arr, cal) { console.log(item, arr); cal.hideBackground(); }, switchRender: function (year, month, cal) { console.log('计算机识别的 - 年份: ' + year + ' 月份: ' + month); var data = [{ 'stamp': 1507737600000, 'className': 'able1', }]; cal.renderCallbackArr(data); } }); </script>
如何正确生成实例,请看参数列表:⬇️⬇️⬇️
参数名称 | 做用 | 类型 | 取值 | 是否必须 |
---|---|---|---|---|
clickTarget | 触发弹层的dom元素ID | {String} | - | × |
container | 日历容器的dom元素ID | {String} | - | √ |
angle | 调整预判手势的灵敏度 | {Number} | 建议5-20 | × |
isMask | 布局是否使用弹层样式 | {Boolean} | true:弹层显示, false:正常布局 | √ |
beginTime | 开始时间点 | {Array(Number)} | 数组的每一位分别是年月日,空数组默认1970年1月1日 | √ |
endTime | 结束时间点 | {Array(Number)} | 数组的每一位分别是年月日,空数组默认次年12月31日 | √ |
recentTime | 当前时间点 | {Array(Number)} | 数组的每一位分别是年月日,空数组默认当前月1日 | √ |
isSundayFirst | 星期天是否要放在第一列 | {Boolean} | true:星期日在第一列, false:星期日在最后一列 | √ |
isShowNeighbor | 是否展现相邻月份的月尾和月头 | {Boolean} | true:显示相邻月份的月尾和月头, false:不显示 | √ |
isToggleBtn | 是否展现左右切换按钮 | {Boolean} | true:显示左右切换按钮, false:不显示 | √ |
isChinese | 是否展现中文星期 | {Boolean} | true:显示中文星期简写,false:显示英文星期简写 | √ |
monthType | 月份的展现字符 | {Number 0-3} | 0:1月, 1:一月, 2:Jan, 3: January | √ |
canViewDisabled | 是否能够阅读不在范围内的月份 | {Boolean} | true:无限滑动,false:只查看时间范围内的月份 | √ |
beforeRenderArr | 初次渲染时给特殊日期指定样式 | {无序Array(Object)} | 数组元素有两个参数 指定时间戳stamp{Number} 和 指定样式名字className {String} ,详见下文 |
√ |
success | 点击某个日期的回调 | {Fuction(item, array,cal)} | 返回3个自带参数,item 表示当前点击的时间戳,array 表示连续两次点击的两个时间戳,cal 指向实例 |
√ |
switchRender | 日历切换后的回调 | {Fuction(year, month, cal)} | 返回3个自带参数,year 表示新生成的年份,month 表示新生成的月份(从0开始), cal 指向实例 |
√ |
js中:
// 渲染时给特殊日期指定样式的数据格式 beforeRenderArr: [{ stamp: 1512057600000, // 指定某个时间戳 className: 'disable', //指定该时间戳渲染的样式 }]
html中:
// 渲染后的效果以下 // li 是一个矩形,i 是圆形 <li class="container-item-1512057600000 disable" data-stamp="1512057600000"> <i data-stamp="1512057600000">2</i> </li>
原型链暴露的函数 | 做用 | 示例 |
---|---|---|
renderCallbackArr | 渲染传入的数组data,用于指定特定日期的特定样式, 数组data和 beforeRenderArr 的数据格式一致 |
cal.renderCallbackArr(data) |
prevent | 方便在回调中阻止默认事件 | cal.prevent() |
hideBackground | 在弹窗模式中,可能须要用到的隐藏弹层的函数 | cal.hideBackground() |
正式发布初版日历
若是你遇到了什么神bug,请发起ISSUE联系我 ~
我是嘉宝Appian,一个卖萌出家的算法妹纸。