日历的面板是怎么画的?
最近遇到一个需求:选择一年中的任意天数作为非工作日,后端接口提供的是同一保存的方法。
这就需要把一年中的每一天同时展示在页面上,一般的calender组件都是只显示一个月,只好自己画一个了。
分析需求:
- 根据确定的年、月得出这个月的日期面板
- 只要确定了是那一年哪一个月,可以通过moment.js的api知道这个月一共有几天,第一天是星期几
- 观察日历的日期面板一般都是分为6行,7列,(1号是一周最后几天,31号会使用到第六行)
- 考虑1号不一定是周一的情况,会有一个偏移量
实现代码:
getDateList() { |
这里就获得了一个可以直接渲染的面板数据,在页面中渲染:
<tr class="list" v-for="(item,index) in list" :key="index" > |
搞完这些之后觉得会不会有更好的方法,看了antd的源码,rc-picker里面具体的面板实现的思路基本是一样的。
// =============================== Body =============================== |