Skip to content

Commit 2276759

Browse files
committed
Update blog for favourite xiaochen
1 parent 3487ad6 commit 2276759

File tree

5 files changed

+310
-1
lines changed

5 files changed

+310
-1
lines changed

public/favourite/index.css

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
html,
2+
body {
3+
padding: 0%;
4+
margin: 0%;
5+
scroll-behavior: smooth;
6+
font-family: system-ui, —apple-system, Segoe UI, Rototo, Emoji, Helvetica, Arial, sans-serif;
7+
}
8+
9+
:root {
10+
--bg-color: #111111;
11+
--global-color: #ffffff;
12+
--year-color: #1abc9c;
13+
--day-color: #2ecc71;
14+
--hour-color: #3498db;
15+
--minute-color: #9b59b6;
16+
--second-color: #34495e;
17+
--title-color: #e67e22;
18+
--box-size: 3.6rem;
19+
}
20+
21+
.h2-title,
22+
.text {
23+
background: linear-gradient(45deg, #ff6b6b, #feca57, #ff9ff3);
24+
-webkit-background-clip: text;
25+
background-clip: text;
26+
color: transparent;
27+
}
28+
29+
a {
30+
text-decoration: none;
31+
}
32+
33+
body {
34+
background-color: var(--bg-color);
35+
}
36+
37+
38+
.wrapper {
39+
display: flex;
40+
flex-direction: column;
41+
align-items: center;
42+
justify-content: center;
43+
height: 100%;
44+
padding-block-start: 4rem;
45+
color: var(--global-color);
46+
47+
& .text {
48+
text-align: center;
49+
}
50+
}
51+
52+
.container:not(:last-child) {
53+
padding-block-end: 2.4rem;
54+
}
55+
56+
.box {
57+
display: flex;
58+
59+
& .item {
60+
height: var(--box-size);
61+
width: var(--box-size);
62+
padding: 0.2rem;
63+
border-radius: 0.2rem;
64+
background-color: red;
65+
}
66+
67+
& .item:not(:last-child) {
68+
margin-inline-end: 1rem;
69+
}
70+
71+
& #year {
72+
background-color: var(--year-color);
73+
}
74+
75+
& #day {
76+
background-color: var(--day-color);
77+
}
78+
79+
& #hour {
80+
background-color: var(--hour-color);
81+
}
82+
83+
& #minute {
84+
background-color: var(--minute-color);
85+
}
86+
87+
& #second {
88+
background-color: var(--second-color);
89+
}
90+
}
91+
92+
.item {
93+
display: flex;
94+
flex-direction: column;
95+
justify-content: space-between;
96+
cursor: pointer;
97+
transform: scale(1);
98+
transition: transform 0.8s, box-shadow 0.8s;
99+
100+
&:hover {
101+
box-shadow: 0 0 0.5rem 0.1rem var(--global-color);
102+
transform: scale(1.2);
103+
}
104+
105+
& .item-number {
106+
font-size: 1.2rem;
107+
font-weight: 700;
108+
text-align: center;
109+
}
110+
111+
& .item-chinese {
112+
font-size: 1.2rem;
113+
font-weight: 700;
114+
text-align: center;
115+
}
116+
}
117+
118+
dialog {
119+
border: none;
120+
border-radius: 0.2rem;
121+
122+
& form.dialog-form {
123+
display: flex;
124+
justify-content: space-around;
125+
}
126+
}
127+
128+
dialog::backdrop {
129+
-webkit-backdrop-filter: blur(5px);
130+
backdrop-filter: blur(5px);
131+
}

public/favourite/index.html

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<!DOCTYPE html>
2+
<html lang="zh-CN">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<meta name="description" content="你知道等待之后的味道是什么嘛?我可以一直一直的等你">
8+
<meta name="keywords" content="爱情, 等待, 离别, 温暖">
9+
<title>想给陈老师一个 🏠</title>
10+
<link rel="stylesheet" href="./index.css">
11+
<link rel="shortcut icon" href="/public/favicon.ico" type="image/x-icon">
12+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
13+
<script src="./index.js"></script>
14+
</head>
15+
16+
<body>
17+
<div class="wrapper">
18+
<h2 class="h2-title animate__animated animate__backInDown">❤️记录我和小陈的点点滴滴❤️</h2>
19+
<div class="container" id="meetting">
20+
<p class="text animate__animated animate__swing animate__infinite">距和陈老师相遇已经过去</p>
21+
<div class="box">
22+
<div class="item" id="year">
23+
<span class="item-number">0</span>
24+
<span class="item-chinese"></span>
25+
</div>
26+
<div class="item" id="day">
27+
<span class="item-number">0</span>
28+
<span class="item-chinese"></span>
29+
</div>
30+
<div class="item" id="hour">
31+
<span class="item-number">0</span>
32+
<span class="item-chinese"></span>
33+
</div>
34+
<div class="item" id="minute">
35+
<span class="item-number">0</span>
36+
<span class="item-chinese"></span>
37+
</div>
38+
<div class="item" id="second">
39+
<span class="item-number">0</span>
40+
<span class="item-chinese"></span>
41+
</div>
42+
</div>
43+
</div>
44+
<div class="container" id="birthday">
45+
<p class="text animate__animated animate__swing animate__infinite">距陈老师的下一个生日还有</p>
46+
<div class="box">
47+
<div class="item" id="year">
48+
<span class="item-number">0</span>
49+
<span class="item-chinese"></span>
50+
</div>
51+
<div class="item" id="day">
52+
<span class="item-number">0</span>
53+
<span class="item-chinese"></span>
54+
</div>
55+
<div class="item" id="hour">
56+
<span class="item-number">0</span>
57+
<span class="item-chinese"></span>
58+
</div>
59+
<div class="item" id="minute">
60+
<span class="item-number">0</span>
61+
<span class="item-chinese"></span>
62+
</div>
63+
<div class="item" id="second">
64+
<span class="item-number">0</span>
65+
<span class="item-chinese"></span>
66+
</div>
67+
</div>
68+
</div>
69+
<div class="container" id="photos-wall">
70+
<p class="text animate__animated animate__swing animate__infinite" id="hidden-button">我有好多话想对你说,你愿意听吗</p>
71+
72+
<dialog close id="x-dialog">
73+
<p class="text">我有好多话想对你说,你愿意听吗</p>
74+
<form method="dialog" class="dialog-form">
75+
<button id="dialog-Ok">OK</button>
76+
<button id="dialog-No">NO</button>
77+
</form>
78+
</dialog>
79+
</div>
80+
</div>
81+
</body>
82+
83+
</html>

