jekyll-theme-chirpy-customized-upe 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ed79498677653b636d613f4f147f1cd4be6439738fdfe40c7b8927cc6755221
4
- data.tar.gz: 0f8915943f273262bcaf6b9d1818ce8c00cba22f9ac79a06b907547c6356080c
3
+ metadata.gz: 90915084ca09e6f61320fd36ab499413c17778116c5eb81e3e213174d380810a
4
+ data.tar.gz: bdfb5a16d1be1180fc99b2a00d224fb86bac8fe6d8756612fc3287fae27950bf
5
5
  SHA512:
6
- metadata.gz: 958c0aeb81de74c687bdc4d97c3b7e480503062163e637f100e7cbf371d182169fbaefc18d57acc19d9252260b44d68424b85023a616e4fd9a6c628eaf8037af
7
- data.tar.gz: c8bcf7a011a8875652b3f3eaf1791c88737ab76569c007cc40119949dbb56ed743692a0c7d91ff20c702e01631de2b0ab77ebf2588bf08db96c8b19f2ef31458
6
+ metadata.gz: 5a95e1894ad1bfc0f2435a050d07496cb7b91cf315dd3c3c762b7b38c59f300187c08d7a2d377688e3ce0c47989af7c8b09fd6db192ef6defa93ac9efbb9d412
7
+ data.tar.gz: e9b978f91060e6d9e3c7b746dba89cabd1d162eb92f0f8bef5fc1f223d76bd6b81973cc3a4426855e05d509c4545ce140482f6df9a5094bc60b7f7efa23037dd
@@ -0,0 +1,12 @@
1
+ {% comment %} Site static assets origin {% endcomment %}
2
+ {% assign origin = 'cross_origin' %}
3
+
4
+ {% if site.assets.self_host.enabled %}
5
+ {% if site.assets.self_host.env %}
6
+ {% if site.assets.self_host.env == jekyll.environment %}
7
+ {% assign origin = 'self_host' %}
8
+ {% endif %}
9
+ {% else %}
10
+ {% assign origin = 'self_host' %}
11
+ {% endif %}
12
+ {% endif %}
@@ -0,0 +1,14 @@
1
+ <div class="loader-wrapper">
2
+ <span class="loader"><span class="loader-inner"></span></span>
3
+ </div>
4
+ <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
5
+ <script>
6
+ $(window).on("load", function () {
7
+ $(".loader-wrapper").fadeOut("slow");
8
+ });
9
+ setTimeout(function () {
10
+ if ($(".loader-wrapper").is(":visible")) {
11
+ alert('检测到当前页面加载时间已超过 15 秒,原因可能是您的网速过慢或系统正在维护,您可继续等待加载或尝试刷新页面以解决。');
12
+ };
13
+ }, 15000);
14
+ </script>
@@ -0,0 +1,38 @@
1
+ <script src="https://cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js"></script>
2
+ <script type="text/javascript">
3
+ let appId = '{{ site.Leancloud.appId }}';
4
+ let appKey = '{{ site.Leancloud.appKey }}';
5
+ let serverURL = '{{ site.Leancloud.serverURL }}';
6
+ AV.init({
7
+ appId: appId,
8
+ appKey: appKey,
9
+ serverURL: serverURL,
10
+ });
11
+
12
+ const currentUser = AV.User.current();
13
+
14
+ if (currentUser != null) {
15
+ if (currentUser.get('avatar')) {
16
+ document.getElementById('avatar').getElementsByTagName('img')[0].src = currentUser.get('avatar');
17
+ }
18
+ if (currentUser.get('nickname')) {
19
+ document.querySelector('.site-title a').innerText = "Hi " + currentUser.get('nickname') + " !";
20
+ } else if (currentUser.get('username')) {
21
+ document.querySelector('.site-title a').innerText = "Hi " + currentUser.get('username') + "!";
22
+ }
23
+ }
24
+
25
+ function checkLogin() {
26
+ if (currentUser != null) {
27
+ document.body.style.display = 'block';
28
+ } else {
29
+ /* 显示注册或登录页面 */
30
+ let originalUrl = window.location.href;
31
+
32
+ window.location.href = '{{ site.baseurl }}/login?redirect=' + encodeURIComponent(originalUrl);
33
+ /* window.location.href = '{{ site.baseurl }}/login'; */
34
+ }
35
+ };
36
+ /* 在页面加载时调用checkLogin函数检查登录状态 */
37
+ window.addEventListener('load', checkLogin);
38
+ </script>
@@ -0,0 +1,28 @@
1
+ <script type="text/x-mathjax-config">
2
+ MathJax.Hub.Config({
3
+ TeX: {
4
+ equationNumbers: {
5
+ autoNumber: "AMS"
6
+ }
7
+ },
8
+ extensions: ["tex2jax.js"],
9
+ jax: ["input/TeX", "output/HTML-CSS"],
10
+ tex2jax: {
11
+ inlineMath: [ ['$','$'], ["\\(","\\)"] ],
12
+ displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
13
+ processEscapes: true,
14
+ "HTML-CSS": { fonts: ["TeX"] }
15
+ }
16
+ });
17
+ MathJax.Hub.Register.MessageHook("Math Processing Error",function (message) {
18
+ alert("Math Processing Error: "+message[1]);
19
+ });
20
+ MathJax.Hub.Register.MessageHook("TeX Jax - parse error",function (message) {
21
+ alert("Math Processing Error: "+message[1]);
22
+ });
23
+ </script>
24
+ <script
25
+ type="text/javascript"
26
+ async
27
+ src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"
28
+ ></script>
@@ -0,0 +1,17 @@
1
+ {% if site.valine_comment.enable %}
2
+ <div id="comments"></div>
3
+ <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
4
+ <script src='//unpkg.com/valine/dist/Valine.min.js'></script>
5
+ <script>
6
+ new Valine({
7
+ el: '#comments',
8
+ app_id: '{{ site.valine_comment.leancloud_appid }}',
9
+ app_key: '{{ site.valine_comment.leancloud_appkey }}',
10
+ placeholder: '🥳 快来发表一条评论吧!(允许匿名评论)\n📨 呢称填入QQ号可以自动补全邮箱和显示头像 \n📬 留下您的邮箱,如有回复消息,会通过邮件向您发送通知 \n📝 请遵守网络道德',
11
+ avatar: 'monsterid',
12
+ serverURLs: '{{ site.valine_comment.serverURLs }}',
13
+ visitor: true,
14
+ enableQQ: '{{ site.valine_comment.enableQQ }}'
15
+ });
16
+ </script>
17
+ {% endif %}
@@ -0,0 +1,164 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ <meta name="referrer" content="no-referrer" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.5.1/css/all.min.css">
10
+ <title> Forgot </title>
11
+
12
+ <style>
13
+ body {
14
+ display: flex;
15
+ justify-content: center;
16
+ align-items: center;
17
+ height: 100vh;
18
+ background-color: rgb(27, 27, 30);
19
+ }
20
+
21
+ .shell {
22
+ width: 350px;
23
+ padding: 40px;
24
+ display: flex;
25
+ align-items: center;
26
+ flex-direction: column;
27
+ }
28
+
29
+ .title {
30
+ color: #ffffff;
31
+ font-size: 60px;
32
+ font-family: 'Times New Roman', Times, serif;
33
+ margin-bottom: 30px;
34
+ }
35
+
36
+ input[type="text"],
37
+ input[type="password"],
38
+ input[type="email"] {
39
+ width: 100%;
40
+ height: 50px;
41
+ margin: 10px 0;
42
+ box-sizing: border-box;
43
+ color: black;
44
+ border: 1px solid #000;
45
+ background-color: #fff;
46
+ border-radius: 10px;
47
+ padding: 5px;
48
+ font-size: 1rem;
49
+ outline: none;
50
+ }
51
+
52
+ input[type="submit"] {
53
+ width: 30%;
54
+ height: 30px;
55
+ padding: 0;
56
+ margin: 15px 0;
57
+ font-family: Arial, Helvetica, sans-serif;
58
+ color: #fff;
59
+ background-color: #007bff;
60
+ cursor: pointer;
61
+ font-size: 20px;
62
+ border: none;
63
+ text-align: center;
64
+ align-items: center;
65
+ border-radius: 8px;
66
+ }
67
+
68
+ .footer {
69
+ display: flex;
70
+ flex-direction: row;
71
+ justify-content: space-evenly;
72
+ align-items: center;
73
+ width: 100%;
74
+ margin-top: 20px;
75
+ }
76
+
77
+ .remember {
78
+ display: flex;
79
+ justify-content: center;
80
+ align-items: center;
81
+ font-family: Arial, Helvetica, sans-serif;
82
+ color: #fff;
83
+ }
84
+
85
+ input[type="checkbox"] {
86
+ display: block;
87
+ width: 25px;
88
+ height: 25px;
89
+ }
90
+
91
+
92
+ #signUp,
93
+ #forgotPassword {
94
+ background: none;
95
+ border: none;
96
+ text-decoration: underline;
97
+ font-size: 15px;
98
+ border-radius: 5px;
99
+ color: rgba(203, 203, 211, 0.447);
100
+ font-family: Arial, Helvetica, sans-serif;
101
+ cursor: pointer;
102
+ }
103
+
104
+
105
+ /* 浅色模式 */
106
+ @media (prefers-color-scheme: light) {
107
+ body {
108
+ background-color: white;
109
+ }
110
+
111
+ .title {
112
+ color: #2a2a2a;
113
+ }
114
+
115
+ .remember {
116
+ color: #2a2a2a;
117
+ }
118
+
119
+ #signUp {
120
+ color: rgba(51, 51, 53, 0.447);
121
+ }
122
+ }
123
+ </style>
124
+ </head>
125
+
126
+ <body>
127
+ <div class="shell">
128
+ <h2 class="title">Forgot</h2>
129
+ <input type="email" id="email" placeholder="Enter the email you used to login">
130
+ <input type="submit" value="Confirm" id="loginBtn">
131
+ </div>
132
+
133
+
134
+ <script src="https://cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js"></script>
135
+ <script>
136
+ let appId = '{{ site.Leancloud.appId }}';
137
+ let appKey = '{{ site.Leancloud.appKey }}';
138
+ let serverURL = '{{ site.Leancloud.serverURL }}';
139
+ AV.init({
140
+ appId: appId,
141
+ appKey: appKey,
142
+ serverURL: serverURL,
143
+ });
144
+ document.getElementById('loginBtn').addEventListener("click", async function () {
145
+ var email = document.getElementById("email").value.trim();
146
+ try {
147
+ await AV.User.requestPasswordReset(email);
148
+ alert('The reset-password email was successfully!');
149
+ } catch (error) {
150
+ if (error.code == '204') {
151
+ alert('The email is missing, please enter your email address.');
152
+ }
153
+ else if (error.code == '205') {
154
+ alert('The email is invalid.');
155
+ } else {
156
+ alert('An unknown error occurred');
157
+ }
158
+ }
159
+
160
+ });
161
+ </script>
162
+ </body>
163
+
164
+ </html>
@@ -0,0 +1,268 @@
1
+ ---
2
+ layout: compress
3
+ ---
4
+ <!DOCTYPE html>
5
+ <html>
6
+
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
10
+ <meta name="referrer" content="no-referrer" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1">
12
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.5.1/css/all.min.css">
13
+ <title> Login </title>
14
+ <style>
15
+ body {
16
+ display: flex;
17
+ justify-content: center;
18
+ align-items: center;
19
+ height: 100vh;
20
+ background-color: rgb(27, 27, 30);
21
+ }
22
+
23
+ .shell {
24
+ width: 350px;
25
+ padding: 40px;
26
+ display: flex;
27
+ align-items: center;
28
+ flex-direction: column;
29
+ }
30
+
31
+ .title {
32
+ color: #ffffff;
33
+ font-size: 60px;
34
+ font-family: 'Times New Roman', Times, serif;
35
+ margin-bottom: 30px;
36
+ }
37
+
38
+ input[type="text"],
39
+ input[type="password"],
40
+ input[type="email"] {
41
+ width: 100%;
42
+ height: 50px;
43
+ margin: 10px 0;
44
+ box-sizing: border-box;
45
+ color: black;
46
+ border: 1px solid #000;
47
+ background-color: #fff;
48
+ border-radius: 10px;
49
+ padding: 5px;
50
+ font-size: 1rem;
51
+ outline: none;
52
+ }
53
+
54
+ #email {
55
+ display: none;
56
+ }
57
+
58
+ input[type="submit"] {
59
+ width: 30%;
60
+ height: 30px;
61
+ padding: 0;
62
+ margin: 15px 0;
63
+ font-family: Arial, Helvetica, sans-serif;
64
+ color: #fff;
65
+ background-color: #007bff;
66
+ cursor: pointer;
67
+ font-size: 20px;
68
+ border: none;
69
+ text-align: center;
70
+ align-items: center;
71
+ border-radius: 8px;
72
+ }
73
+
74
+ .footer {
75
+ display: flex;
76
+ flex-direction: row;
77
+ justify-content: space-evenly;
78
+ align-items: center;
79
+ width: 100%;
80
+ margin-top: 20px;
81
+ }
82
+
83
+ .remember {
84
+ display: flex;
85
+ justify-content: center;
86
+ align-items: center;
87
+ font-family: Arial, Helvetica, sans-serif;
88
+ color: #fff;
89
+ }
90
+
91
+ input[type="checkbox"] {
92
+ display: block;
93
+ width: 25px;
94
+ height: 25px;
95
+ }
96
+
97
+
98
+ #signUp,
99
+ #forgotPassword {
100
+ background: none;
101
+ border: none;
102
+ text-decoration: underline;
103
+ font-size: 15px;
104
+ border-radius: 5px;
105
+ color: rgba(203, 203, 211, 0.447);
106
+ font-family: Arial, Helvetica, sans-serif;
107
+ cursor: pointer;
108
+ }
109
+
110
+ /* 浅色模式 */
111
+ @media (prefers-color-scheme: light) {
112
+ body {
113
+ background-color: white;
114
+ }
115
+
116
+ .title {
117
+ color: #2a2a2a;
118
+ }
119
+
120
+ .remember {
121
+ color: #2a2a2a;
122
+ }
123
+
124
+ #signUp {
125
+ color: rgba(51, 51, 53, 0.447);
126
+ }
127
+
128
+ #forgotPassword {
129
+ color: rgba(51, 51, 53, 0.447);
130
+ }
131
+ }
132
+ </style>
133
+ </head>
134
+
135
+ <body>
136
+ <div class="shell">
137
+ <h2 class="title">Login</h2>
138
+ <input type="text" id="username" placeholder="Username">
139
+ <input type="password" id="password" placeholder="Password">
140
+ <input type="email" id="email" placeholder="Email(MUST)">
141
+ <input type="submit" value="Login" id="loginBtn">
142
+ <div class="footer">
143
+ {% if site.Leancloud.allowRegister %}
144
+ <button id="signUp">Go to Register</button>
145
+ {% endif %}
146
+ <button id="forgotPassword">Forgot Password?</button>
147
+ </div>
148
+ </div>
149
+
150
+ <script>
151
+
152
+ document.getElementById('signUp').addEventListener('click', function () {
153
+ var title = document.querySelector('.title');
154
+ var loginBtn = document.getElementById('loginBtn');
155
+ var signUpBtn = document.getElementById('signUp');
156
+ if (title.innerText == 'Login') {
157
+ title.innerText = 'Register';
158
+ loginBtn.value = 'Register';
159
+ signUpBtn.innerText = 'Go to login';
160
+ document.getElementById('username').value = '';
161
+ document.getElementById('password').value = '';
162
+ document.getElementById('username').placeholder = 'New User Name';
163
+ document.getElementById('password').placeholder = 'New Password';
164
+ document.getElementById('password').type = 'password';
165
+ document.getElementById('email').style.display = 'block';
166
+ } else {
167
+ title.innerText = 'Login';
168
+ loginBtn.value = 'Login';
169
+ signUpBtn.innerText = 'Go to register';
170
+ document.getElementById('username').placeholder = 'Username';
171
+ document.getElementById('password').placeholder = 'Password';
172
+ document.getElementById('password').type = 'password';
173
+ document.getElementById('email').style.display = 'none';
174
+ }
175
+
176
+ })
177
+ </script>
178
+
179
+ <script src="https://cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js"></script>
180
+ <script>
181
+ let appId = '{{ site.Leancloud.appId }}';
182
+ let appKey = '{{ site.Leancloud.appKey }}';
183
+ let serverURL = '{{ site.Leancloud.serverURL }}';
184
+ AV.init({
185
+ appId: appId,
186
+ appKey: appKey,
187
+ serverURL: serverURL,
188
+ });
189
+
190
+ function validateEmail(email) {
191
+ var re = /\S+@\S+\.\S+/;
192
+ return re.test(email);
193
+ }
194
+
195
+ function getUrlParameter(name) {
196
+ name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
197
+ var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
198
+ var results = regex.exec(location.search);
199
+ return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
200
+ }
201
+
202
+ document.getElementById('loginBtn').addEventListener("click", function () {
203
+ var username = document.getElementById('username').value.trim();
204
+ var password = document.getElementById('password').value.trim();
205
+ if (document.querySelector('.title').innerText == 'Login') {
206
+ AV.User.logIn(username, password).then(function (user) {
207
+ if (user.get("emailVerified")) {
208
+ /* 登录成功 */
209
+ console.log('登录成功');
210
+ console.log(AV.User.emailVerified);
211
+ /* document.getElementById('username').value = '';
212
+ document.getElementById('password').value = ''; */
213
+
214
+ let redirectUrl = decodeURIComponent(getUrlParameter('redirect'));
215
+
216
+ window.location.href = redirectUrl;
217
+ /* window.location.href = '{{ site.baseurl }}'; */
218
+ } else {
219
+ alert('当前用户邮箱未通过验证,暂时无法登录');
220
+ }
221
+ }).catch(function (error) {
222
+ /* 登录失败,处理错误信息 */
223
+ console.log('登录失败:', error);
224
+ alert('登录失败!');
225
+ });
226
+ } else {
227
+ var email = document.getElementById('email').value;
228
+ if (!validateEmail(email)) {
229
+ alert('请输入有效的电子邮件地址!');
230
+ return;
231
+ } else if (username == '') {
232
+ alert('请输入用户名');
233
+ return;
234
+ } else if (password == '') {
235
+ alert('请输入密码');
236
+ return;
237
+ } else {
238
+ const user = new AV.User();
239
+ AV.User.requestEmailVerify(email);
240
+ user.setUsername(username);
241
+ user.setPassword(password);
242
+ user.setEmail(email);
243
+
244
+ user.signUp().then(function (user) {
245
+ /* 注册成功 */
246
+ alert('注册成功,等待验证邮箱。邮件已发送!');
247
+ console.log('注册成功,等待验证邮箱');
248
+ window.location.reload();
249
+ }).catch(function (error) {
250
+ /* 注册失败,处理错误信息 */
251
+ console.log('注册失败:', error);
252
+ alert('注册失败!');
253
+ });
254
+ }
255
+ };
256
+ });
257
+
258
+ </script>
259
+
260
+ <script>
261
+ var forgotBtn = document.getElementById('forgotPassword');
262
+ forgotBtn.addEventListener('click', function () {
263
+ window.location.href = '{{ site.baseurl }}/login/forgot';
264
+ });
265
+ </script>
266
+ </body>
267
+
268
+ </html>
@@ -0,0 +1,43 @@
1
+ .loader-wrapper {
2
+ z-index: 999;
3
+ width: 100vw;
4
+ height: 100vh;
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ background-color: var(--main-bg);
9
+ display:flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ }
13
+ .loader {
14
+ display: inline-block;
15
+ width: 30px;
16
+ height: 30px;
17
+ position: relative;
18
+ border: 4px solid var(--prompt-text-color);
19
+ animation: loader 2s infinite ease;
20
+ }
21
+ .loader-inner {
22
+ vertical-align: top;
23
+ display: inline-block;
24
+ width: 100%;
25
+ background-color: var(--prompt-text-color);
26
+ animation: loader-inner 2s infinite ease-in;
27
+ }
28
+
29
+ @keyframes loader {
30
+ 0% { transform: rotate(0deg);}
31
+ 25% { transform: rotate(180deg);}
32
+ 50% { transform: rotate(180deg);}
33
+ 75% { transform: rotate(360deg);}
34
+ 100% { transform: rotate(360deg);}
35
+ }
36
+
37
+ @keyframes loader-inner {
38
+ 0% { height: 0%;}
39
+ 25% { height: 0%;}
40
+ 50% { height: 100%;}
41
+ 75% { height: 100%;}
42
+ 100% { height: 0%;}
43
+ }
@@ -0,0 +1,665 @@
1
+ // Gallery Page
2
+ .portfolio-container {
3
+ display: flex;
4
+ flex-direction: column;
5
+ justify-content: center;
6
+ align-items: center;
7
+ text-align: center;
8
+ margin: 0 20px 0 20px;
9
+ }
10
+
11
+ // Gallery Heading
12
+ .portfolio-container .portfolio-heading {
13
+ width: 100%;
14
+ padding-bottom: 30px;
15
+ }
16
+
17
+ .gal-info-btn {
18
+ position: absolute;
19
+ top: auto;
20
+ right: 20px;
21
+ padding: 10px;
22
+ background-color: transparent;
23
+ border: transparent;
24
+ outline: none;
25
+ overflow: hidden;
26
+ }
27
+
28
+ .gal-info {
29
+ z-index: 999;
30
+ // background: rgba(31, 31, 31, 0.5);
31
+ backdrop-filter: blur(5px);
32
+ -webkit-backdrop-filter: blur(5px);
33
+ position: fixed;
34
+ top: 0;
35
+ right: 0;
36
+ bottom: 0;
37
+ left: 0;
38
+ display: flex;
39
+ justify-content: center;
40
+ align-items: center;
41
+ opacity: 0;
42
+ visibility: hidden;
43
+ transition: 0.5s;
44
+ }
45
+
46
+ .gal-info.active {
47
+ visibility: visible;
48
+ opacity: 1;
49
+ }
50
+
51
+ .gal-info.active .info-card{
52
+ visibility: visible;
53
+ opacity: 1;
54
+ animation: fadeIn 0.3s ease;
55
+ }
56
+
57
+ .gal-info .info-card {
58
+ animation: fadeOut 0.5s ease;
59
+ }
60
+
61
+ .info-card {
62
+ position: relative;
63
+ display: flex;
64
+ max-width: 500px;
65
+ max-height: 500px;
66
+ margin: 20px;
67
+ }
68
+
69
+ .info-card .info h2 {
70
+ color: var(--heading-color);
71
+ align-self: center;
72
+ font-size: 2rem;
73
+ font-weight: bold;
74
+ margin: 10px;
75
+ margin-top: 0;
76
+ word-wrap: break-word;
77
+ }
78
+
79
+ .info-card .info p {
80
+ color: var(--text-color);
81
+ font-size: 1.4rem;
82
+ text-align: justify;
83
+ overflow: scroll;
84
+ }
85
+ .info-dismiss-btn {
86
+ align-self: center;
87
+ border-radius: 7px;
88
+ border: none;
89
+ background: linear-gradient(#498EF7, #3478F6);
90
+ color: white;
91
+ font-family: inherit;
92
+ text-align: center;
93
+ font-size: 15px;
94
+ width: 10em;
95
+ padding: 0.5em;
96
+ cursor: pointer;
97
+ }
98
+
99
+ // GALLERY Title
100
+ .portfolio-container .portfolio-heading h3 {
101
+ font-family: 'Times New Roman', Times, serif;
102
+ font-size: 4em;
103
+ font-weight: bolder;
104
+ padding-bottom: 3px;
105
+ border-bottom: 2px solid #545454;
106
+ text-align: center;
107
+ }
108
+
109
+ .titleButton {
110
+ margin: 0;
111
+ height: auto;
112
+ background: transparent;
113
+ padding: 0;
114
+ border: none;
115
+ }
116
+
117
+ /* button styling */
118
+ .titleButton {
119
+ --border-right: 6px;
120
+ --text-stroke-color: rgba(201, 187, 187, 0.6);
121
+ // --animation-color: #8806df;
122
+ --animation-color: rgba(241, 160, 79, 0.892);
123
+ --fs-size: 2em;
124
+ letter-spacing: 3px;
125
+ text-decoration: none;
126
+ font-size: var(--fs-size);
127
+ font-family: "Arial";
128
+ position: relative;
129
+ text-transform: uppercase;
130
+ color: transparent;
131
+ -webkit-text-stroke: 1px var(--text-stroke-color);
132
+ font-size: 4em;
133
+ }
134
+
135
+ /* this is the text, when you hover on button */
136
+ @keyframes blink {
137
+ 0% {
138
+ border-color: var(--animation-color);
139
+ }
140
+
141
+ 50% {
142
+ border-color: transparent;
143
+ }
144
+
145
+ 100% {
146
+ border-color: var(--animation-color);
147
+ }
148
+ }
149
+
150
+ .hover-text {
151
+ position: absolute;
152
+ box-sizing: border-box;
153
+ content: attr(data-text);
154
+ color: var(--animation-color);
155
+ width: 0%;
156
+ inset: 0;
157
+ border-right: var(--border-right) solid var(--animation-color);
158
+ overflow: hidden;
159
+ transition: 0.5s;
160
+ font-size: 100%;
161
+ -webkit-text-stroke: 1px var(--animation-color);
162
+ animation: blink 1s infinite;
163
+ /* Apply the blink animation */
164
+ }
165
+
166
+ /* hover */
167
+ /* .button:hover .hover-text {
168
+ width: 100%;
169
+ filter: drop-shadow(0 0 23px var(--animation-color))
170
+ } */
171
+
172
+ .titleButton.clicked .hover-text {
173
+ width: 100%;
174
+ -webkit-backdrop-filter: drop-shadow(0 0 23px var(--animation-color));
175
+ backdrop-filter: drop-shadow(0 0 23px var(--animation-color));
176
+ filter: drop-shadow(0 0 23px var(--animation-color));
177
+ animation: none;
178
+ border-right: 0 solid var(--animation-color);
179
+ }
180
+
181
+ .portfolio-container .portfolio-heading .overlaytext {
182
+ position: absolute;
183
+ box-sizing: border-box;
184
+ color: #8806df;
185
+ width: 0%;
186
+ inset: 0;
187
+ overflow: hidden;
188
+ transition: 0.5s;
189
+ -webkit-text-stroke: 1px#8806df;
190
+ }
191
+
192
+ // Gallery 容器,里面装有不同列
193
+ .portfolio-container .portfolio-box {
194
+ position: relative;
195
+ width: 100%;
196
+ display: flex;
197
+ gap: 10px;
198
+ }
199
+
200
+ // 列
201
+ .column {
202
+ flex: 1;
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: 10px;
206
+ }
207
+
208
+ .portfolio-container .portfolio-box .portfolio-dream {
209
+ display: flex;
210
+ flex-direction: column;
211
+ width: 32.5%;
212
+ }
213
+
214
+ // 每个最小展示单元
215
+ .portfolio-item {
216
+ position: relative;
217
+ overflow: hidden;
218
+ cursor: pointer;
219
+ border-radius: 10px;
220
+ }
221
+
222
+ // Image
223
+ .portfolio-item img {
224
+ width: 100%;
225
+ border-radius: 15px;
226
+ display: block;
227
+ transition: transform 0.6s;
228
+ }
229
+
230
+ .portfolio-item video {
231
+ width: 100%;
232
+ border-radius: 15px;
233
+ display: block;
234
+ transition: transform 0.6s;
235
+ }
236
+
237
+ // 悬停的弹出遮罩
238
+ .portfolio-layer {
239
+ width: 100%;
240
+ height: 0;
241
+ background: linear-gradient(rgba(0, 0, 0, 0.3), #171f26);
242
+ position: absolute;
243
+ left: 0;
244
+ bottom: 0;
245
+ overflow: hidden;
246
+ display: flex;
247
+ flex-direction: column;
248
+ align-items: center;
249
+ justify-content: center;
250
+ text-align: center;
251
+ padding: 0 40px;
252
+ transition: height 0.3s ease;
253
+ }
254
+
255
+ // 悬停显示简介
256
+ .portfolio-item:hover .portfolio-layer {
257
+ height: 100%;
258
+ }
259
+
260
+ // 悬停放大图片
261
+ .portfolio-item:hover img {
262
+ transition-duration: 0.3s ease;
263
+ transform: scale(1.05);
264
+ }
265
+
266
+ // 展示详细资料时禁止悬停
267
+ .portfolio-item .portfolio-layer.deactive {
268
+ height: 0;
269
+ }
270
+
271
+ // layer 简介标题
272
+ .portfolio-layer h4 {
273
+ color: antiquewhite;
274
+ font-size: xxx-large;
275
+ font-size: -webkit-xxx-large;
276
+ font-weight: 500;
277
+ align-items: center;
278
+ margin: auto;
279
+ margin-left: 0;
280
+ margin-right: 0;
281
+ }
282
+
283
+ // 查看更多箭头标志
284
+ .portfolio-layer i {
285
+ font-size: 15px;
286
+ border-radius: 50%;
287
+ display: inline-flex;
288
+ align-items: end;
289
+ justify-content: end;
290
+ }
291
+
292
+ /* Style for pop up view */
293
+
294
+ .popup-btn {
295
+ content: "查看更多";
296
+ position: relative;
297
+ transition: all 0.3s ease-in-out;
298
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.2);
299
+ padding-block: 0.3rem;
300
+ padding-inline: 1rem;
301
+ background-color: rgb(0 107 179);
302
+ border-radius: 9999px;
303
+ display: flex;
304
+ align-items: center;
305
+ justify-content: center;
306
+ color: #ffff;
307
+ gap: 10px;
308
+ // font-weight: bold;
309
+ font-size: 15px;
310
+ border: 3px solid #ffffff4d;
311
+ outline: none;
312
+ overflow: hidden;
313
+ margin-bottom: auto;
314
+ // outline: none;
315
+ // cursor: pointer;
316
+ // border-radius: 50px;
317
+ // background-color: hsl(216, 73%, 57%);
318
+ // border: solid 2px rgba(0, 0, 0, 0.3);
319
+ }
320
+
321
+ // 背景模糊遮罩
322
+ .portfolio-item .popup-view {
323
+ z-index: 999;
324
+ // background: rgba(31, 31, 31, 0.5);
325
+ backdrop-filter: blur(5px);
326
+ -webkit-backdrop-filter: blur(5px);
327
+ position: fixed;
328
+ top: 0;
329
+ right: 0;
330
+ bottom: 0;
331
+ left: 0;
332
+ display: flex;
333
+ justify-content: center;
334
+ align-items: center;
335
+ opacity: 0;
336
+ visibility: hidden;
337
+ transition: 0.8s;
338
+ }
339
+
340
+ // 触发按钮变为 active
341
+ .portfolio-item .popup-view.active {
342
+ opacity: 1;
343
+ visibility: visible;
344
+ }
345
+
346
+ // Animation
347
+ @keyframes fadeIn {
348
+ 0% {
349
+ transform: scale(0.7);
350
+ }
351
+
352
+ 80% {
353
+ transform: scale(1.02);
354
+ }
355
+
356
+ 100% {
357
+ transform: scale(1);
358
+ }
359
+ }
360
+
361
+ @keyframes fadeOut {
362
+ from {
363
+ transform: scale(1);
364
+ }
365
+
366
+ to {
367
+ transform: scale(0.7);
368
+ opacity: 0;
369
+ }
370
+ }
371
+
372
+ @keyframes dropin {
373
+ 0% {
374
+ transform: translateY(-400px);
375
+ }
376
+
377
+ 60% {
378
+ transform: translateY(10px);
379
+ }
380
+
381
+ 100% {
382
+ transform: translateY(0);
383
+ }
384
+ }
385
+
386
+ // Close
387
+ @keyframes dismiss {
388
+ 0% {
389
+ transform: translateY(0px);
390
+ }
391
+
392
+ 100% {
393
+ transform: translateY(-600px);
394
+ opacity: 0;
395
+ }
396
+ }
397
+
398
+ // Genie Minimize
399
+ @keyframes genie {
400
+ 10% {
401
+ transform: translateY(30px);
402
+ }
403
+ 100% {
404
+ transform: translate(0, -140%) scale(0.1) rotateX(40deg);
405
+ }
406
+ }
407
+
408
+ // Scale
409
+ @keyframes scale {
410
+ to {
411
+ transform: scale(0);
412
+ }
413
+ }
414
+
415
+ // 弹出卡片动画
416
+
417
+ .portfolio-item .popup-view.red.active .popup-card {
418
+ opacity: 1;
419
+ visibility: visible;
420
+ animation: dropin 0.5s ease;
421
+ }
422
+
423
+ .portfolio-item .popup-view.yellow.active .popup-card {
424
+ opacity: 1;
425
+ visibility: visible;
426
+ animation: dropin 0.5s ease;
427
+ }
428
+
429
+ .portfolio-item .popup-view.green.active .popup-card {
430
+ opacity: 1;
431
+ visibility: visible;
432
+ animation: dropin 0.5s ease;
433
+ }
434
+
435
+ .portfolio-item .popup-view.active .popup-card {
436
+ opacity: 1;
437
+ visibility: visible;
438
+ animation: dropin 0.5s ease;
439
+ }
440
+
441
+ .portfolio-item .popup-view.red .popup-card {
442
+ animation: dismiss 0.6s ease;
443
+ }
444
+
445
+ .portfolio-item .popup-view.yellow .popup-card {
446
+ animation: genie 0.6s ease;
447
+ }
448
+
449
+ .portfolio-item .popup-view.green .popup-card {
450
+ animation: scale 0.6s ease;
451
+ }
452
+
453
+ // Popup Card
454
+ .portfolio-item .popup-card {
455
+ position: relative;
456
+ display: flex;
457
+ max-width: 500px;
458
+ max-height: 500px;
459
+ margin: 20px;
460
+ }
461
+
462
+ // Popup Card, 层级位于上一个之下,方便之间添加图片等其他样式
463
+ .info {
464
+ z-index: 1;
465
+ display: flex;
466
+ flex-direction: column;
467
+ width: 100%;
468
+ height: 100%;
469
+ box-sizing: border-box;
470
+ padding: 40px;
471
+ border-radius: 15px;
472
+ border: 1px solid transparent;
473
+ backdrop-filter: blur(20px);
474
+ -webkit-backdrop-filter: blur(20px);
475
+ background: var(--gallery-card-bg);
476
+ border-top-color: var(--gallery-card-border-top);
477
+ border-right-color: var(--gallery-card-border-right);
478
+ border-bottom-color: var(--gallery-card-border-bottom);
479
+ border-left-color: var(--gallery-card-border-left);
480
+ // transition: .4s;
481
+ transform: skew(0deg);
482
+ box-shadow: 0 20px 30px 2px rgba(0, 0, 0, 0.2)
483
+ }
484
+
485
+ // 仿 macOS 红绿灯按钮
486
+ .popup-align {
487
+ z-index: 3;
488
+ position: absolute;
489
+ left: 0;
490
+ font-size: 20px;
491
+ margin: 20px;
492
+ cursor: pointer;
493
+ /* padding: 1rem; */
494
+ display: flex;
495
+ flex-direction: row;
496
+ gap: 10px;
497
+ align-self: flex-start;
498
+ }
499
+
500
+ .popup-red {
501
+ width: 18px;
502
+ height: 18px;
503
+ border-radius: 50%;
504
+ background-color: #ff605c;
505
+ border: 0.5px solid #b3423f;
506
+ // box-shadow: -5px 5px 5px rgba(0, 0, 0, 0.280);
507
+ }
508
+
509
+ .popup-yellow {
510
+ width: 18px;
511
+ height: 18px;
512
+ border-radius: 50%;
513
+ background-color: #ffbd44;
514
+ border: 0.5px solid #c29138;
515
+
516
+ // box-shadow: -5px 5px 5px rgba(0, 0, 0, 0.280);
517
+ }
518
+
519
+ .popup-green {
520
+ width: 18px;
521
+ height: 18px;
522
+ border-radius: 50%;
523
+ background-color: #00ca4e;
524
+ border: 0.5px solid #359058;
525
+ // box-shadow: -5px 5px 5px rgba(0, 0, 0, 0.280);
526
+ }
527
+
528
+ // Popup Card Heading
529
+ .portfolio-item .popup-card .info h2 {
530
+ // color: #fff;
531
+ color: var(--heading-color);
532
+ font-size: 2.6rem;
533
+ font-weight: bold;
534
+ margin: 20px;
535
+ // text-shadow: -10px 10px 10px rgba(0, 0, 0, 0.280);
536
+ word-wrap: break-word;
537
+ }
538
+
539
+ // Popup Card Paragraph
540
+ .portfolio-item .popup-card .info p {
541
+ color: var(--text-color);
542
+ font-size: 1.5rem;
543
+ margin: 10px;
544
+ margin-top: 0;
545
+ text-align: justify;
546
+ overflow: scroll;
547
+ }
548
+
549
+ // 适配不同显示器大小
550
+
551
+ // dream 展示形式
552
+ // 桌面端
553
+ // @media only screen and (min-width: 850px) and (max-width: 1236px) {
554
+ // .portfolio-item .popup-card {
555
+ // margin-inline-start: 250px;
556
+ // }
557
+ // }
558
+
559
+ // iPad 字体展示形式
560
+ @media only screen and (min-width: 950px) and (max-width:1128px) {
561
+ .portfolio-layer h4 {
562
+ font-size: 2.2rem;
563
+ }
564
+
565
+ .popup-btn {
566
+ padding-block: 0;
567
+ font-size: 12px;
568
+ border: 2px solid rgba(255, 255, 255, .3019607843);
569
+ padding-inline: 0.5rem;
570
+ gap: 5px;
571
+ }
572
+ }
573
+
574
+ // 两列显示
575
+ @media only screen and (max-width: 950px) {
576
+ .portfolio-container .portfolio-box .portfolio-dream {
577
+ display: flex;
578
+ flex-direction: column;
579
+ width: 49%;
580
+ }
581
+ }
582
+
583
+ @media only screen and (max-width: 850px) {
584
+ .portfolio-item .popup-card {
585
+ position: relative;
586
+ }
587
+ }
588
+
589
+ // 手机端
590
+ @media only screen and (max-width: 643px) {
591
+ .portfolio-container .portfolio-box {
592
+ flex-direction: column;
593
+ }
594
+
595
+ .portfolio-container .portfolio-box .portfolio-dream {
596
+ display: flex;
597
+ flex-direction: column;
598
+ width: 100%;
599
+ }
600
+
601
+
602
+ .portfolio-item .popup-card .info h2 {
603
+ font-size: 2.2rem;
604
+ margin: 10px;
605
+ word-wrap: break-word;
606
+ }
607
+
608
+ .portfolio-item .popup-card .info p {
609
+ font-size: 1.3rem;
610
+ margin: 0;
611
+ }
612
+
613
+ .portfolio-container .portfolio-heading h3 {
614
+ font-size: 3.5em;
615
+ }
616
+
617
+ .info-card .info h2 {
618
+ font-size: 1.8rem;
619
+ word-wrap: break-word;
620
+ }
621
+
622
+ .info-card .info p {
623
+ font-size: 1.2rem;
624
+ }
625
+ .gal-info-btn {
626
+ right: 10px;
627
+ }
628
+ }
629
+
630
+ @media only screen and (max-width: 320px) {
631
+ .titleButton {
632
+ font-size: 15vw;
633
+ }
634
+ .portfolio-layer h4 {
635
+ font-size: 2rem;
636
+ }
637
+ .popup-btn {
638
+ font-size: 12px;
639
+ padding-block: 0.1rem;
640
+ padding-inline: 0.5rem;
641
+ }
642
+ .portfolio-item .popup-card .info h2 {
643
+ font-size: 10vw;
644
+ }
645
+ .portfolio-item .popup-card .info p {
646
+ font-size: 6vw;
647
+ }
648
+ .info {
649
+ padding: 20px;
650
+ padding-top: 40px;
651
+ }
652
+ .info-card .info p {
653
+ font-size: 6vw;
654
+ }
655
+ .info-card .info h2 {
656
+ font-size: 10vw;
657
+ }
658
+ .info-dismiss-btn {
659
+ font-size: 12px;
660
+ width: 8rem;
661
+ }
662
+ .portfolio-container .portfolio-heading {
663
+ padding-bottom: 10px;
664
+ }
665
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-chirpy-customized-upe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jo Cruise
@@ -143,6 +143,7 @@ files:
143
143
  - _data/locales/zh-TW.yml
144
144
  - _data/origin/basic.yml
145
145
  - _data/origin/cors.yml
146
+ - _includes/assets-origin.html
146
147
  - _includes/comments.html
147
148
  - _includes/comments/disqus.html
148
149
  - _includes/comments/giscus.html
@@ -161,6 +162,9 @@ files:
161
162
  - _includes/jsdelivr-combine.html
162
163
  - _includes/lang.html
163
164
  - _includes/language-alias.html
165
+ - _includes/loader.html
166
+ - _includes/login-check.html
167
+ - _includes/mathjax_support.html
164
168
  - _includes/mermaid.html
165
169
  - _includes/metadata-hook.html
166
170
  - _includes/mode-toggle.html
@@ -180,17 +184,21 @@ files:
180
184
  - _includes/topbar.html
181
185
  - _includes/trending-tags.html
182
186
  - _includes/update-list.html
187
+ - _includes/valine.html
183
188
  - _layouts/archives.html
184
189
  - _layouts/categories.html
185
190
  - _layouts/category.html
186
191
  - _layouts/compress.html
187
192
  - _layouts/default.html
193
+ - _layouts/forgot.html
188
194
  - _layouts/home.html
195
+ - _layouts/login.html
189
196
  - _layouts/page.html
190
197
  - _layouts/post.html
191
198
  - _layouts/tag.html
192
199
  - _layouts/tags.html
193
200
  - _sass/addon/commons.scss
201
+ - _sass/addon/loader.scss
194
202
  - _sass/addon/module.scss
195
203
  - _sass/addon/syntax.scss
196
204
  - _sass/addon/variables.scss
@@ -201,13 +209,13 @@ files:
201
209
  - _sass/layout/archives.scss
202
210
  - _sass/layout/categories.scss
203
211
  - _sass/layout/category-tag.scss
212
+ - _sass/layout/gallery.scss
204
213
  - _sass/layout/home.scss
205
214
  - _sass/layout/post.scss
206
215
  - _sass/layout/tags.scss
207
216
  - _sass/main.scss
208
217
  - _sass/variables-hook.scss
209
218
  - assets/404.html
210
- - assets/css/jekyll-theme-chirpy.scss
211
219
  - assets/feed.xml
212
220
  - assets/img/favicons/android-chrome-192x192.png
213
221
  - assets/img/favicons/android-chrome-512x512.png
@@ -1,6 +0,0 @@
1
- ---
2
- ---
3
-
4
- @import 'main';
5
-
6
- /* append your custom style below */