vue+elementUI简单的实现日历功能,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
< div class = "calender2" > < div class = "date-headers" > < div class = "date-header" > < div >< el-button type = "primary" @ click = "handlePrev" >< i class = "el-icon-arrow-left" ></ i >上一月</ el-button ></ div > < div >{{ year }}年{{ month }}月{{ day }}日</ div > < div >< el-button type = "primary" @ click = "handleNext" >下一月< i class = "el-icon-arrow-right" ></ i ></ el-button ></ div > < div >< el-button type = "primary" icon = "el-icon-refresh-left" @ click = "refresh" ></ el-button ></ div > </ div > </ div > < div class = "date-content" > < div class = "week-header" > < div v-for = "item in ['日','一','二','三','四','五','六']" :key = item >{{ item }} </ div > </ div > < div class = "week-day" > < div class = "every-day" v-for = "item in 42" :key = "item" @ click = "handleClickDay(item - beginDay)" > < div v-if="item - beginDay > 0 && item - beginDay <= curDays" :class="`${year}-${month}-${item - beginDay}` === `${year}-${month}-${day}` ? 'nowDay':''" >{{ item - beginDay }}</ div > < div class = "other-day" v-else-if = "item - beginDay <= 0" >{{ item - beginDay + prevDays }}</ div > < div class = "other-day" v-else>{{ item - beginDay -curDays }}</ div > </ div > </ div > </ div > </ div > |
## javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<script> export default { name: "HelloWorld" , data() { return { year: null , month: null , day: null , currentDay: null , currentYearMonthTimes: null , //当前年的月的天数 monthOneDay: null , //一个月中的某一天 curDate: null , prevDays: null , //上一月天数 } }, computed: { curDays() { return new Date( this .year, this .month, 0).getDate(); }, // 设置该月日期起始值(找到一号是在哪里) beginDay() { return new Date( this .year, this .month - 1, 1).getDay(); } }, created() { this .getInitDate(); this .currentYearMonthTimes = this .mGetDate( this .year, this .month); //本月天数 this .prevDays = this .mGetDate( this .year, this .month - 1); this .curDate = `${ this .year}-${ this .month}-${ this .day}` console.log( this .curDate) }, methods: { refresh(){ //强制刷新页面 location. reload() }, handleClickDay(day){ //点击这一天,绑定点击事件 console.log( '形参传进来的' ,day) console.log( 'data里面的this.day' , this .day) console.log( 'data里面的currentYearMonthTimes' , this .currentYearMonthTimes) this .day = day if ( this .day > this .currentYearMonthTimes){ this .$message.warning( '不能选择超出本月的日期' ); } console.log(day) }, computedDay() { const allDay = new Date( this .year, this .month, 0).getDate(); if ( this .day > allDay) { this .day = allDay; } }, //设置页头显示的年月日 getInitDate() { const date = new Date(); this .year = date.getFullYear(); this .month = date.getUTCMonth() + 1; this .day = date.getDate(); }, // 如果要获取当前月份天数: mGetDate() { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var d = new Date(year, month, 0); return d.getDate(); }, handlePrev() { if ( this .month == 1) { this .month = 12 this .year-- } else { this .month-- } this .computedDay() }, handleNext() { if ( this .month == 12) { this .month = 1 this .year++ } else { this .month++ } this .computedDay() } } } </script> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<style scoped> * { margin : 0px ; border : 0px ; list-style : none ; } .calender 2 { border-radius: 4px ; position : absolute ; top : 50% ; left : 50% ; transform: translate( -50% , -50% ); height : 396px ; width : 420px ; border : 1px solid #ccc ; box-shadow: 0 2px 4px rgba( 0 , 0 , 0 , . 12 ), 0 0 6px rgba( 0 , 0 , 0 , . 04 ) } .date-header { height : 60px ; width : 422px ; display : flex; align-items: center ; justify- content : space-around; } .date-headers { height : 60px ; width : 422px ; display : flex; } .pre-month { position : absolute ; display : inline- block ; height : 0px ; width : 0px ; border : 15px solid ; border-color : transparent rgb ( 35 , 137 , 206 ) transparent transparent ; } .next-month { position : absolute ; display : inline- block ; height : 0px ; width : 0px ; border : 15px solid ; border-color : transparent transparent transparent rgb ( 35 , 137 , 206 ); } .show-date { margin-left : 40px ; margin-top : 0px ; display : inline- block ; line-height : 30px ; text-align : center ; width : 310px ; color : rgb ( 35 , 137 , 206 ); } .week-header { color : #000000 ; font-size : 14px ; text-align : center ; line-height : 30px ; } .week-header div { margin : 0 ; padding : 0 ; display : inline- block ; height : 20px ; width : 60px ; } .every-day { display : inline- block ; height : 50px ; width : 60px ; text-align : center ; line-height : 50px ; } .other-day { color : #ccc ; } .nowDay { background : rgb ( 121 , 35 , 206 ); border : 1px solid #87c66d ; } .active-day { /* padding: 2px */ /* border-sizing:content-box; */ border : 2px solid rgb ( 35 , 137 , 206 ); } </style> |
完成后的效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/m0_47668952/article/details/108724136