日历小案例

成品

代码

HTML

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
<div id="calendar">
<div id="yue">
<span></span>
</div>
<div id="rl">
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
</div>

CSS

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
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
#calendar {
width: 300px;
background-color: rgb(255, 251, 240);
border-radius: 10px;
margin: auto;
}
#yue {
border-radius: 10px 10px 0 0;
width: 100%;
height: 140px;
margin-bottom: 10px;
background-image: url(https://img.zcool.cn/community/0112bb5d77c95ea801211d53761186.gif);
background-size: cover;
position: relative;
}
#yue>span {
font-size: 50px;
color: rgb(95, 255, 250);
position: absolute;
bottom: 20px;
right: 20px;
}
#rl {
width: 100%;
padding: 5px 10px 10px 10px;
}
#rl span {
display: inline-block;
width: 35px;
text-align: center;
line-height: 25px;
height: 25px;
}
#rl>div>span {
color: rgb(207, 165, 255);
border-bottom: 2px solid pink;
margin-bottom: 10px;
}
#rl>div>div span {
font-weight: 600;
}

JS

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
var date = new Date();
// 月份
var yues = document.querySelector('#yue>span');
yues.innerHTML = date.getMonth() + 1;
// 获取月份天数
function getDays(year, month) {
let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if ((year % 4 === 0) && (year % 100 !== 0 || year % 400 === 0)) {
days[1] = 29;
}
return days[month]
}
// 详细日期
var yue = date.getMonth();
var qi = getDays(date.getFullYear(), yue);
// 求出每月第一天是周几
var xingqi = date.getDay();
xingqi = xingqi === 0 ? 7 : xingqi;
for (let i = 0; i < parseInt(date.getDate() % 7) - 1; i++) {
xingqi--;
if (xingqi === 0) xingqi = 7;
}
// 输出日历
xingqi--;
var td = document.querySelectorAll('#rl>div>div span');
for (let i = 0; i < xingqi; i++) {
td[i].innerText = '😈';
}
for (let i = xingqi; i <= qi + xingqi; i++) {
td[i].innerText = i - xingqi + 1;
if (i === xingqi + date.getDate() - 1) td[i].style.borderBottom = "2px solid pink";
}
for (let i = xingqi + qi; i < td.length; i++) {
td[i].innerText = '👿';
}