这篇文章主要为大家详细介绍了某视频剪辑软件版日历组件的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
开发背景
常用日历组件可能满足不了我们自定义的多种需求(比如样式),因此通常情况下我们可能需要自己手动开发款日历,先上图
开发流程
1.根据常用日历样式,我们模板部分可以分为三部分(上下月及当前月份展示;周日至周六展示;主体日期展示三部分)
1)模板部分代码
div class='date '
div class='header '
span class=' pre _ month ' @ click=' on pre month '/span
跨度v-斗篷{{日期.年份}}年{{日期。月份}}月/span
' span class='下个月@click='下个月/span
/div
div class='天'
表格五-遮盖边框='0 '单元格间距='0 '单元格填充='0 '
' tr class='标签'
(美)财政部(财政部)周日/td
(美)财政部(财政部)周一/td
(美)财政部(财政部)周二/td
(美)财政部(财政部)周三/td
(美)财政部(财政部)周四/td
(美)财政部(财政部)周五/td
(美)财政部(财政部)周六/td
/tr
tr class=' row ' v-for=' weeks in weeks ':key=' week[0].日期
(美)财政部(财政部)
class='column '
v-for='一周中的某一天'
:key='day.date '
v-bind:day='day.date '
@click='onSelectDay(day)'
跨度
v-bind:class='[{
选中:selectedDate==day.date,
周末:day.isWeekend,
}]'
v-if='日。月份==日期。月{日。v } }/span
/td
/tr
/表格
/div
/div
2)js部分代码
//生成日历函数
初始日期(月){
var weeks=[] //模板中用来渲染日历的数组
var firstDay=this.moment(月,' YYYY-MM') //当月一号
var week=firstDay.format('d') //当月一号是周几(比如周五则周=5)
var start=firstDay.subtract(周,'天')//日历上展示的第一个数(上个月的二十几号之类的,用于补齐日历)
for(var I=0;i6;i ) { //通常日历为6行七排42天,因此两个为循环
var days=[]
for(var j=0;j 7;j ) {
var day={}
day.num=start.toObject().日期//当前号数22
日。日期=开始。格式(' YYYY-MM-DD ')//返回值为2021-10-22
day.month=start.format('MM') //当前号数对应的月份,比如日历上个月27号则日。月=9;这个月一号日。月=10
日。isweekend=(start。格式(' E ')===' 6 ' | |开始。格式(' E ')==' 7 ')?真:假//是否是周末,用于用户界面区分周末和平时的颜色
start.add(1,”天')//没循环一次日期加一天
天推(天)
}
周。推(天)
}
this.date.year=this.moment(月)。年份()
this.date.month=this.moment(月,' YYYY-MM ').添加(0,月')。格式("毫米")
this.date.preMonth=this.moment(月,' YYYY-MM ').添加(-1,'月')。格式(' YYYY-MM ')
这个。约会。下个月=这个。力矩(月,' YYYY-MM ').添加(1,”月')。格式(' YYYY-MM ')
返回周数
}
初始化完成后调用(用于模板中渲染)
已安装(){
const currDate=新日期()
这个。周=这个。initdate(this。moment(当前日期).格式(' YYYY-MM '))
}
上个月、下个月处理
//上一个月
onPreMonth() {
const month=this.date.preMonth
这个。周=这个。获取日历(此。时刻(月份).格式(' YYYY-MM '))
},
//下一个月
onNextMonth() {
const month=this.date.nextMonth
这个。周=这个。获取日历(此。时刻(月份).格式(' YYYY-MM '))
}
选中某一天
选举日(日){
如果(!this.isSelectDay)返回错误的
如果(天。月===这个。约会。月){
this.selectedDate=day.date
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。