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

Sign up to get free protection for your applications and to get access to all the features.
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 */