public/favourite/index.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
const MS_IN_A_SECOND = 1000
2+
const MS_IN_A_MINUTE = MS_IN_A_SECOND * 60
3+
const MS_IN_AN_HOUR = MS_IN_A_MINUTE * 60
4+
const MS_IN_A_DAY = MS_IN_AN_HOUR * 24
5+
const MS_IN_A_YEAR = MS_IN_A_DAY * 365
6+
7+
const meettingTime = Date.parse("2024-06-22T23:39:00.000Z")
8+
const birthdayTime = +new Date("2024-11-20")
9+
10+
function getDiffTime({ start, end }) {
11+
const diff = end - start
12+
let rest = diff % MS_IN_A_YEAR
13+
14+
const years = Math.floor(diff / MS_IN_A_YEAR)
15+
const days = Math.floor(rest / MS_IN_A_DAY)
16+
rest %= MS_IN_A_DAY
17+
const hours = Math.floor(rest / MS_IN_AN_HOUR)
18+
rest %= MS_IN_AN_HOUR
19+
const minutes = Math.floor(rest / MS_IN_A_MINUTE)
20+
rest %= MS_IN_A_MINUTE
21+
const seconds = Math.floor(rest / MS_IN_A_SECOND)
22+
23+
return { years, days, hours, minutes, seconds }
24+
}
25+
26+
function updateTimerElements(elements, { years, days, hours, minutes, seconds }) {
27+
elements.forEach(e => {
28+
const parentId = e.parentNode.id
29+
switch (parentId) {
30+
case 'year':
31+
if (e.textContent !== years.toString()) e.textContent = years
32+
break
33+
case 'day':
34+
if (e.textContent !== days.toString()) e.textContent = days
35+
break
36+
case 'hour':
37+
if (e.textContent !== hours.toString()) e.textContent = hours
38+
break
39+
case 'minute':
40+
if (e.textContent !== minutes.toString()) e.textContent = minutes
41+
break
42+
case 'second':
43+
if (e.textContent !== seconds.toString()) e.textContent = seconds
44+
break
45+
}
46+
})
47+
}
48+
49+
function handleTimeElement(element) {
50+
const timeElements = Array.from(element.querySelectorAll('.item-number'))
51+
52+
return (start, end) => {
53+
const { years, days, hours, minutes, seconds } = getDiffTime({ start, end })
54+
updateTimerElements(timeElements, { years, days, hours, minutes, seconds })
55+
}
56+
}
57+
58+
document.addEventListener('DOMContentLoaded', () => {
59+
const meettingFunction = handleTimeElement(document.getElementById('meetting'))
60+
const birthdayFunction = handleTimeElement(document.getElementById('birthday'))
61+
62+
setInterval(() => {
63+
meettingFunction(meettingTime, +new Date())
64+
birthdayFunction(+new Date(), birthdayTime)
65+
}, 1000)
66+
67+
const hiddenButton = document.getElementById('hidden-button')
68+
const dialog = document.getElementById('x-dialog')
69+
hiddenButton.addEventListener('click', () => {
70+
dialog.showModal()
71+
})
72+
73+
const no = document.getElementById('dialog-No')
74+
no.addEventListener('click', (e) => {
75+
e.preventDefault()
76+
alert('再给你一次机会')
77+
})
78+
79+
const ok = document.getElementById('dialog-Ok')
80+
ok.addEventListener('click', () => {
81+
dialog.close()
82+
alert('这还差不多,哼')
83+
})
84+
})

src/util/header.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<nav class="toy-nav disappear">
1818
<a class="decoration-line" href="/public/resume/">我的简历</a>
1919
<a class="decoration-line" href="/public/write-css/index.html">学习 UI</a>
20+
<a class="decoration-line" href="/public/favourite/index.html">最喜爱的</a>
2021
</nav>
2122
</div>
2223
<a class="decoration-line" href="/feed.xml"><i class="fa-solid fa-rss fa-xs"></i> <span

src/util/resume/index.css

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
@import url("../css/base.css");
1+
html,
2+
body {
3+
padding: 0%;
4+
margin: 0%;
5+
scroll-behavior: smooth;
6+
font-family: system-ui, —apple-system, Segoe UI, Rototo, Emoji, Helvetica, Arial, sans-serif;
7+
}
8+
9+
a {
10+
text-decoration: none;
11+
}
212

313
@page {
414
size: A4;

0 commit comments

Comments
 (0)