@mlikiowa/nanaeo 1.0.1702966759079 → 1.0.1702967739786

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/2022/08/04/NewBlog/index.html +3473 -0
  2. package/2022/08/13/GaussWave/index.html +3407 -0
  3. package/about/index.html +3236 -0
  4. package/archives/2022/08/index.html +3411 -0
  5. package/archives/2022/index.html +3411 -0
  6. package/archives/index.html +3308 -0
  7. package/asset/Sotheby.ttf +0 -0
  8. package/asset/backimg.png +0 -0
  9. package/atom.xml +171 -0
  10. package/categories/DevLog/index.html +3351 -0
  11. package/categories/SiteLog/index.html +3351 -0
  12. package/categories/index.html +3174 -0
  13. package/category/devlog/atom.xml +58 -0
  14. package/category/devlog/feed.json +19 -0
  15. package/category/devlog/rss.xml +62 -0
  16. package/category/sitelog/atom.xml +125 -0
  17. package/category/sitelog/feed.json +20 -0
  18. package/category/sitelog/rss.xml +129 -0
  19. package/content.json +1 -0
  20. package/css/Readme.html +9 -0
  21. package/css/first.css +1504 -0
  22. package/css/style.css +7106 -0
  23. package/favicon.ico +0 -0
  24. package/feed.json +31 -0
  25. package/friends/index.html +3661 -0
  26. package/index.html +3421 -0
  27. package/js/app.js +1223 -0
  28. package/js/plugins/aplayer.js +186 -0
  29. package/js/plugins/parallax.js +191 -0
  30. package/js/plugins/rightMenu.js +577 -0
  31. package/js/plugins/rightMenus.js +618 -0
  32. package/js/plugins/tags/contributors.js +92 -0
  33. package/js/plugins/tags/friends.js +93 -0
  34. package/js/plugins/tags/sites.js +96 -0
  35. package/js/search/hexo.js +192 -0
  36. package/package.json +1 -1
  37. package/rss.xml +175 -0
  38. package/tag/devlog/atom.xml +58 -0
  39. package/tag/devlog/feed.json +19 -0
  40. package/tag/devlog/rss.xml +62 -0
  41. package/tag/gauss/atom.xml +58 -0
  42. package/tag/gauss/feed.json +19 -0
  43. package/tag/gauss/rss.xml +62 -0
  44. package/tag/hexo/atom.xml +125 -0
  45. package/tag/hexo/feed.json +20 -0
  46. package/tag/hexo/rss.xml +129 -0
  47. package/tag/hexothemes/atom.xml +125 -0
  48. package/tag/hexothemes/feed.json +20 -0
  49. package/tag/hexothemes/rss.xml +129 -0
  50. package/tag/sitelog/atom.xml +125 -0
  51. package/tag/sitelog/feed.json +20 -0
  52. package/tag/sitelog/rss.xml +129 -0
  53. package/tags/DevLog/index.html +3351 -0
  54. package/tags/Gauss/index.html +3351 -0
  55. package/tags/Hexo/index.html +3351 -0
  56. package/tags/HexoThemes/index.html +3351 -0
  57. package/tags/SiteLog/index.html +3351 -0
  58. package/tags/index.html +3159 -0
  59. package/volantis-sw.js +797 -0
@@ -0,0 +1,3473 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN,en,default">
3
+ <head hexo-theme='https://github.com/volantis-x/hexo-theme-volantis/#5.8.0'>
4
+ <meta name="generator" content="Hexo 6.3.0">
5
+ <meta name="Volantis" content="5.8.0">
6
+ <meta charset="utf-8">
7
+ <!-- SEO相关 -->
8
+
9
+ <link rel="canonical" href="https://nanaeo.cn/2022/08/04/newblog/"/>
10
+ <!-- 渲染优化 -->
11
+ <meta http-equiv='x-dns-prefetch-control' content='on' />
12
+ <link rel='dns-prefetch' href='https://unpkg.com'>
13
+ <link rel="preconnect" href="https://unpkg.com" crossorigin>
14
+ <meta name="renderer" content="webkit">
15
+ <meta name="force-rendering" content="webkit">
16
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
17
+ <meta http-equiv="Content-Security-Policy" content=" default-src 'self' https:; block-all-mixed-content; base-uri 'self' https:; form-action 'self' https:; worker-src 'self' https:; connect-src 'self' https: *; img-src 'self' data: https: *; media-src 'self' https: *; font-src 'self' data: https: *; frame-src 'self' https: *; manifest-src 'self' https: *; child-src https:; script-src 'self' https: 'unsafe-inline' *; style-src 'self' https: 'unsafe-inline' *; ">
18
+ <meta name="HandheldFriendly" content="True" >
19
+ <meta name="apple-mobile-web-app-capable" content="yes">
20
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
21
+ <meta content="black-translucent" name="apple-mobile-web-app-status-bar-style">
22
+ <meta content="telephone=no" name="format-detection">
23
+ <!-- import head_begin begin -->
24
+ <!-- import head_begin end -->
25
+ <!-- Custom Files headBegin begin-->
26
+
27
+ <!-- Custom Files headBegin end-->
28
+ <!-- front-matter head_begin begin -->
29
+ <!-- front-matter head_begin end -->
30
+ <link rel="preload" href="/css/style.css" as="style">
31
+ <link rel="preload" href="https://nanaeo.cn/asset/Sotheby.ttf" as="font" type="font/ttf" crossorigin="anonymous">
32
+ <link rel="preload" href="https://fastly.jsdelivr.net/gh/moieo/moieo@main/moieo.woff2" as="font" type="font/woff2" crossorigin="anonymous">
33
+
34
+ <!-- feed -->
35
+ <!-- 页面元数据 -->
36
+ <title>新博客建好啦 - Village</title>
37
+ <meta name="keywords" content="SiteLog,HexoThemes,Hexo,null">
38
+ <meta desc name="description" content="Hi Hexo,I am Mlikiowa!是全新的Hexo&#x2F;vlolantis博客,我又回来写博客了! - Mlikiowa - Village">
39
+
40
+ <meta property="og:type" content="article">
41
+ <meta property="og:title" content="新博客建好啦">
42
+ <meta property="og:url" content="https://nanaeo.cn/2022/08/04/NewBlog/index.html">
43
+ <meta property="og:site_name" content="Village">
44
+ <meta property="og:description" content="Hi Hexo,I am Mlikiowa!是全新的Hexo&#x2F;vlolantis博客,我又回来写博客了!">
45
+ <meta property="og:locale" content="zh_CN">
46
+ <meta property="og:image" content="https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png">
47
+ <meta property="article:published_time" content="2022-08-04T16:00:00.000Z">
48
+ <meta property="article:modified_time" content="2023-12-19T06:35:13.573Z">
49
+ <meta property="article:author" content="Mlikiowa">
50
+ <meta property="article:tag" content="SiteLog">
51
+ <meta property="article:tag" content="HexoThemes">
52
+ <meta property="article:tag" content="Hexo">
53
+ <meta name="twitter:card" content="summary">
54
+ <meta name="twitter:image" content="https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png">
55
+ <style>
56
+ /* 首屏样式 */
57
+ #safearea {
58
+ display: none;
59
+ }
60
+ .post-story + .post-story {
61
+ content-visibility: auto;
62
+ contain-intrinsic-size: 10px 500px;
63
+ }
64
+ :root {
65
+ --color-site-body: #e0eeee;
66
+ --color-site-bg: #e0eeee;
67
+ --color-site-inner: #fff;
68
+ --color-site-footer: #666;
69
+ --color-card: #fff0f5;
70
+ --color-text: #eea9b8;
71
+ --color-block: #f6f6f6;
72
+ --color-inlinecode: #ec7bb6;
73
+ --color-codeblock: #e0eeee;
74
+ --color-h1: #3a3a3a;
75
+ --color-h2: #3a3a3a;
76
+ --color-h3: #23464f;
77
+ --color-h4: #23464f;
78
+ --color-h5: #23464f;
79
+ --color-h6: #23464f;
80
+ --color-p: #23464f;
81
+ --color-list: #eea9b8;
82
+ --color-list-hl: #f7cdd4;
83
+ --color-meta: #888;
84
+ --color-read-bkg: #e0d8c8;
85
+ --color-read-post: #f8f1e2;
86
+ --color-copyright-bkg: #f5f5f5;
87
+ }
88
+ * {
89
+ box-sizing: border-box;
90
+ -webkit-box-sizing: border-box;
91
+ -moz-box-sizing: border-box;
92
+ outline: none;
93
+ margin: 0;
94
+ padding: 0;
95
+ }
96
+ *::-webkit-scrollbar {
97
+ height: 4px;
98
+ width: 4px;
99
+ }
100
+ *::-webkit-scrollbar-track-piece {
101
+ background: transparent;
102
+ }
103
+ *::-webkit-scrollbar-thumb {
104
+ background: #fcc;
105
+ cursor: pointer;
106
+ border-radius: 2px;
107
+ -webkit-border-radius: 2px;
108
+ }
109
+ *::-webkit-scrollbar-thumb:hover {
110
+ background: #ff5722;
111
+ }
112
+ html {
113
+ color: var(--color-text);
114
+ width: 100%;
115
+ height: 100%;
116
+ font-family: Dosis, "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Menlo, Monaco, monospace, sans-serif;
117
+ font-size: 16px;
118
+ }
119
+ html >::-webkit-scrollbar {
120
+ height: 4px;
121
+ width: 4px;
122
+ }
123
+ html >::-webkit-scrollbar-track-piece {
124
+ background: transparent;
125
+ }
126
+ html >::-webkit-scrollbar-thumb {
127
+ background: #54b5a0 linear-gradient(45deg, rgba(255,255,255,0.4) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.4) 50%, rgba(255,255,255,0.4) 75%, transparent 75%, transparent);
128
+ cursor: pointer;
129
+ border-radius: 2px;
130
+ -webkit-border-radius: 2px;
131
+ }
132
+ html >::-webkit-scrollbar-thumb:hover {
133
+ background: #54b5a0 linear-gradient(45deg, rgba(255,255,255,0.4) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.4) 50%, rgba(255,255,255,0.4) 75%, transparent 75%, transparent);
134
+ }
135
+ body {
136
+ background-color: var(--color-site-body);
137
+ text-rendering: optimizelegibility;
138
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
139
+ line-height: 1.6;
140
+ -webkit-text-size-adjust: 100%;
141
+ -ms-text-size-adjust: 100%;
142
+ }
143
+ body.modal-active {
144
+ overflow: hidden;
145
+ }
146
+ @media screen and (max-width: 680px) {
147
+ body.modal-active {
148
+ position: fixed;
149
+ top: 0;
150
+ right: 0;
151
+ bottom: 0;
152
+ left: 0;
153
+ }
154
+ }
155
+ a {
156
+ color: #ec7bb6;
157
+ cursor: pointer;
158
+ text-decoration: none;
159
+ transition: all 0.28s ease;
160
+ -webkit-transition: all 0.28s ease;
161
+ -khtml-transition: all 0.28s ease;
162
+ -moz-transition: all 0.28s ease;
163
+ -o-transition: all 0.28s ease;
164
+ -ms-transition: all 0.28s ease;
165
+ }
166
+ a:hover {
167
+ color: #ff5722;
168
+ }
169
+ a:active,
170
+ a:hover {
171
+ outline: 0;
172
+ }
173
+ ul,
174
+ ol {
175
+ padding-left: 0;
176
+ }
177
+ ul li,
178
+ ol li {
179
+ list-style: none;
180
+ }
181
+ header {
182
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
183
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
184
+ display: block;
185
+ }
186
+ img {
187
+ border: 0;
188
+ background: none;
189
+ max-width: 100%;
190
+ }
191
+ svg:not(:root) {
192
+ overflow: hidden;
193
+ }
194
+ hr {
195
+ -moz-box-sizing: content-box;
196
+ box-sizing: content-box;
197
+ -webkit-box-sizing: content-box;
198
+ -moz-box-sizing: content-box;
199
+ height: 0;
200
+ border: 0;
201
+ border-radius: 1px;
202
+ -webkit-border-radius: 1px;
203
+ border-bottom: 1px solid rgba(238,169,184,0.1);
204
+ }
205
+ button,
206
+ input {
207
+ color: inherit;
208
+ font: inherit;
209
+ margin: 0;
210
+ }
211
+ button {
212
+ overflow: visible;
213
+ text-transform: none;
214
+ -webkit-appearance: button;
215
+ cursor: pointer;
216
+ }
217
+ @supports (backdrop-filter: blur(20px)) {
218
+ .blur {
219
+ background: rgba(255,240,245,0.9) !important;
220
+ backdrop-filter: saturate(200%) blur(20px);
221
+ }
222
+ }
223
+ .shadow {
224
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
225
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
226
+ }
227
+ .shadow.floatable {
228
+ transition: all 0.28s ease;
229
+ -webkit-transition: all 0.28s ease;
230
+ -khtml-transition: all 0.28s ease;
231
+ -moz-transition: all 0.28s ease;
232
+ -o-transition: all 0.28s ease;
233
+ -ms-transition: all 0.28s ease;
234
+ }
235
+ .shadow.floatable:hover {
236
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
237
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1);
238
+ }
239
+ #l_cover {
240
+ min-height: 64px;
241
+ }
242
+ .cover-wrapper {
243
+ top: 0;
244
+ left: 0;
245
+ max-width: 100%;
246
+ height: 100vh;
247
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
248
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
249
+ display: -ms-flexbox /* TWEENER - IE 10 */;
250
+ display: -webkit-flex /* NEW - Chrome */;
251
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
252
+ display: flex;
253
+ flex-wrap: nowrap;
254
+ -webkit-flex-wrap: nowrap;
255
+ -khtml-flex-wrap: nowrap;
256
+ -moz-flex-wrap: nowrap;
257
+ -o-flex-wrap: nowrap;
258
+ -ms-flex-wrap: nowrap;
259
+ -webkit-box-direction: normal;
260
+ -moz-box-direction: normal;
261
+ -webkit-box-orient: vertical;
262
+ -moz-box-orient: vertical;
263
+ -webkit-flex-direction: column;
264
+ -ms-flex-direction: column;
265
+ flex-direction: column;
266
+ align-items: center;
267
+ align-self: center;
268
+ align-content: center;
269
+ color: var(--color-site-inner);
270
+ padding: 0 16px;
271
+ user-select: none;
272
+ -webkit-user-select: none;
273
+ -moz-user-select: none;
274
+ -ms-user-select: none;
275
+ position: relative;
276
+ overflow: hidden;
277
+ margin-bottom: -100px;
278
+ }
279
+ .cover-wrapper .cover-bg {
280
+ position: absolute;
281
+ width: 100%;
282
+ height: 100%;
283
+ background-position: center;
284
+ background-size: cover;
285
+ -webkit-background-size: cover;
286
+ -moz-background-size: cover;
287
+ }
288
+ .cover-wrapper .cover-bg.lazyload:not(.loaded) {
289
+ opacity: 0;
290
+ -webkit-opacity: 0;
291
+ -moz-opacity: 0;
292
+ }
293
+ .cover-wrapper .cover-bg.lazyload.loaded {
294
+ animation-delay: 0s;
295
+ animation-duration: 0.5s;
296
+ animation-fill-mode: forwards;
297
+ animation-timing-function: ease-out;
298
+ animation-name: fadeIn;
299
+ }
300
+ @-moz-keyframes fadeIn {
301
+ 0% {
302
+ opacity: 0;
303
+ -webkit-opacity: 0;
304
+ -moz-opacity: 0;
305
+ filter: blur(12px);
306
+ transform: scale(1.02);
307
+ -webkit-transform: scale(1.02);
308
+ -khtml-transform: scale(1.02);
309
+ -moz-transform: scale(1.02);
310
+ -o-transform: scale(1.02);
311
+ -ms-transform: scale(1.02);
312
+ }
313
+ 100% {
314
+ opacity: 1;
315
+ -webkit-opacity: 1;
316
+ -moz-opacity: 1;
317
+ }
318
+ }
319
+ @-webkit-keyframes fadeIn {
320
+ 0% {
321
+ opacity: 0;
322
+ -webkit-opacity: 0;
323
+ -moz-opacity: 0;
324
+ filter: blur(12px);
325
+ transform: scale(1.02);
326
+ -webkit-transform: scale(1.02);
327
+ -khtml-transform: scale(1.02);
328
+ -moz-transform: scale(1.02);
329
+ -o-transform: scale(1.02);
330
+ -ms-transform: scale(1.02);
331
+ }
332
+ 100% {
333
+ opacity: 1;
334
+ -webkit-opacity: 1;
335
+ -moz-opacity: 1;
336
+ }
337
+ }
338
+ @-o-keyframes fadeIn {
339
+ 0% {
340
+ opacity: 0;
341
+ -webkit-opacity: 0;
342
+ -moz-opacity: 0;
343
+ filter: blur(12px);
344
+ transform: scale(1.02);
345
+ -webkit-transform: scale(1.02);
346
+ -khtml-transform: scale(1.02);
347
+ -moz-transform: scale(1.02);
348
+ -o-transform: scale(1.02);
349
+ -ms-transform: scale(1.02);
350
+ }
351
+ 100% {
352
+ opacity: 1;
353
+ -webkit-opacity: 1;
354
+ -moz-opacity: 1;
355
+ }
356
+ }
357
+ @keyframes fadeIn {
358
+ 0% {
359
+ opacity: 0;
360
+ -webkit-opacity: 0;
361
+ -moz-opacity: 0;
362
+ filter: blur(12px);
363
+ transform: scale(1.02);
364
+ -webkit-transform: scale(1.02);
365
+ -khtml-transform: scale(1.02);
366
+ -moz-transform: scale(1.02);
367
+ -o-transform: scale(1.02);
368
+ -ms-transform: scale(1.02);
369
+ }
370
+ 100% {
371
+ opacity: 1;
372
+ -webkit-opacity: 1;
373
+ -moz-opacity: 1;
374
+ }
375
+ }
376
+ .cover-wrapper .cover-body {
377
+ z-index: 1;
378
+ position: relative;
379
+ width: 100%;
380
+ height: 100%;
381
+ }
382
+ .cover-wrapper#full {
383
+ height: calc(100vh + 100px);
384
+ padding-bottom: 100px;
385
+ }
386
+ .cover-wrapper#half {
387
+ max-height: 640px;
388
+ min-height: 400px;
389
+ height: calc(36vh - 64px + 200px);
390
+ }
391
+ .cover-wrapper #scroll-down {
392
+ width: 100%;
393
+ height: 64px;
394
+ position: absolute;
395
+ bottom: 100px;
396
+ text-align: center;
397
+ cursor: pointer;
398
+ }
399
+ .cover-wrapper #scroll-down .scroll-down-effects {
400
+ color: #fff;
401
+ font-size: 24px;
402
+ line-height: 64px;
403
+ position: absolute;
404
+ width: 24px;
405
+ left: calc(50% - 12px);
406
+ text-shadow: 0 1px 2px rgba(0,0,0,0.1);
407
+ animation: scroll-down-effect 1.5s infinite;
408
+ -webkit-animation: scroll-down-effect 1.5s infinite;
409
+ -khtml-animation: scroll-down-effect 1.5s infinite;
410
+ -moz-animation: scroll-down-effect 1.5s infinite;
411
+ -o-animation: scroll-down-effect 1.5s infinite;
412
+ -ms-animation: scroll-down-effect 1.5s infinite;
413
+ }
414
+ @-moz-keyframes scroll-down-effect {
415
+ 0% {
416
+ top: 0;
417
+ opacity: 1;
418
+ -webkit-opacity: 1;
419
+ -moz-opacity: 1;
420
+ }
421
+ 50% {
422
+ top: -16px;
423
+ opacity: 0.4;
424
+ -webkit-opacity: 0.4;
425
+ -moz-opacity: 0.4;
426
+ }
427
+ 100% {
428
+ top: 0;
429
+ opacity: 1;
430
+ -webkit-opacity: 1;
431
+ -moz-opacity: 1;
432
+ }
433
+ }
434
+ @-webkit-keyframes scroll-down-effect {
435
+ 0% {
436
+ top: 0;
437
+ opacity: 1;
438
+ -webkit-opacity: 1;
439
+ -moz-opacity: 1;
440
+ }
441
+ 50% {
442
+ top: -16px;
443
+ opacity: 0.4;
444
+ -webkit-opacity: 0.4;
445
+ -moz-opacity: 0.4;
446
+ }
447
+ 100% {
448
+ top: 0;
449
+ opacity: 1;
450
+ -webkit-opacity: 1;
451
+ -moz-opacity: 1;
452
+ }
453
+ }
454
+ @-o-keyframes scroll-down-effect {
455
+ 0% {
456
+ top: 0;
457
+ opacity: 1;
458
+ -webkit-opacity: 1;
459
+ -moz-opacity: 1;
460
+ }
461
+ 50% {
462
+ top: -16px;
463
+ opacity: 0.4;
464
+ -webkit-opacity: 0.4;
465
+ -moz-opacity: 0.4;
466
+ }
467
+ 100% {
468
+ top: 0;
469
+ opacity: 1;
470
+ -webkit-opacity: 1;
471
+ -moz-opacity: 1;
472
+ }
473
+ }
474
+ @keyframes scroll-down-effect {
475
+ 0% {
476
+ top: 0;
477
+ opacity: 1;
478
+ -webkit-opacity: 1;
479
+ -moz-opacity: 1;
480
+ }
481
+ 50% {
482
+ top: -16px;
483
+ opacity: 0.4;
484
+ -webkit-opacity: 0.4;
485
+ -moz-opacity: 0.4;
486
+ }
487
+ 100% {
488
+ top: 0;
489
+ opacity: 1;
490
+ -webkit-opacity: 1;
491
+ -moz-opacity: 1;
492
+ }
493
+ }
494
+ .cover-wrapper .cover-body {
495
+ margin-top: 64px;
496
+ margin-bottom: 100px;
497
+ }
498
+ .cover-wrapper .cover-body,
499
+ .cover-wrapper .cover-body .top,
500
+ .cover-wrapper .cover-body .bottom {
501
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
502
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
503
+ display: -ms-flexbox /* TWEENER - IE 10 */;
504
+ display: -webkit-flex /* NEW - Chrome */;
505
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
506
+ display: flex;
507
+ -webkit-box-direction: normal;
508
+ -moz-box-direction: normal;
509
+ -webkit-box-orient: vertical;
510
+ -moz-box-orient: vertical;
511
+ -webkit-flex-direction: column;
512
+ -ms-flex-direction: column;
513
+ flex-direction: column;
514
+ align-items: center;
515
+ justify-content: center;
516
+ -webkit-justify-content: center;
517
+ -khtml-justify-content: center;
518
+ -moz-justify-content: center;
519
+ -o-justify-content: center;
520
+ -ms-justify-content: center;
521
+ max-width: 100%;
522
+ }
523
+ .cover-wrapper .cover-body .bottom {
524
+ margin-top: 32px;
525
+ }
526
+ .cover-wrapper .cover-body .title {
527
+ font-family: Sotheby, Helvetica, monospace;
528
+ font-size: 3.125rem;
529
+ line-height: 1.2;
530
+ text-shadow: 0 1px 2px rgba(0,0,0,0.1);
531
+ }
532
+ .cover-wrapper .cover-body .subtitle {
533
+ font-size: 20px;
534
+ }
535
+ .cover-wrapper .cover-body .logo {
536
+ max-height: 120px;
537
+ max-width: calc(100% - 4 * 16px);
538
+ }
539
+ @media screen and (min-height: 1024px) {
540
+ .cover-wrapper .cover-body .title {
541
+ font-size: 3rem;
542
+ }
543
+ .cover-wrapper .cover-body .subtitle {
544
+ font-size: 1.05rem;
545
+ }
546
+ .cover-wrapper .cover-body .logo {
547
+ max-height: 150px;
548
+ }
549
+ }
550
+ .cover-wrapper .cover-body .m_search {
551
+ position: relative;
552
+ max-width: calc(100% - 16px);
553
+ width: 320px;
554
+ vertical-align: middle;
555
+ }
556
+ .cover-wrapper .cover-body .m_search .form {
557
+ position: relative;
558
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
559
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
560
+ display: block;
561
+ width: 100%;
562
+ }
563
+ .cover-wrapper .cover-body .m_search .icon,
564
+ .cover-wrapper .cover-body .m_search .input {
565
+ transition: all 0.28s ease;
566
+ -webkit-transition: all 0.28s ease;
567
+ -khtml-transition: all 0.28s ease;
568
+ -moz-transition: all 0.28s ease;
569
+ -o-transition: all 0.28s ease;
570
+ -ms-transition: all 0.28s ease;
571
+ }
572
+ .cover-wrapper .cover-body .m_search .icon {
573
+ position: absolute;
574
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
575
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
576
+ display: block;
577
+ line-height: 2.5rem;
578
+ width: 32px;
579
+ top: 0;
580
+ left: 5px;
581
+ color: rgba(35,70,79,0.75);
582
+ }
583
+ .cover-wrapper .cover-body .m_search .input {
584
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
585
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
586
+ display: block;
587
+ height: 2.5rem;
588
+ width: 100%;
589
+ box-shadow: none;
590
+ -webkit-box-shadow: none;
591
+ box-sizing: border-box;
592
+ -webkit-box-sizing: border-box;
593
+ -moz-box-sizing: border-box;
594
+ font-size: 0.875rem;
595
+ -webkit-appearance: none;
596
+ padding-left: 36px;
597
+ border-radius: 1.4rem;
598
+ -webkit-border-radius: 1.4rem;
599
+ background: rgba(255,240,245,0.6);
600
+ backdrop-filter: blur(10px);
601
+ border: none;
602
+ color: var(--color-text);
603
+ }
604
+ @media screen and (max-width: 500px) {
605
+ .cover-wrapper .cover-body .m_search .input {
606
+ padding-left: 36px;
607
+ }
608
+ }
609
+ .cover-wrapper .cover-body .m_search .input:hover {
610
+ background: rgba(255,240,245,0.8);
611
+ }
612
+ .cover-wrapper .cover-body .m_search .input:focus {
613
+ background: #fff0f5;
614
+ }
615
+ .cover-wrapper .list-h {
616
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
617
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
618
+ display: -ms-flexbox /* TWEENER - IE 10 */;
619
+ display: -webkit-flex /* NEW - Chrome */;
620
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
621
+ display: flex;
622
+ -webkit-box-direction: normal;
623
+ -moz-box-direction: normal;
624
+ -webkit-box-orient: horizontal;
625
+ -moz-box-orient: horizontal;
626
+ -webkit-flex-direction: row;
627
+ -ms-flex-direction: row;
628
+ flex-direction: row;
629
+ flex-wrap: wrap;
630
+ -webkit-flex-wrap: wrap;
631
+ -khtml-flex-wrap: wrap;
632
+ -moz-flex-wrap: wrap;
633
+ -o-flex-wrap: wrap;
634
+ -ms-flex-wrap: wrap;
635
+ align-items: stretch;
636
+ border-radius: 4px;
637
+ -webkit-border-radius: 4px;
638
+ user-select: none;
639
+ -webkit-user-select: none;
640
+ -moz-user-select: none;
641
+ -ms-user-select: none;
642
+ }
643
+ .cover-wrapper .list-h a {
644
+ -webkit-box-flex: 1;
645
+ -moz-box-flex: 1;
646
+ -webkit-flex: 1 0;
647
+ -ms-flex: 1 0;
648
+ flex: 1 0;
649
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
650
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
651
+ display: -ms-flexbox /* TWEENER - IE 10 */;
652
+ display: -webkit-flex /* NEW - Chrome */;
653
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
654
+ display: flex;
655
+ font-weight: 600;
656
+ }
657
+ .cover-wrapper .list-h a img {
658
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
659
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
660
+ display: block;
661
+ border-radius: 2px;
662
+ -webkit-border-radius: 2px;
663
+ margin: 4px;
664
+ min-width: 40px;
665
+ max-width: 44px;
666
+ }
667
+ @media screen and (max-width: 768px) {
668
+ .cover-wrapper .list-h a img {
669
+ min-width: 36px;
670
+ max-width: 40px;
671
+ }
672
+ }
673
+ @media screen and (max-width: 500px) {
674
+ .cover-wrapper .list-h a img {
675
+ margin: 2px 4px;
676
+ min-width: 32px;
677
+ max-width: 36px;
678
+ }
679
+ }
680
+ @media screen and (max-width: 375px) {
681
+ .cover-wrapper .list-h a img {
682
+ min-width: 28px;
683
+ max-width: 32px;
684
+ }
685
+ }
686
+ .cover-wrapper {
687
+ max-width: 100%;
688
+ }
689
+ .cover-wrapper.search .bottom .menu {
690
+ margin-top: 16px;
691
+ }
692
+ .cover-wrapper.search .bottom .menu .list-h a {
693
+ white-space: nowrap;
694
+ -webkit-box-direction: normal;
695
+ -moz-box-direction: normal;
696
+ -webkit-box-orient: horizontal;
697
+ -moz-box-orient: horizontal;
698
+ -webkit-flex-direction: row;
699
+ -ms-flex-direction: row;
700
+ flex-direction: row;
701
+ align-items: baseline;
702
+ padding: 2px;
703
+ margin: 4px;
704
+ color: var(--color-site-inner);
705
+ opacity: 0.75;
706
+ -webkit-opacity: 0.75;
707
+ -moz-opacity: 0.75;
708
+ text-shadow: 0 1px 2px rgba(0,0,0,0.05);
709
+ border-bottom: 2px solid transparent;
710
+ }
711
+ .cover-wrapper.search .bottom .menu .list-h a i {
712
+ margin-right: 4px;
713
+ }
714
+ .cover-wrapper.search .bottom .menu .list-h a p {
715
+ font-size: 0.9375rem;
716
+ }
717
+ .cover-wrapper.search .bottom .menu .list-h a:hover,
718
+ .cover-wrapper.search .bottom .menu .list-h a.active,
719
+ .cover-wrapper.search .bottom .menu .list-h a:active {
720
+ opacity: 1;
721
+ -webkit-opacity: 1;
722
+ -moz-opacity: 1;
723
+ border-bottom: 2px solid var(--color-site-inner);
724
+ }
725
+ @font-face {
726
+ font-family: 'Dosis';
727
+ src: url("https://fastly.jsdelivr.net/gh/moieo/moieo@main/moieo.woff2");
728
+ font-weight: 'normal';
729
+ font-style: 'normal';
730
+ font-display: swap;
731
+ }
732
+ @font-face {
733
+ font-family: 'Sotheby';
734
+ src: url("https://nanaeo.cn/asset/Sotheby.ttf");
735
+ font-weight: 'normal';
736
+ font-style: 'normal';
737
+ font-display: swap;
738
+ }
739
+ .l_header {
740
+ position: fixed;
741
+ z-index: 1000;
742
+ top: 0;
743
+ width: 100%;
744
+ height: 64px;
745
+ background: var(--color-card);
746
+ box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
747
+ -webkit-box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1);
748
+ }
749
+ .l_header.auto {
750
+ transition: opacity 0.4s ease;
751
+ -webkit-transition: opacity 0.4s ease;
752
+ -khtml-transition: opacity 0.4s ease;
753
+ -moz-transition: opacity 0.4s ease;
754
+ -o-transition: opacity 0.4s ease;
755
+ -ms-transition: opacity 0.4s ease;
756
+ visibility: hidden;
757
+ }
758
+ .l_header.auto.show {
759
+ opacity: 1 !important;
760
+ -webkit-opacity: 1 !important;
761
+ -moz-opacity: 1 !important;
762
+ visibility: visible;
763
+ }
764
+ .l_header .container {
765
+ margin-left: 16px;
766
+ margin-right: 16px;
767
+ }
768
+ .l_header #wrapper {
769
+ height: 100%;
770
+ user-select: none;
771
+ -webkit-user-select: none;
772
+ -moz-user-select: none;
773
+ -ms-user-select: none;
774
+ }
775
+ .l_header #wrapper .nav-main,
776
+ .l_header #wrapper .nav-sub {
777
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
778
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
779
+ display: -ms-flexbox /* TWEENER - IE 10 */;
780
+ display: -webkit-flex /* NEW - Chrome */;
781
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
782
+ display: flex;
783
+ flex-wrap: nowrap;
784
+ -webkit-flex-wrap: nowrap;
785
+ -khtml-flex-wrap: nowrap;
786
+ -moz-flex-wrap: nowrap;
787
+ -o-flex-wrap: nowrap;
788
+ -ms-flex-wrap: nowrap;
789
+ justify-content: space-between;
790
+ -webkit-justify-content: space-between;
791
+ -khtml-justify-content: space-between;
792
+ -moz-justify-content: space-between;
793
+ -o-justify-content: space-between;
794
+ -ms-justify-content: space-between;
795
+ align-items: center;
796
+ }
797
+ .l_header #wrapper .nav-main {
798
+ transition: all 0.28s ease;
799
+ -webkit-transition: all 0.28s ease;
800
+ -khtml-transition: all 0.28s ease;
801
+ -moz-transition: all 0.28s ease;
802
+ -o-transition: all 0.28s ease;
803
+ -ms-transition: all 0.28s ease;
804
+ }
805
+ .l_header #wrapper.sub .nav-main {
806
+ transform: translateY(-64px);
807
+ -webkit-transform: translateY(-64px);
808
+ -khtml-transform: translateY(-64px);
809
+ -moz-transform: translateY(-64px);
810
+ -o-transform: translateY(-64px);
811
+ -ms-transform: translateY(-64px);
812
+ }
813
+ .l_header #wrapper .nav-sub {
814
+ transition: all 0.28s ease;
815
+ -webkit-transition: all 0.28s ease;
816
+ -khtml-transition: all 0.28s ease;
817
+ -moz-transition: all 0.28s ease;
818
+ -o-transition: all 0.28s ease;
819
+ -ms-transition: all 0.28s ease;
820
+ opacity: 0;
821
+ -webkit-opacity: 0;
822
+ -moz-opacity: 0;
823
+ height: 64px;
824
+ width: calc(100% - 2 * 16px);
825
+ position: absolute;
826
+ }
827
+ .l_header #wrapper .nav-sub ::-webkit-scrollbar {
828
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
829
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
830
+ display: none;
831
+ }
832
+ @media screen and (min-width: 2048px) {
833
+ .l_header #wrapper .nav-sub {
834
+ max-width: 55vw;
835
+ margin: auto;
836
+ }
837
+ }
838
+ .l_header #wrapper.sub .nav-sub {
839
+ opacity: 1;
840
+ -webkit-opacity: 1;
841
+ -moz-opacity: 1;
842
+ }
843
+ .l_header #wrapper .title {
844
+ position: relative;
845
+ color: var(--color-text);
846
+ padding-left: 24px;
847
+ max-height: 64px;
848
+ }
849
+ .l_header #wrapper .nav-main .title {
850
+ white-space: nowrap;
851
+ overflow: hidden;
852
+ text-overflow: ellipsis;
853
+ flex-shrink: 0;
854
+ line-height: 64px;
855
+ padding: 0 24px;
856
+ font-size: 1.25rem;
857
+ font-family: Sotheby, Helvetica, monospace;
858
+ }
859
+ .l_header #wrapper .nav-main .title img {
860
+ height: 64px;
861
+ }
862
+ .l_header .nav-sub {
863
+ max-width: 1080px;
864
+ margin: auto;
865
+ }
866
+ .l_header .nav-sub .title {
867
+ font-weight: bold;
868
+ font-family: Dosis, "PingFang SC", "Microsoft YaHei", Helvetica, Arial, Menlo, Monaco, monospace, sans-serif;
869
+ line-height: 1.2;
870
+ max-height: 64px;
871
+ white-space: normal;
872
+ flex-shrink: 1;
873
+ }
874
+ .l_header .switcher {
875
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
876
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
877
+ display: none;
878
+ line-height: 64px;
879
+ align-items: center;
880
+ }
881
+ .l_header .switcher .s-toc {
882
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
883
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
884
+ display: none;
885
+ }
886
+ @media screen and (max-width: 768px) {
887
+ .l_header .switcher .s-toc {
888
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
889
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
890
+ display: -ms-flexbox /* TWEENER - IE 10 */;
891
+ display: -webkit-flex /* NEW - Chrome */;
892
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
893
+ display: flex;
894
+ }
895
+ }
896
+ .l_header .switcher >li {
897
+ height: 48px;
898
+ transition: all 0.28s ease;
899
+ -webkit-transition: all 0.28s ease;
900
+ -khtml-transition: all 0.28s ease;
901
+ -moz-transition: all 0.28s ease;
902
+ -o-transition: all 0.28s ease;
903
+ -ms-transition: all 0.28s ease;
904
+ margin: 2px;
905
+ }
906
+ @media screen and (max-width: 500px) {
907
+ .l_header .switcher >li {
908
+ margin: 0 1px;
909
+ height: 48px;
910
+ }
911
+ }
912
+ .l_header .switcher >li >a {
913
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
914
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
915
+ display: -ms-flexbox /* TWEENER - IE 10 */;
916
+ display: -webkit-flex /* NEW - Chrome */;
917
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
918
+ display: flex;
919
+ justify-content: center;
920
+ -webkit-justify-content: center;
921
+ -khtml-justify-content: center;
922
+ -moz-justify-content: center;
923
+ -o-justify-content: center;
924
+ -ms-justify-content: center;
925
+ align-items: center;
926
+ width: 48px;
927
+ height: 48px;
928
+ padding: 0.85em 1.1em;
929
+ border-radius: 100px;
930
+ -webkit-border-radius: 100px;
931
+ border: none;
932
+ transition: all 0.28s ease;
933
+ -webkit-transition: all 0.28s ease;
934
+ -khtml-transition: all 0.28s ease;
935
+ -moz-transition: all 0.28s ease;
936
+ -o-transition: all 0.28s ease;
937
+ -ms-transition: all 0.28s ease;
938
+ color: #fcc;
939
+ }
940
+ .l_header .switcher >li >a:hover {
941
+ border: none;
942
+ }
943
+ .l_header .switcher >li >a.active,
944
+ .l_header .switcher >li >a:active {
945
+ border: none;
946
+ background: var(--color-site-bg);
947
+ }
948
+ @media screen and (max-width: 500px) {
949
+ .l_header .switcher >li >a {
950
+ width: 36px;
951
+ height: 48px;
952
+ }
953
+ }
954
+ .l_header .nav-sub .switcher {
955
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
956
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
957
+ display: -ms-flexbox /* TWEENER - IE 10 */;
958
+ display: -webkit-flex /* NEW - Chrome */;
959
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
960
+ display: flex;
961
+ }
962
+ .l_header .m_search {
963
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
964
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
965
+ display: -ms-flexbox /* TWEENER - IE 10 */;
966
+ display: -webkit-flex /* NEW - Chrome */;
967
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
968
+ display: flex;
969
+ height: 64px;
970
+ width: 240px;
971
+ transition: all 0.28s ease;
972
+ -webkit-transition: all 0.28s ease;
973
+ -khtml-transition: all 0.28s ease;
974
+ -moz-transition: all 0.28s ease;
975
+ -o-transition: all 0.28s ease;
976
+ -ms-transition: all 0.28s ease;
977
+ }
978
+ @media screen and (max-width: 1024px) {
979
+ .l_header .m_search {
980
+ width: 44px;
981
+ min-width: 44px;
982
+ }
983
+ .l_header .m_search input::placeholder {
984
+ opacity: 0;
985
+ -webkit-opacity: 0;
986
+ -moz-opacity: 0;
987
+ }
988
+ .l_header .m_search:hover {
989
+ width: 240px;
990
+ }
991
+ .l_header .m_search:hover input::placeholder {
992
+ opacity: 1;
993
+ -webkit-opacity: 1;
994
+ -moz-opacity: 1;
995
+ }
996
+ }
997
+ @media screen and (min-width: 500px) {
998
+ .l_header .m_search:hover .input {
999
+ width: 100%;
1000
+ }
1001
+ .l_header .m_search:hover .input::placeholder {
1002
+ opacity: 1;
1003
+ -webkit-opacity: 1;
1004
+ -moz-opacity: 1;
1005
+ }
1006
+ }
1007
+ @media screen and (max-width: 500px) {
1008
+ .l_header .m_search {
1009
+ min-width: 0;
1010
+ }
1011
+ .l_header .m_search input::placeholder {
1012
+ opacity: 1;
1013
+ -webkit-opacity: 1;
1014
+ -moz-opacity: 1;
1015
+ }
1016
+ }
1017
+ .l_header .m_search .form {
1018
+ position: relative;
1019
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1020
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1021
+ display: -ms-flexbox /* TWEENER - IE 10 */;
1022
+ display: -webkit-flex /* NEW - Chrome */;
1023
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
1024
+ display: flex;
1025
+ width: 100%;
1026
+ align-items: center;
1027
+ }
1028
+ .l_header .m_search .icon {
1029
+ position: absolute;
1030
+ width: 36px;
1031
+ left: 5px;
1032
+ color: var(--color-meta);
1033
+ }
1034
+ @media screen and (max-width: 500px) {
1035
+ .l_header .m_search .icon {
1036
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1037
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1038
+ display: none;
1039
+ }
1040
+ }
1041
+ .l_header .m_search .input {
1042
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1043
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1044
+ display: block;
1045
+ padding-top: 8px;
1046
+ padding-bottom: 8px;
1047
+ line-height: 1.3;
1048
+ width: 100%;
1049
+ color: var(--color-text);
1050
+ background: #ffe6ee;
1051
+ box-shadow: none;
1052
+ -webkit-box-shadow: none;
1053
+ box-sizing: border-box;
1054
+ -webkit-box-sizing: border-box;
1055
+ -moz-box-sizing: border-box;
1056
+ padding-left: 40px;
1057
+ font-size: 0.875rem;
1058
+ border-radius: 8px;
1059
+ -webkit-border-radius: 8px;
1060
+ border: none;
1061
+ transition: all 0.28s ease;
1062
+ -webkit-transition: all 0.28s ease;
1063
+ -khtml-transition: all 0.28s ease;
1064
+ -moz-transition: all 0.28s ease;
1065
+ -o-transition: all 0.28s ease;
1066
+ -ms-transition: all 0.28s ease;
1067
+ }
1068
+ @media screen and (min-width: 500px) {
1069
+ .l_header .m_search .input:focus {
1070
+ box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
1071
+ -webkit-box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1);
1072
+ }
1073
+ }
1074
+ @media screen and (max-width: 500px) {
1075
+ .l_header .m_search .input {
1076
+ background: var(--color-block);
1077
+ padding-left: 8px;
1078
+ border: none;
1079
+ }
1080
+ .l_header .m_search .input:hover,
1081
+ .l_header .m_search .input:focus {
1082
+ border: none;
1083
+ }
1084
+ }
1085
+ @media (max-width: 500px) {
1086
+ .l_header .m_search {
1087
+ left: 0;
1088
+ width: 0;
1089
+ overflow: hidden;
1090
+ position: absolute;
1091
+ background: #fff;
1092
+ transition: all 0.28s ease;
1093
+ -webkit-transition: all 0.28s ease;
1094
+ -khtml-transition: all 0.28s ease;
1095
+ -moz-transition: all 0.28s ease;
1096
+ -o-transition: all 0.28s ease;
1097
+ -ms-transition: all 0.28s ease;
1098
+ }
1099
+ .l_header .m_search .input {
1100
+ border-radius: 32px;
1101
+ -webkit-border-radius: 32px;
1102
+ margin-left: 16px;
1103
+ padding-left: 16px;
1104
+ }
1105
+ .l_header.z_search-open .m_search {
1106
+ width: 100%;
1107
+ }
1108
+ .l_header.z_search-open .m_search .input {
1109
+ width: calc(100% - 120px);
1110
+ }
1111
+ }
1112
+ ul.m-pc >li>a {
1113
+ color: inherit;
1114
+ border-bottom: 2px solid transparent;
1115
+ }
1116
+ ul.m-pc >li>a:active,
1117
+ ul.m-pc >li>a.active {
1118
+ border-bottom: 2px solid #fcc;
1119
+ }
1120
+ ul.m-pc li:hover >ul.list-v,
1121
+ ul.list-v li:hover >ul.list-v {
1122
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1123
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1124
+ display: block;
1125
+ }
1126
+ ul.nav-list-h {
1127
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1128
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1129
+ display: -ms-flexbox /* TWEENER - IE 10 */;
1130
+ display: -webkit-flex /* NEW - Chrome */;
1131
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
1132
+ display: flex;
1133
+ align-items: stretch;
1134
+ }
1135
+ ul.nav-list-h>li {
1136
+ position: relative;
1137
+ justify-content: center;
1138
+ -webkit-justify-content: center;
1139
+ -khtml-justify-content: center;
1140
+ -moz-justify-content: center;
1141
+ -o-justify-content: center;
1142
+ -ms-justify-content: center;
1143
+ height: 100%;
1144
+ line-height: 2.4;
1145
+ border-radius: 4px;
1146
+ -webkit-border-radius: 4px;
1147
+ }
1148
+ ul.nav-list-h>li >a {
1149
+ -webkit-font-smoothing: antialiased;
1150
+ -moz-osx-font-smoothing: grayscale;
1151
+ font-weight: 600;
1152
+ }
1153
+ ul.list-v {
1154
+ z-index: 1;
1155
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1156
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1157
+ display: none;
1158
+ position: absolute;
1159
+ background: var(--color-card);
1160
+ box-shadow: 0 2px 4px 0px rgba(0,0,0,0.08), 0 4px 8px 0px rgba(0,0,0,0.08), 0 8px 16px 0px rgba(0,0,0,0.08);
1161
+ -webkit-box-shadow: 0 2px 4px 0px rgba(0,0,0,0.08), 0 4px 8px 0px rgba(0,0,0,0.08), 0 8px 16px 0px rgba(0,0,0,0.08);
1162
+ margin-top: -6px;
1163
+ border-radius: 4px;
1164
+ -webkit-border-radius: 4px;
1165
+ padding: 8px 0;
1166
+ }
1167
+ ul.list-v.show {
1168
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1169
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1170
+ display: block;
1171
+ }
1172
+ ul.list-v hr {
1173
+ margin-top: 8px;
1174
+ margin-bottom: 8px;
1175
+ }
1176
+ ul.list-v >li {
1177
+ white-space: nowrap;
1178
+ word-break: keep-all;
1179
+ }
1180
+ ul.list-v >li.header {
1181
+ font-size: 0.78125rem;
1182
+ font-weight: bold;
1183
+ line-height: 2em;
1184
+ color: var(--color-meta);
1185
+ margin: 8px 16px 4px;
1186
+ }
1187
+ ul.list-v >li.header i {
1188
+ margin-right: 8px;
1189
+ }
1190
+ ul.list-v >li ul {
1191
+ margin-left: 0;
1192
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1193
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1194
+ display: none;
1195
+ margin-top: -40px;
1196
+ }
1197
+ ul.list-v .aplayer-container {
1198
+ min-height: 64px;
1199
+ padding: 6px 16px;
1200
+ }
1201
+ ul.list-v >li>a {
1202
+ transition: all 0.28s ease;
1203
+ -webkit-transition: all 0.28s ease;
1204
+ -khtml-transition: all 0.28s ease;
1205
+ -moz-transition: all 0.28s ease;
1206
+ -o-transition: all 0.28s ease;
1207
+ -ms-transition: all 0.28s ease;
1208
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1209
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1210
+ display: block;
1211
+ color: var(--color-list);
1212
+ font-size: 0.875rem;
1213
+ font-weight: bold;
1214
+ line-height: 36px;
1215
+ padding: 0 20px 0 16px;
1216
+ text-overflow: ellipsis;
1217
+ margin: 0 4px;
1218
+ border-radius: 4px;
1219
+ -webkit-border-radius: 4px;
1220
+ }
1221
+ @media screen and (max-width: 1024px) {
1222
+ ul.list-v >li>a {
1223
+ line-height: 40px;
1224
+ }
1225
+ }
1226
+ ul.list-v >li>a >i {
1227
+ margin-right: 8px;
1228
+ }
1229
+ ul.list-v >li>a:active,
1230
+ ul.list-v >li>a.active {
1231
+ color: var(--color-list-hl);
1232
+ }
1233
+ ul.list-v >li>a:hover {
1234
+ color: var(--color-list-hl);
1235
+ background: var(--color-site-bg);
1236
+ }
1237
+ .l_header .menu >ul>li>a {
1238
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1239
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1240
+ display: block;
1241
+ padding: 0 8px;
1242
+ }
1243
+ .l_header .menu >ul>li>a >i {
1244
+ margin-right: 4px;
1245
+ }
1246
+ .l_header ul.nav-list-h>li {
1247
+ color: var(--color-list);
1248
+ line-height: 64px;
1249
+ }
1250
+ .l_header ul.nav-list-h>li >a {
1251
+ max-height: 64px;
1252
+ overflow: hidden;
1253
+ color: inherit;
1254
+ }
1255
+ .l_header ul.nav-list-h>li >a:active,
1256
+ .l_header ul.nav-list-h>li >a.active {
1257
+ color: #fcc;
1258
+ }
1259
+ .l_header ul.nav-list-h>li:hover>a {
1260
+ color: var(--color-list-hl);
1261
+ }
1262
+ .l_header ul.nav-list-h>li i.music {
1263
+ animation: rotate-effect 1.5s linear infinite;
1264
+ -webkit-animation: rotate-effect 1.5s linear infinite;
1265
+ -khtml-animation: rotate-effect 1.5s linear infinite;
1266
+ -moz-animation: rotate-effect 1.5s linear infinite;
1267
+ -o-animation: rotate-effect 1.5s linear infinite;
1268
+ -ms-animation: rotate-effect 1.5s linear infinite;
1269
+ }
1270
+ @-moz-keyframes rotate-effect {
1271
+ 0% {
1272
+ transform: rotate(0);
1273
+ -webkit-transform: rotate(0);
1274
+ -khtml-transform: rotate(0);
1275
+ -moz-transform: rotate(0);
1276
+ -o-transform: rotate(0);
1277
+ -ms-transform: rotate(0);
1278
+ }
1279
+ 25% {
1280
+ transform: rotate(90deg);
1281
+ -webkit-transform: rotate(90deg);
1282
+ -khtml-transform: rotate(90deg);
1283
+ -moz-transform: rotate(90deg);
1284
+ -o-transform: rotate(90deg);
1285
+ -ms-transform: rotate(90deg);
1286
+ }
1287
+ 50% {
1288
+ transform: rotate(180deg);
1289
+ -webkit-transform: rotate(180deg);
1290
+ -khtml-transform: rotate(180deg);
1291
+ -moz-transform: rotate(180deg);
1292
+ -o-transform: rotate(180deg);
1293
+ -ms-transform: rotate(180deg);
1294
+ }
1295
+ 75% {
1296
+ transform: rotate(270deg);
1297
+ -webkit-transform: rotate(270deg);
1298
+ -khtml-transform: rotate(270deg);
1299
+ -moz-transform: rotate(270deg);
1300
+ -o-transform: rotate(270deg);
1301
+ -ms-transform: rotate(270deg);
1302
+ }
1303
+ 100% {
1304
+ transform: rotate(360deg);
1305
+ -webkit-transform: rotate(360deg);
1306
+ -khtml-transform: rotate(360deg);
1307
+ -moz-transform: rotate(360deg);
1308
+ -o-transform: rotate(360deg);
1309
+ -ms-transform: rotate(360deg);
1310
+ }
1311
+ }
1312
+ @-webkit-keyframes rotate-effect {
1313
+ 0% {
1314
+ transform: rotate(0);
1315
+ -webkit-transform: rotate(0);
1316
+ -khtml-transform: rotate(0);
1317
+ -moz-transform: rotate(0);
1318
+ -o-transform: rotate(0);
1319
+ -ms-transform: rotate(0);
1320
+ }
1321
+ 25% {
1322
+ transform: rotate(90deg);
1323
+ -webkit-transform: rotate(90deg);
1324
+ -khtml-transform: rotate(90deg);
1325
+ -moz-transform: rotate(90deg);
1326
+ -o-transform: rotate(90deg);
1327
+ -ms-transform: rotate(90deg);
1328
+ }
1329
+ 50% {
1330
+ transform: rotate(180deg);
1331
+ -webkit-transform: rotate(180deg);
1332
+ -khtml-transform: rotate(180deg);
1333
+ -moz-transform: rotate(180deg);
1334
+ -o-transform: rotate(180deg);
1335
+ -ms-transform: rotate(180deg);
1336
+ }
1337
+ 75% {
1338
+ transform: rotate(270deg);
1339
+ -webkit-transform: rotate(270deg);
1340
+ -khtml-transform: rotate(270deg);
1341
+ -moz-transform: rotate(270deg);
1342
+ -o-transform: rotate(270deg);
1343
+ -ms-transform: rotate(270deg);
1344
+ }
1345
+ 100% {
1346
+ transform: rotate(360deg);
1347
+ -webkit-transform: rotate(360deg);
1348
+ -khtml-transform: rotate(360deg);
1349
+ -moz-transform: rotate(360deg);
1350
+ -o-transform: rotate(360deg);
1351
+ -ms-transform: rotate(360deg);
1352
+ }
1353
+ }
1354
+ @-o-keyframes rotate-effect {
1355
+ 0% {
1356
+ transform: rotate(0);
1357
+ -webkit-transform: rotate(0);
1358
+ -khtml-transform: rotate(0);
1359
+ -moz-transform: rotate(0);
1360
+ -o-transform: rotate(0);
1361
+ -ms-transform: rotate(0);
1362
+ }
1363
+ 25% {
1364
+ transform: rotate(90deg);
1365
+ -webkit-transform: rotate(90deg);
1366
+ -khtml-transform: rotate(90deg);
1367
+ -moz-transform: rotate(90deg);
1368
+ -o-transform: rotate(90deg);
1369
+ -ms-transform: rotate(90deg);
1370
+ }
1371
+ 50% {
1372
+ transform: rotate(180deg);
1373
+ -webkit-transform: rotate(180deg);
1374
+ -khtml-transform: rotate(180deg);
1375
+ -moz-transform: rotate(180deg);
1376
+ -o-transform: rotate(180deg);
1377
+ -ms-transform: rotate(180deg);
1378
+ }
1379
+ 75% {
1380
+ transform: rotate(270deg);
1381
+ -webkit-transform: rotate(270deg);
1382
+ -khtml-transform: rotate(270deg);
1383
+ -moz-transform: rotate(270deg);
1384
+ -o-transform: rotate(270deg);
1385
+ -ms-transform: rotate(270deg);
1386
+ }
1387
+ 100% {
1388
+ transform: rotate(360deg);
1389
+ -webkit-transform: rotate(360deg);
1390
+ -khtml-transform: rotate(360deg);
1391
+ -moz-transform: rotate(360deg);
1392
+ -o-transform: rotate(360deg);
1393
+ -ms-transform: rotate(360deg);
1394
+ }
1395
+ }
1396
+ @keyframes rotate-effect {
1397
+ 0% {
1398
+ transform: rotate(0);
1399
+ -webkit-transform: rotate(0);
1400
+ -khtml-transform: rotate(0);
1401
+ -moz-transform: rotate(0);
1402
+ -o-transform: rotate(0);
1403
+ -ms-transform: rotate(0);
1404
+ }
1405
+ 25% {
1406
+ transform: rotate(90deg);
1407
+ -webkit-transform: rotate(90deg);
1408
+ -khtml-transform: rotate(90deg);
1409
+ -moz-transform: rotate(90deg);
1410
+ -o-transform: rotate(90deg);
1411
+ -ms-transform: rotate(90deg);
1412
+ }
1413
+ 50% {
1414
+ transform: rotate(180deg);
1415
+ -webkit-transform: rotate(180deg);
1416
+ -khtml-transform: rotate(180deg);
1417
+ -moz-transform: rotate(180deg);
1418
+ -o-transform: rotate(180deg);
1419
+ -ms-transform: rotate(180deg);
1420
+ }
1421
+ 75% {
1422
+ transform: rotate(270deg);
1423
+ -webkit-transform: rotate(270deg);
1424
+ -khtml-transform: rotate(270deg);
1425
+ -moz-transform: rotate(270deg);
1426
+ -o-transform: rotate(270deg);
1427
+ -ms-transform: rotate(270deg);
1428
+ }
1429
+ 100% {
1430
+ transform: rotate(360deg);
1431
+ -webkit-transform: rotate(360deg);
1432
+ -khtml-transform: rotate(360deg);
1433
+ -moz-transform: rotate(360deg);
1434
+ -o-transform: rotate(360deg);
1435
+ -ms-transform: rotate(360deg);
1436
+ }
1437
+ }
1438
+ .menu-phone li ul.list-v {
1439
+ right: calc(100% - 0.5 * 16px);
1440
+ }
1441
+ .menu-phone li ul.list-v ul {
1442
+ right: calc(100% - 0.5 * 16px);
1443
+ }
1444
+ #wrapper {
1445
+ max-width: 1080px;
1446
+ margin: auto;
1447
+ }
1448
+ @media screen and (min-width: 2048px) {
1449
+ #wrapper {
1450
+ max-width: 55vw;
1451
+ }
1452
+ }
1453
+ #wrapper .menu {
1454
+ -webkit-box-flex: 1;
1455
+ -moz-box-flex: 1;
1456
+ -webkit-flex: 1 1;
1457
+ -ms-flex: 1 1;
1458
+ flex: 1 1;
1459
+ margin: 0 16px 0 0;
1460
+ }
1461
+ #wrapper .menu .list-v ul {
1462
+ left: calc(100% - 0.5 * 16px);
1463
+ }
1464
+ .menu-phone {
1465
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1466
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1467
+ display: none;
1468
+ margin-top: 16px;
1469
+ right: 8px;
1470
+ transition: all 0.28s ease;
1471
+ -webkit-transition: all 0.28s ease;
1472
+ -khtml-transition: all 0.28s ease;
1473
+ -moz-transition: all 0.28s ease;
1474
+ -o-transition: all 0.28s ease;
1475
+ -ms-transition: all 0.28s ease;
1476
+ }
1477
+ .menu-phone ul {
1478
+ right: calc(100% - 0.5 * 16px);
1479
+ }
1480
+ @media screen and (max-width: 500px) {
1481
+ .menu-phone {
1482
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1483
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1484
+ display: block;
1485
+ }
1486
+ }
1487
+ .l_header {
1488
+ max-width: 65vw;
1489
+ left: calc((100% - 65vw) * 0.5);
1490
+ border-bottom-left-radius: 8px;
1491
+ border-bottom-right-radius: 8px;
1492
+ }
1493
+ @media screen and (max-width: 2048px) {
1494
+ .l_header {
1495
+ max-width: 1112px;
1496
+ left: calc((100% - 1112px) * 0.5);
1497
+ }
1498
+ }
1499
+ @media screen and (max-width: 1112px) {
1500
+ .l_header {
1501
+ left: 0;
1502
+ border-radius: 0;
1503
+ -webkit-border-radius: 0;
1504
+ max-width: 100%;
1505
+ }
1506
+ }
1507
+ @media screen and (max-width: 500px) {
1508
+ .l_header .container {
1509
+ margin-left: 0;
1510
+ margin-right: 0;
1511
+ }
1512
+ .l_header #wrapper .nav-main .title {
1513
+ padding-left: 16px;
1514
+ padding-right: 16px;
1515
+ }
1516
+ .l_header #wrapper .nav-sub {
1517
+ width: 100%;
1518
+ }
1519
+ .l_header #wrapper .nav-sub .title {
1520
+ overflow-y: scroll;
1521
+ margin-top: 2px;
1522
+ padding: 8px 16px;
1523
+ }
1524
+ .l_header #wrapper .switcher {
1525
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1526
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1527
+ display: -ms-flexbox /* TWEENER - IE 10 */;
1528
+ display: -webkit-flex /* NEW - Chrome */;
1529
+ display: flex /* NEW, Spec - Opera 12.1, Firefox 20+ */;
1530
+ display: flex;
1531
+ margin-right: 8px;
1532
+ }
1533
+ .l_header .menu {
1534
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1535
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1536
+ display: none;
1537
+ }
1538
+ }
1539
+ @media screen and (max-width: 500px) {
1540
+ .list-v li {
1541
+ max-width: 270px;
1542
+ }
1543
+ }
1544
+ #u-search {
1545
+ display: -webkit-box /* OLD - iOS 6-, Safari 3.1-6 */;
1546
+ display: -moz-box /* OLD - Firefox 19- (buggy but mostly works) */;
1547
+ display: none;
1548
+ position: fixed;
1549
+ top: 0;
1550
+ left: 0;
1551
+ width: 100%;
1552
+ height: 100%;
1553
+ padding: 60px 20px;
1554
+ z-index: 1001;
1555
+ }
1556
+ @media screen and (max-width: 680px) {
1557
+ #u-search {
1558
+ padding: 0px;
1559
+ }
1560
+ }
1561
+
1562
+ </style>
1563
+ <link rel="stylesheet" href="/css/style.css" media="print" onload="this.media='all';this.onload=null">
1564
+ <noscript><link rel="stylesheet" href="/css/style.css"></noscript>
1565
+
1566
+ <script>
1567
+ if (/*@cc_on!@*/false || (!!window.MSInputMethodContext && !!document.documentMode))
1568
+ document.write(
1569
+ '<style>'+
1570
+ 'html{'+
1571
+ 'overflow-x: hidden !important;'+
1572
+ 'overflow-y: hidden !important;'+
1573
+ '}'+
1574
+ '.kill-ie{'+
1575
+ 'text-align:center;'+
1576
+ 'height: 100%;'+
1577
+ 'margin-top: 15%;'+
1578
+ 'margin-bottom: 5500%;'+
1579
+ '}'+
1580
+ '.kill-t{'+
1581
+ 'font-size: 2rem;'+
1582
+ '}'+
1583
+ '.kill-c{'+
1584
+ 'font-size: 1.2rem;'+
1585
+ '}'+
1586
+ '#l_header,#l_body{'+
1587
+ 'display: none;'+
1588
+ '}'+
1589
+ '</style>'+
1590
+ '<div class="kill-ie">'+
1591
+ `<span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br/>`+
1592
+ `<span class="kill-c">微软已经于2016年终止了对 Internet Explorer (IE) 10 及更早版本的支持,<br/>继续使用存在极大的安全隐患,请使用当代主流的浏览器进行访问。</span><br/>`+
1593
+ `<a target="_blank" rel="noopener" href="https://blogs.windows.com/windowsexperience/2021/05/19/the-future-of-internet-explorer-on-windows-10-is-in-microsoft-edge/"><strong>了解详情 ></strong></a>`+
1594
+ '</div>');
1595
+ </script>
1596
+
1597
+
1598
+ <noscript>
1599
+ <style>
1600
+ html{
1601
+ overflow-x: hidden !important;
1602
+ overflow-y: hidden !important;
1603
+ }
1604
+ .kill-noscript{
1605
+ text-align:center;
1606
+ height: 100%;
1607
+ margin-top: 15%;
1608
+ margin-bottom: 5500%;
1609
+ }
1610
+ .kill-t{
1611
+ font-size: 2rem;
1612
+ }
1613
+ .kill-c{
1614
+ font-size: 1.2rem;
1615
+ }
1616
+ #l_header,#l_body{
1617
+ display: none;
1618
+ }
1619
+ </style>
1620
+ <div class="kill-noscript">
1621
+ <span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br/>
1622
+ <span class="kill-c">本页面需要浏览器支持(启用)JavaScript</span><br/>
1623
+ <a target="_blank" rel="noopener" href="https://www.baidu.com/s?wd=启用JavaScript"><strong>了解详情 ></strong></a>
1624
+ </div>
1625
+ </noscript>
1626
+
1627
+
1628
+ <script>
1629
+ /************这个文件存放不需要重载的全局变量和全局函数*********/
1630
+ window.volantis = {}; // volantis 全局变量
1631
+ volantis.debug = "env"; // 调试模式
1632
+ volantis.dom = {}; // 页面Dom see: /source/js/app.js etc.
1633
+
1634
+ volantis.GLOBAL_CONFIG ={
1635
+ debug: "env",
1636
+ cdn: {"js":{"app":"/js/app.js","parallax":"/js/plugins/parallax.js","rightMenu":"/js/plugins/rightMenu.js","rightMenus":"/js/plugins/rightMenus.js","sites":"/js/plugins/tags/sites.js","friends":"/js/plugins/tags/friends.js","contributors":"/js/plugins/tags/contributors.js","search":"/js/search/hexo.js"},"css":{"style":"/css/style.css"}},
1637
+ default: {"avatar":"https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/avatar/round/3442075.svg","link":"https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/link/8f277b4ee0ecd.svg","cover":"https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/cover/76b86c0226ffd.svg","image":"https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/image/2659360.svg"},
1638
+ lastupdate: new Date(1702967735790),
1639
+ sidebar: {
1640
+ for_page: ["blogger","category","webinfo"],
1641
+ for_post: ["toc"],
1642
+ webinfo: {
1643
+ lastupd: {
1644
+ enable: true,
1645
+ friendlyShow: true
1646
+ },
1647
+ runtime: {
1648
+ data: "2022/08/05",
1649
+ unit: "天"
1650
+ }
1651
+ }
1652
+ },
1653
+ plugins: {
1654
+ message: {"enable":true,"css":"https://fastly.jsdelivr.net/npm/volantis-static/libs/izitoast/dist/css/iziToast.min.css","js":"https://fastly.jsdelivr.net/npm/volantis-static/libs/izitoast/dist/js/iziToast.min.js","icon":{"default":"fa-solid fa-info-circle light-blue","quection":"fa-solid fa-question-circle light-blue"},"time":{"default":5000,"quection":20000},"position":"topRight","transitionIn":"bounceInLeft","transitionOut":"fadeOutRight","titleColor":"var(--color-text)","messageColor":"var(--color-text)","backgroundColor":"var(--color-card)","zindex":2147483647,"copyright":{"enable":true,"title":"知识共享许可协议","message":"请遵守 CC BY-NC-SA 4.0 协议。","icon":"far fa-copyright light-blue"},"aplayer":{"enable":true,"play":"fa-solid fa-play","pause":"fa-solid fa-pause"},"rightmenu":{"enable":true,"notice":true}},
1655
+ fancybox: {"css":"https://fastly.jsdelivr.net/npm/volantis-static/libs/@fancyapps/ui/dist/fancybox.css","js":"https://fastly.jsdelivr.net/npm/volantis-static/libs/@fancyapps/ui/dist/fancybox.umd.js"},
1656
+
1657
+
1658
+
1659
+ }
1660
+ }
1661
+
1662
+ /******************** volantis.EventListener ********************************/
1663
+ // 事件监听器 see: /source/js/app.js
1664
+ volantis.EventListener = {}
1665
+ // 这里存放pjax切换页面时将被移除的事件监听器
1666
+ volantis.EventListener.list = []
1667
+ //构造方法
1668
+ function volantisEventListener(type, f, ele) {
1669
+ this.type = type
1670
+ this.f = f
1671
+ this.ele = ele
1672
+ }
1673
+ // 移除事件监听器
1674
+ volantis.EventListener.remove = () => {
1675
+ volantis.EventListener.list.forEach(function (i) {
1676
+ i.ele.removeEventListener(i.type, i.f, false)
1677
+ })
1678
+ volantis.EventListener.list = []
1679
+ }
1680
+ /******************** volantis.dom.$ ********************************/
1681
+ // 注:这里没有选择器,也没有forEach一次只处理一个dom,这里重新封装主题常用的dom方法,返回的是dom对象,对象包含了以下方法,同时保留dom的原生API
1682
+ function volantisDom(ele) {
1683
+ if (!ele) ele = document.createElement("div")
1684
+ this.ele = ele;
1685
+ // ==============================================================
1686
+ this.ele.find = (c) => {
1687
+ let q = this.ele.querySelector(c)
1688
+ if (q)
1689
+ return new volantisDom(q)
1690
+ }
1691
+ // ==============================================================
1692
+ this.ele.hasClass = (c) => {
1693
+ return this.ele.className.match(new RegExp('(\\s|^)' + c + '(\\s|$)'));
1694
+ }
1695
+ this.ele.addClass = (c) => {
1696
+ this.ele.classList.add(c);
1697
+ return this.ele
1698
+ }
1699
+ this.ele.removeClass = (c) => {
1700
+ this.ele.classList.remove(c);
1701
+ return this.ele
1702
+ }
1703
+ this.ele.toggleClass = (c) => {
1704
+ if (this.ele.hasClass(c)) {
1705
+ this.ele.removeClass(c)
1706
+ } else {
1707
+ this.ele.addClass(c)
1708
+ }
1709
+ return this.ele
1710
+ }
1711
+ // ==============================================================
1712
+ // 参数 r 为 true 表示pjax切换页面时事件监听器将被移除,false不移除
1713
+ this.ele.on = (c, f, r = 1) => {
1714
+ this.ele.addEventListener(c, f, false)
1715
+ if (r) {
1716
+ volantis.EventListener.list.push(new volantisEventListener(c, f, this.ele))
1717
+ }
1718
+ return this.ele
1719
+ }
1720
+ this.ele.click = (f, r) => {
1721
+ this.ele.on("click", f, r)
1722
+ return this.ele
1723
+ }
1724
+ this.ele.scroll = (f, r) => {
1725
+ this.ele.on("scroll", f, r)
1726
+ return this.ele
1727
+ }
1728
+ // ==============================================================
1729
+ this.ele.html = (c) => {
1730
+ // if(c=== undefined){
1731
+ // return this.ele.innerHTML
1732
+ // }else{
1733
+ this.ele.innerHTML = c
1734
+ return this.ele
1735
+ // }
1736
+ }
1737
+ // ==============================================================
1738
+ this.ele.hide = (c) => {
1739
+ this.ele.style.display = "none"
1740
+ return this.ele
1741
+ }
1742
+ this.ele.show = (c) => {
1743
+ this.ele.style.display = "block"
1744
+ return this.ele
1745
+ }
1746
+ // ==============================================================
1747
+ return this.ele
1748
+ }
1749
+ volantis.dom.$ = (ele) => {
1750
+ return !!ele ? new volantisDom(ele) : null;
1751
+ }
1752
+ /******************** RunItem ********************************/
1753
+ function RunItem() {
1754
+ this.list = []; // 存放回调函数
1755
+ this.start = () => {
1756
+ for (var i = 0; i < this.list.length; i++) {
1757
+ this.list[i].run();
1758
+ }
1759
+ };
1760
+ this.push = (fn, name, setRequestAnimationFrame = true) => {
1761
+ let myfn = fn
1762
+ if (setRequestAnimationFrame) {
1763
+ myfn = ()=>{
1764
+ volantis.requestAnimationFrame(fn)
1765
+ }
1766
+ }
1767
+ var f = new Item(myfn, name);
1768
+ this.list.push(f);
1769
+ };
1770
+ this.remove = (name) =>{
1771
+ for (let index = 0; index < this.list.length; index++) {
1772
+ const e = this.list[index];
1773
+ if (e.name == name) {
1774
+ this.list.splice(index,1);
1775
+ }
1776
+ }
1777
+ }
1778
+ // 构造一个可以run的对象
1779
+ function Item(fn, name) {
1780
+ // 函数名称
1781
+ this.name = name || fn.name;
1782
+ // run方法
1783
+ this.run = () => {
1784
+ try {
1785
+ fn()
1786
+ } catch (error) {
1787
+ console.log(error);
1788
+ }
1789
+ };
1790
+ }
1791
+ }
1792
+ /******************** Pjax ********************************/
1793
+ // /layout/_plugins/pjax/index.ejs
1794
+ // volantis.pjax.send(callBack[,"callBackName"]) 传入pjax:send回调函数
1795
+ // volantis.pjax.push(callBack[,"callBackName"]) 传入pjax:complete回调函数
1796
+ // volantis.pjax.error(callBack[,"callBackName"]) 传入pjax:error回调函数
1797
+ volantis.pjax = {};
1798
+ volantis.pjax.method = {
1799
+ complete: new RunItem(),
1800
+ error: new RunItem(),
1801
+ send: new RunItem(),
1802
+ };
1803
+ volantis.pjax = Object.assign(volantis.pjax, {
1804
+ push: volantis.pjax.method.complete.push,
1805
+ error: volantis.pjax.method.error.push,
1806
+ send: volantis.pjax.method.send.push,
1807
+ });
1808
+ /******************** RightMenu ********************************/
1809
+ // volantis.rightmenu.handle(callBack[,"callBackName"]) 外部菜单项控制
1810
+ // 可在 volantis.mouseEvent 处获取右键事件
1811
+ volantis.rightmenu = {};
1812
+ volantis.rightmenu.method = {
1813
+ handle: new RunItem(),
1814
+ }
1815
+ volantis.rightmenu = Object.assign(volantis.rightmenu, {
1816
+ handle: volantis.rightmenu.method.handle.push,
1817
+ });
1818
+ /******************** Dark Mode ********************************/
1819
+ // /layout/_partial/scripts/darkmode.ejs
1820
+ // volantis.dark.mode 当前模式 dark or light
1821
+ // volantis.dark.toggle() 暗黑模式触发器
1822
+ // volantis.dark.push(callBack[,"callBackName"]) 传入触发器回调函数
1823
+ volantis.dark = {};
1824
+ volantis.dark.method = {
1825
+ toggle: new RunItem(),
1826
+ };
1827
+ volantis.dark = Object.assign(volantis.dark, {
1828
+ push: volantis.dark.method.toggle.push,
1829
+ });
1830
+ /******************** Message ********************************/
1831
+ // VolantisApp.message
1832
+ /******************** isMobile ********************************/
1833
+ // /source/js/app.js
1834
+ // volantis.isMobile
1835
+ // volantis.isMobileOld
1836
+ /********************脚本动态加载函数********************************/
1837
+ // volantis.js(src, cb) cb 可以传入onload回调函数 或者 JSON对象 例如: volantis.js("src", ()=>{}) 或 volantis.js("src", {defer:true,onload:()=>{}})
1838
+ // volantis.css(src)
1839
+
1840
+ // 返回Promise对象,如下方法同步加载资源,这利于处理文件资源之间的依赖关系,例如:APlayer 需要在 MetingJS 之前加载
1841
+ // (async () => {
1842
+ // await volantis.js("...theme.plugins.aplayer.js.aplayer...")
1843
+ // await volantis.js("...theme.plugins.aplayer.js.meting...")
1844
+ // })();
1845
+
1846
+ // 已经加入了setTimeout
1847
+ volantis.js = (src, cb) => {
1848
+ return new Promise(resolve => {
1849
+ setTimeout(function () {
1850
+ var HEAD = document.getElementsByTagName("head")[0] || document.documentElement;
1851
+ var script = document.createElement("script");
1852
+ script.setAttribute("type", "text/javascript");
1853
+ if (cb) {
1854
+ if (JSON.stringify(cb)) {
1855
+ for (let p in cb) {
1856
+ if (p == "onload") {
1857
+ script[p] = () => {
1858
+ cb[p]()
1859
+ resolve()
1860
+ }
1861
+ } else {
1862
+ script[p] = cb[p]
1863
+ script.onload = resolve
1864
+ }
1865
+ }
1866
+ } else {
1867
+ script.onload = () => {
1868
+ cb()
1869
+ resolve()
1870
+ };
1871
+ }
1872
+ } else {
1873
+ script.onload = resolve
1874
+ }
1875
+ script.setAttribute("src", src);
1876
+ HEAD.appendChild(script);
1877
+ });
1878
+ });
1879
+ }
1880
+ volantis.css = (src) => {
1881
+ return new Promise(resolve => {
1882
+ setTimeout(function () {
1883
+ var link = document.createElement('link');
1884
+ link.rel = "stylesheet";
1885
+ link.href = src;
1886
+ link.onload = resolve;
1887
+ document.getElementsByTagName("head")[0].appendChild(link);
1888
+ });
1889
+ });
1890
+ }
1891
+ /********************按需加载的插件********************************/
1892
+ // volantis.import.jQuery().then(()=>{})
1893
+ volantis.import = {
1894
+ jQuery: () => {
1895
+ if (typeof jQuery == "undefined") {
1896
+ return volantis.js("https://fastly.jsdelivr.net/npm/volantis-static/libs/jquery/dist/jquery.min.js")
1897
+ } else {
1898
+ return new Promise(resolve => {
1899
+ resolve()
1900
+ });
1901
+ }
1902
+ }
1903
+ }
1904
+ /********************** requestAnimationFrame ********************************/
1905
+ // 1、requestAnimationFrame 会把每一帧中的所有 DOM 操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧。
1906
+ // 2、在隐藏或不可见的元素中,requestAnimationFrame 将不会进行重绘或回流,这当然就意味着更少的的 cpu,gpu 和内存使用量。
1907
+ volantis.requestAnimationFrame = (fn)=>{
1908
+ if (!window.requestAnimationFrame) {
1909
+ window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame;
1910
+ }
1911
+ window.requestAnimationFrame(fn)
1912
+ }
1913
+ /************************ layoutHelper *****************************************/
1914
+ volantis.layoutHelper = (helper, html, opt)=>{
1915
+ opt = Object.assign({clean:false, pjax:true}, opt)
1916
+ function myhelper(helper, html, clean) {
1917
+ volantis.tempDiv = document.createElement("div");
1918
+ volantis.tempDiv.innerHTML = html;
1919
+ let layoutHelper = document.querySelector("#layoutHelper-"+helper)
1920
+ if (layoutHelper) {
1921
+ if (clean) {
1922
+ layoutHelper.innerHTML = ""
1923
+ }
1924
+ layoutHelper.append(volantis.tempDiv);
1925
+ }
1926
+ }
1927
+ myhelper(helper, html, opt.clean)
1928
+ if (opt.pjax) {
1929
+ volantis.pjax.push(()=>{
1930
+ myhelper(helper, html, opt.clean)
1931
+ },"layoutHelper-"+helper)
1932
+ }
1933
+ }
1934
+ /****************************** 滚动事件处理 ****************************************/
1935
+ volantis.scroll = {
1936
+ engine: new RunItem(),
1937
+ unengine: new RunItem(),
1938
+ };
1939
+ volantis.scroll = Object.assign(volantis.scroll, {
1940
+ push: volantis.scroll.engine.push,
1941
+ });
1942
+ // 滚动条距离顶部的距离
1943
+ volantis.scroll.getScrollTop = () =>{
1944
+ let scrollPos;
1945
+ if (window.pageYOffset) {
1946
+ scrollPos = window.pageYOffset;
1947
+ } else if (document.compatMode && document.compatMode != 'BackCompat') {
1948
+ scrollPos = document.documentElement.scrollTop;
1949
+ } else if (document.body) {
1950
+ scrollPos = document.body.scrollTop;
1951
+ }
1952
+ return scrollPos;
1953
+ }
1954
+ // 使用 requestAnimationFrame 处理滚动事件
1955
+ // `volantis.scroll.del` 中存储了一个数值, 该数值检测一定时间间隔内滚动条滚动的位移, 数值的检测频率是浏览器的刷新频率. 数值为正数时, 表示向下滚动. 数值为负数时, 表示向上滚动.
1956
+ volantis.scroll.handleScrollEvents = () => {
1957
+ volantis.scroll.lastScrollTop = volantis.scroll.getScrollTop()
1958
+ function loop() {
1959
+ const scrollTop = volantis.scroll.getScrollTop();
1960
+ if (volantis.scroll.lastScrollTop !== scrollTop) {
1961
+ volantis.scroll.del = scrollTop - volantis.scroll.lastScrollTop;
1962
+ volantis.scroll.lastScrollTop = scrollTop;
1963
+ // if (volantis.scroll.del > 0) {
1964
+ // console.log("向下滚动");
1965
+ // } else {
1966
+ // console.log("向上滚动");
1967
+ // }
1968
+ // 注销过期的unengine未滚动事件
1969
+ volantis.scroll.unengine.list=[]
1970
+ volantis.scroll.engine.start();
1971
+ }else{
1972
+ volantis.scroll.unengine.start();
1973
+ }
1974
+ volantis.requestAnimationFrame(loop)
1975
+ }
1976
+ volantis.requestAnimationFrame(loop)
1977
+ }
1978
+ volantis.scroll.handleScrollEvents()
1979
+ volantis.scroll.ele = null;
1980
+ // 触发页面滚动至目标元素位置
1981
+ volantis.scroll.to = (ele, option = {}) => {
1982
+ if (!ele) return;
1983
+ volantis.scroll.ele = ele;
1984
+ // 默认配置
1985
+ opt = {
1986
+ top: ele.getBoundingClientRect().top + document.documentElement.scrollTop,
1987
+ behavior: "smooth"
1988
+ }
1989
+ // 定义配置
1990
+ if ("top" in option) {
1991
+ opt.top = option.top
1992
+ }
1993
+ if ("behavior" in option) {
1994
+ opt.behavior = option.behavior
1995
+ }
1996
+ if ("addTop" in option) {
1997
+ opt.top += option.addTop
1998
+ }
1999
+ if (!("observerDic" in option)) {
2000
+ option.observerDic = 100
2001
+ }
2002
+ // 滚动
2003
+ window.scrollTo(opt);
2004
+ // 监视器
2005
+ // 监视并矫正元素滚动到指定位置
2006
+ // 用于处理 lazyload 引起的 cls 导致的定位失败问题
2007
+ // option.observer = false
2008
+ if (option.observer) {
2009
+ setTimeout(() => {
2010
+ if (volantis.scroll.ele != ele) {
2011
+ return
2012
+ }
2013
+ volantis.scroll.unengine.push(() => {
2014
+ let me = ele.getBoundingClientRect().top
2015
+ if(!(me >= -option.observerDic && me <= option.observerDic)){
2016
+ volantis.scroll.to(ele, option)
2017
+ }
2018
+ volantis.scroll.unengine.remove("unengineObserver")
2019
+ },"unengineObserver")
2020
+ },1000)
2021
+ }
2022
+ }
2023
+ /********************** Content Visibility ********************************/
2024
+ // 见 source/css/first.styl 如果遇到任何问题 删除 .post-story 即可
2025
+ // 一个元素被声明 content-visibility 属性后 如果元素不在 viewport 中 浏览器不会计算其后代元素样式和属性 从而节省 Style & Layout 耗时
2026
+ // content-visibility 的副作用: 锚点失效 等等(实验初期 暂不明确), 使用此方法清除样式
2027
+ volantis.cleanContentVisibility = ()=>{
2028
+ if (document.querySelector(".post-story")) {
2029
+ console.log("cleanContentVisibility");
2030
+ document.querySelectorAll(".post-story").forEach(e=>{
2031
+ e.classList.remove("post-story")
2032
+ })
2033
+ }
2034
+ }
2035
+ /******************************************************************************/
2036
+ /******************************************************************************/
2037
+ /******************************************************************************/
2038
+ //图像加载出错时的处理
2039
+ function errorImgAvatar(img) {
2040
+ img.src = "https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/avatar/round/3442075.svg";
2041
+ img.onerror = null;
2042
+ }
2043
+ function errorImgCover(img) {
2044
+ img.src = "https://fastly.jsdelivr.net/npm/volantis-static/media/placeholder/cover/76b86c0226ffd.svg";
2045
+ img.onerror = null;
2046
+ }
2047
+ /******************************************************************************/
2048
+ </script>
2049
+
2050
+ <!-- import head_end begin -->
2051
+ <!-- import head_end end -->
2052
+ <!-- Custom Files headEnd begin-->
2053
+
2054
+ <!-- Custom Files headEnd end-->
2055
+ <!-- front-matter head_end begin -->
2056
+ <!-- front-matter head_end end -->
2057
+ </head>
2058
+ <body itemscope itemtype="http://schema.org/WebPage">
2059
+ <!-- import body_begin begin-->
2060
+ <!-- import body_begin end-->
2061
+ <!-- Custom Files bodyBegin begin-->
2062
+
2063
+ <!-- Custom Files bodyBegin end-->
2064
+ <!-- front-matter body_begin begin -->
2065
+ <!-- front-matter body_begin end -->
2066
+ <header itemscope itemtype="http://schema.org/WPHeader" id="l_header" class="l_header auto shadow floatable blur " style='opacity: 0' >
2067
+ <div class='container'>
2068
+ <div id='wrapper'>
2069
+ <div class='nav-sub'>
2070
+ <p class="title"></p>
2071
+ <ul class='switcher nav-list-h m-phone' id="pjax-header-nav-list">
2072
+ <li><a id="s-comment" class="fa-solid fa-comments fa-fw" target="_self" href="/" onclick="return false;" title="comment"></a></li>
2073
+
2074
+ <li><a id="s-toc" class="s-toc fa-solid fa-list fa-fw" target="_self" href="/" onclick="return false;" title="toc"></a></li>
2075
+
2076
+ </ul>
2077
+ </div>
2078
+ <div class="nav-main">
2079
+
2080
+
2081
+ <a class="title flat-box" target="_self" href='/'>
2082
+
2083
+
2084
+
2085
+ Mlikiowa
2086
+
2087
+ </a>
2088
+
2089
+
2090
+ <div class='menu navigation'>
2091
+ <ul class='nav-list-h m-pc'>
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+ <li>
2098
+ <a class="menuitem flat-box faa-parent animated-hover"
2099
+ href="/" title="博客"
2100
+
2101
+
2102
+
2103
+ active-action="action-home"
2104
+ >
2105
+ <i class='fa-solid fa-rss fa-fw'></i>博客
2106
+ </a>
2107
+
2108
+ </li>
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+ <li>
2115
+ <a class="menuitem flat-box faa-parent animated-hover"
2116
+ href="/categories/" title="分类"
2117
+
2118
+
2119
+
2120
+ active-action="action-categories"
2121
+ >
2122
+ <i class='fa-solid fa-folder-open fa-fw'></i>分类
2123
+ </a>
2124
+
2125
+ </li>
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+ <li>
2132
+ <a class="menuitem flat-box faa-parent animated-hover"
2133
+ href="/tags/" title="标签"
2134
+
2135
+
2136
+
2137
+ active-action="action-tags"
2138
+ >
2139
+ <i class='fa-solid fa-tags fa-fw'></i>标签
2140
+ </a>
2141
+
2142
+ </li>
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+ <li>
2149
+ <a class="menuitem flat-box faa-parent animated-hover"
2150
+ href="/archives/" title="归档"
2151
+
2152
+
2153
+
2154
+ active-action="action-archives"
2155
+ >
2156
+ <i class='fa-solid fa-archive fa-fw'></i>归档
2157
+ </a>
2158
+
2159
+ </li>
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+ <li>
2166
+ <a class="menuitem flat-box faa-parent animated-hover"
2167
+ href="/friends/" title="友链"
2168
+
2169
+
2170
+
2171
+ active-action="action-friends"
2172
+ >
2173
+ <i class='fa-solid fa-link fa-fw'></i>友链
2174
+ </a>
2175
+
2176
+ </li>
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+ <li>
2183
+ <a class="menuitem flat-box faa-parent animated-hover"
2184
+ href="/about/" title="关于"
2185
+
2186
+
2187
+
2188
+ active-action="action-about"
2189
+ >
2190
+ <i class='fa-solid fa-info-circle fa-fw'></i>关于
2191
+ </a>
2192
+
2193
+ </li>
2194
+
2195
+
2196
+
2197
+ </ul>
2198
+ </div>
2199
+
2200
+ <div class="m_search">
2201
+ <form name="searchform" class="form u-search-form">
2202
+ <i class="icon fa-solid fa-search fa-fw"></i>
2203
+ <input type="text" class="input u-search-input" placeholder="Search..." />
2204
+ </form>
2205
+ </div>
2206
+
2207
+
2208
+ <ul class='switcher nav-list-h m-phone'>
2209
+
2210
+ <li><a class="s-search fa-solid fa-search fa-fw" target="_self" href="/" onclick="return false;" title="search"></a></li>
2211
+
2212
+ <li>
2213
+ <a class="s-menu fa-solid fa-bars fa-fw" target="_self" href="/" onclick="return false;" title="menu"></a>
2214
+ <ul class="menu-phone list-v navigation white-box">
2215
+
2216
+
2217
+
2218
+ <li>
2219
+ <a class="menuitem flat-box faa-parent animated-hover"
2220
+ href="/" title="博客"
2221
+
2222
+
2223
+
2224
+ active-action="action-home"
2225
+ >
2226
+ <i class='fa-solid fa-rss fa-fw'></i>博客
2227
+ </a>
2228
+
2229
+ </li>
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+ <li>
2236
+ <a class="menuitem flat-box faa-parent animated-hover"
2237
+ href="/categories/" title="分类"
2238
+
2239
+
2240
+
2241
+ active-action="action-categories"
2242
+ >
2243
+ <i class='fa-solid fa-folder-open fa-fw'></i>分类
2244
+ </a>
2245
+
2246
+ </li>
2247
+
2248
+
2249
+
2250
+
2251
+
2252
+ <li>
2253
+ <a class="menuitem flat-box faa-parent animated-hover"
2254
+ href="/tags/" title="标签"
2255
+
2256
+
2257
+
2258
+ active-action="action-tags"
2259
+ >
2260
+ <i class='fa-solid fa-tags fa-fw'></i>标签
2261
+ </a>
2262
+
2263
+ </li>
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+ <li>
2270
+ <a class="menuitem flat-box faa-parent animated-hover"
2271
+ href="/archives/" title="归档"
2272
+
2273
+
2274
+
2275
+ active-action="action-archives"
2276
+ >
2277
+ <i class='fa-solid fa-archive fa-fw'></i>归档
2278
+ </a>
2279
+
2280
+ </li>
2281
+
2282
+
2283
+
2284
+
2285
+
2286
+ <li>
2287
+ <a class="menuitem flat-box faa-parent animated-hover"
2288
+ href="/friends/" title="友链"
2289
+
2290
+
2291
+
2292
+ active-action="action-friends"
2293
+ >
2294
+ <i class='fa-solid fa-link fa-fw'></i>友链
2295
+ </a>
2296
+
2297
+ </li>
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+ <li>
2304
+ <a class="menuitem flat-box faa-parent animated-hover"
2305
+ href="/about/" title="关于"
2306
+
2307
+
2308
+
2309
+ active-action="action-about"
2310
+ >
2311
+ <i class='fa-solid fa-info-circle fa-fw'></i>关于
2312
+ </a>
2313
+
2314
+ </li>
2315
+
2316
+
2317
+
2318
+ </ul>
2319
+ </li>
2320
+ </ul>
2321
+
2322
+ <!-- Custom Files header begin -->
2323
+
2324
+ <!-- Custom Files header end -->
2325
+ </div>
2326
+ </div>
2327
+ </div>
2328
+ </header>
2329
+
2330
+ <div id="l_body">
2331
+ <div id="l_cover">
2332
+
2333
+
2334
+ <!-- see: /layout/_partial/scripts/_ctrl/coverCtrl.ejs -->
2335
+ <div id="half" class='cover-wrapper post search' style="display: ;">
2336
+
2337
+ <div class='cover-bg lazyload placeholder' data-bg="https://picst.sunbangyan.cn/2023/12/19/e1a85b7ffee8beef520ef52df5c296da.jpeg"></div>
2338
+
2339
+ <div class='cover-body'>
2340
+ <div class='top'>
2341
+
2342
+
2343
+ <p class="title">Mlikiowa Home Village</p>
2344
+
2345
+
2346
+ </div>
2347
+ <div class='bottom'>
2348
+
2349
+ <div class="m_search">
2350
+ <form name="searchform" class="form u-search-form">
2351
+ <input type="text" class="input u-search-input" placeholder="A Wonderful Theme for Hexo" />
2352
+ <i class="icon fa-solid fa-search fa-fw"></i>
2353
+ </form>
2354
+ </div>
2355
+
2356
+ <div class='menu navigation'>
2357
+ <div class='list-h'>
2358
+
2359
+
2360
+ <a href="/"
2361
+
2362
+
2363
+ active-action="action-home">
2364
+ <p>博客</p>
2365
+ </a>
2366
+
2367
+ <a href="/categories/"
2368
+
2369
+
2370
+ target="_self"
2371
+
2372
+ active-action="action-categories">
2373
+ <p>分类</p>
2374
+ </a>
2375
+
2376
+ <a href="/tags/"
2377
+
2378
+
2379
+ active-action="action-tags">
2380
+ <p>标签</p>
2381
+ </a>
2382
+
2383
+ <a href="/archives/"
2384
+
2385
+
2386
+ active-action="action-archives">
2387
+ <p>归档</p>
2388
+ </a>
2389
+
2390
+ <a href="/friends/"
2391
+
2392
+
2393
+ active-action="action-friends">
2394
+ <p>友链</p>
2395
+ </a>
2396
+
2397
+ <a href="/about/"
2398
+
2399
+
2400
+ active-action="action-about">
2401
+ <p>关于</p>
2402
+ </a>
2403
+
2404
+
2405
+ </div>
2406
+ </div>
2407
+ </div>
2408
+ </div>
2409
+
2410
+ <div id="scroll-down" style="display: none;"><i class="fa fa-chevron-down scroll-down-effects"></i></div>
2411
+ </div>
2412
+
2413
+
2414
+ </div>
2415
+
2416
+ <div id="safearea">
2417
+ <div class="body-wrapper">
2418
+
2419
+ <div id="l_main" class=''>
2420
+ <article itemscope itemtype="http://schema.org/Article" class="article post white-box reveal md shadow floatable blur article-type-post" id="post" itemscope itemprop="blogPost">
2421
+ <link itemprop="mainEntityOfPage" href="https://nanaeo.cn/2022/08/04/NewBlog/">
2422
+ <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
2423
+ <meta itemprop="name" content="Village">
2424
+ </span>
2425
+ <span hidden itemprop="post" itemscope itemtype="http://schema.org/Post">
2426
+ <meta itemprop="name" content="Village">
2427
+ <meta itemprop="description" content="It is a little blog~">
2428
+ </span>
2429
+
2430
+
2431
+
2432
+
2433
+ <span hidden>
2434
+ <meta itemprop="image" content="https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png">
2435
+ </span>
2436
+
2437
+ <div class="article-meta" id="top">
2438
+
2439
+
2440
+
2441
+ <h1 class="title" itemprop="name headline">
2442
+ 新博客建好啦
2443
+ </h1>
2444
+ <div class='new-meta-box'>
2445
+
2446
+
2447
+
2448
+ <div class='new-meta-item author' itemprop="author" itemscope itemtype="http://schema.org/Person">
2449
+ <a itemprop="url" class='author' href="/" rel="nofollow">
2450
+ <img itemprop="image" src="https://q1.qlogo.cn/g?b=qq&nk=1627126029&s=100" class="lazyload" data-srcset="https://q1.qlogo.cn/g?b=qq&nk=1627126029&s=100" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
2451
+ <p itemprop="name">Mlikiowa</p>
2452
+ </a>
2453
+ </div>
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+ <div class='new-meta-item category'>
2460
+ <i class="fas fa-folder-open fa-fw" aria-hidden="true"></i>
2461
+ <a class="category-link" href="/categories/SiteLog/">SiteLog</a>
2462
+
2463
+ <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing">
2464
+ <a href="/categories/SiteLog/" itemprop="url"><span itemprop="name">SiteLog</span></a>
2465
+ </span>
2466
+
2467
+ </div>
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+ <div class="new-meta-item date" itemprop="dateCreated datePublished" datetime="2022-08-04T16:00:00+00:00">
2474
+ <a class='notlink'>
2475
+ <i class="fas fa-calendar-alt fa-fw" aria-hidden="true"></i>
2476
+ <p>发布于:2022年8月5日</p>
2477
+ </a>
2478
+ </div>
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+ <div class="new-meta-item wordcount">
2485
+ <a class='notlink'>
2486
+ <i class="fas fa-keyboard fa-fw" aria-hidden="true"></i>
2487
+ <p>字数:1.4k 字</p>
2488
+ </a>
2489
+ </div>
2490
+ <div class="new-meta-item readtime">
2491
+ <a class='notlink'>
2492
+ <i class="fas fa-hourglass-half fa-fw" aria-hidden="true"></i>
2493
+ <p>时长:4 分钟</p>
2494
+ </a>
2495
+ </div>
2496
+
2497
+
2498
+
2499
+
2500
+ <!-- Custom Files topMeta begin-->
2501
+
2502
+ <!-- Custom Files topMeta end-->
2503
+ </div>
2504
+
2505
+ </div>
2506
+
2507
+
2508
+ <div id="layoutHelper-page-plugins"></div>
2509
+ <div id="post-body" itemprop="articleBody">
2510
+ <p>Hi Hexo,I am Mlikiowa!<br>是全新的Hexo&#x2F;vlolantis博客,我又回来写博客了!</p>
2511
+ <span id="more"></span>
2512
+
2513
+ <div class="story post-story"><h2 id="回忆"><a href="#回忆" class="headerlink" title="回忆"></a>回忆</h2><div class="timeline"><div class="timenode"><div class="meta"><p><p>2019.Previous</p>
2514
+ </p></div><div class="body"><p>使用过Emlog Wordpress来搭建博客,使用过各种博客系统,体验不能说差,只能说没有。</p></div></div>
2515
+ <div class="timenode"><div class="meta"><p><p>2019.Done</p>
2516
+ </p></div><div class="body"><p>开始尝试在CSDN 简书平台发布自己的文章,但是后来因为咱不太喜欢平台限制,遂转入Typecho来搭建博客。</p></div></div>
2517
+ <div class="timenode"><div class="meta"><p><p>2020.Done</p>
2518
+ </p></div><div class="body"><p>一开始typecho小而美的感觉是很不错的体验,加上我正好会使用PHP,能自己搓插件,所以体验还不错。</p></div></div>
2519
+ <div class="timenode"><div class="meta"><p><p>2021.Done</p>
2520
+ </p></div><div class="body"><p>期间域名备案和准备高考,并搭建了一个运行在国内的typecho博客。</p></div></div>
2521
+ <div class="timenode"><div class="meta"><p><p>2022.Done</p>
2522
+ </p></div><div class="body"><p>上半年:因为没有空闲时间打理博客,备案因无法联系注销,后来意外将电脑中typecho的备份删除,故跑路。<br>下半年:借大佬之手找回了数据,但准备重新开始,于是依靠Hexo搭建了全新的博客,走上了白嫖之路。</p></div></div>
2523
+ </div>
2524
+
2525
+ <ul>
2526
+ <li><p><strong>事件前言:</strong> 各位好啊,以上就是我的悲剧经历了,现在我又新搭了博客,使用Hexo博客来进行搭建,依托serverless和action等工具实现。</p>
2527
+ </li>
2528
+ <li><p><strong>备案悲剧:</strong> 之前我一直使用typecho,服务器和域名在国内备案,高中学业繁忙,每天都忙着学习。<br>所以个人就没有时间处理相关的事情,审核电话我也没有接到,导致国内备案掉了,加上本来博文写的就不怎么样,后来干脆就直接删掉跑路了,虽然后面通过大佬进行找回了,我也是决定从头开始了。</p>
2529
+ </li>
2530
+ <li><p><strong>计划上线:</strong> 直到2022年的下半年毕业,我终于想起时修理博客,却又嫌折腾博客麻烦,国内备案审核挺烦。<br>本来是计划在另一位大佬那里使用Typecho搭建博客,因为typecho某些地方有些实在是难受,导致我实在是忍受不了痛苦了(恼,于是很快决定更换博客系统。</p>
2531
+ </li>
2532
+ <li><p><strong>实际行动:</strong> 于是我决定博客使用hexo搭建,并且以低成本实现搭个稳定的博客,<br>本博客是非常容易在新设备上使用,轻松可以在新的地方迁移使用,将跑路可能性降到最低了。</p>
2533
+ </li>
2534
+ </ul>
2535
+ <h3 id="博客运行环境"><a href="#博客运行环境" class="headerlink" title="博客运行环境"></a>博客运行环境</h3><div class="table"><table>
2536
+ <thead>
2537
+ <tr>
2538
+ <th>Name</th>
2539
+ <th>Content</th>
2540
+ </tr>
2541
+ </thead>
2542
+ <tbody><tr>
2543
+ <td>Blog</td>
2544
+ <td>Hexo</td>
2545
+ </tr>
2546
+ <tr>
2547
+ <td>Theme</td>
2548
+ <td>volantis</td>
2549
+ </tr>
2550
+ <tr>
2551
+ <td>platform</td>
2552
+ <td>vercel&Github</td>
2553
+ </tr>
2554
+ <tr>
2555
+ <td>domain</td>
2556
+ <td>nanaeo.cn</td>
2557
+ </tr>
2558
+ </tbody></table>
2559
+ </div>
2560
+
2561
+ <ul>
2562
+ <li><strong>小吐槽:</strong> 之前还想试试<code>hexo-theme-diaspora</code>这样的主题,<br>这款博客是从wp移植到hexo的,介绍图很好看,可惜作者没更新了,于是我只能选择其它主题了。<br>所以我换成了<strong>volantis</strong>主题 (<code>npm -i hexo-theme-volantis</code> 可以轻松安装),个人感觉色调和布局都很好看,可玩程度很高。</li>
2563
+ </ul>
2564
+ </div><div class="story post-story"><h2 id="博客搭建"><a href="#博客搭建" class="headerlink" title="博客搭建"></a>博客搭建</h2><div class="tag link"><a class="link-card" title="本博客源码项目" target="_blank" rel="noopener" href="https://github.com/MliKiowa/MliKiowa.github.io"><div class="left"><img src="https://q1.qlogo.cn/g?b=qq&nk=1627126029&s=100" class="lazyload" data-srcset="https://q1.qlogo.cn/g?b=qq&nk=1627126029&s=100" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="/></div><div class="right"><p class="text">本博客源码项目</p><p class="url">https://github.com/MliKiowa/MliKiowa.github.io</p></div></a></div>
2565
+ <ul>
2566
+ <li><p>本博客通过使用GithubAction等方式生成部署分发博文到如githubpage vercel等服务商<br>至于推送到<code>cos/oss .etc storage bucket</code>还是算了,毕竟谁用谁欠费(容易挨打,好点情况也得宕了)。</p>
2567
+ </li>
2568
+ <li><p><strong>小提示:</strong> 使用多服务商涉及到Dns分流,像腾讯Dnspod的这种解析服务要交钱升级才能使用,非常的难受,所以我考虑使用动态Api进行切换dns解析。</p>
2569
+ </li>
2570
+ <li><p><strong>小吐槽:</strong> 居然<code>github workflow</code>只有已经写好的<code>deploy hugo site to githubpage workflow</code>,没有hexo自动部署的脚步,于是我照猫画虎写了一个Hexo自动部署脚本,但因水平太菜,用这个workflow还得我改了半天。<br>正当我吐槽这么大个github没人发布自动部署脚本的时候,我在github search找到了类似的workflow,但是我已经写完了,难受。</p>
2571
+ </li>
2572
+ </ul>
2573
+ </div><div class="story post-story"><h2 id="迁移使用"><a href="#迁移使用" class="headerlink" title="迁移使用"></a>迁移使用</h2><ul>
2574
+ <li>本博客通过以下脚本可以快速迁移,从云端Github下载源码然后在本地进行编写博文,提交后直接在使用action刷新博客。 (该内容已经失效)</li>
2575
+ <li><strong>Tips:</strong> 如果你有需要也可以执行以下脚本建立新博客,可以轻松在新设备上运行。<details ><summary> bash.sh </summary>
2576
+ <div class='content'>
2577
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">git clone https://github.com/MliKiowa/nanaeo</span><br><span class="line">cd MliKiowa.github.io</span><br><span class="line">npm install</span><br><span class="line">hexo g</span><br></pre></td></tr></table></figure>
2578
+ </div>
2579
+ </details></li>
2580
+ </ul>
2581
+ </div><div class="story post-story"><h2 id="博客内容"><a href="#博客内容" class="headerlink" title="博客内容"></a>博客内容</h2><div class="table"><table>
2582
+ <thead>
2583
+ <tr>
2584
+ <th>Classification</th>
2585
+ <th>Content</th>
2586
+ </tr>
2587
+ </thead>
2588
+ <tbody><tr>
2589
+ <td>Dev Exp</td>
2590
+ <td>Free Developer</td>
2591
+ </tr>
2592
+ <tr>
2593
+ <td>Site Log</td>
2594
+ <td>Site Maintenance Log</td>
2595
+ </tr>
2596
+ <tr>
2597
+ <td>Life Log</td>
2598
+ <td>Record your life</td>
2599
+ </tr>
2600
+ </tbody></table>
2601
+ </div>
2602
+ <ul>
2603
+ <li><strong>小提示:</strong> 内容的主要以编程和生活为主,不会有资源推荐,也不接受类似站点友链。</li>
2604
+ </ul>
2605
+ </div><div class="story post-story"><h2 id="期盼"><a href="#期盼" class="headerlink" title="期盼"></a>期盼</h2><ul>
2606
+ <li><strong>域名问题:</strong> 原来的域名看起来好憨,还被<strong>我朋友嘲笑了</strong>,因此旧域名怎么能配得上新博客,所以我还是注册个符合气质的新域名啊,所以nanaeo.cn诞生了,寓意没有很特别,全凭感觉来,可爱就对了不是嘛(歪头</li>
2607
+ <li><strong>跑路问题:</strong> 折腾数次各种博客的我真的是太累了,所以本博客能run起来我觉得不是不会去折腾什么新博客了,但是请允许我说一句,我正在努力成为年更博主吧,半年一更就是高产!</li>
2608
+ <li><strong>内容布局:</strong> 咱正在正在摸索,你现在看到的排版全是我正在尝试的,我很少使用Hexo,可以说是全新的萌新,但是让我来慢慢完善应该没有任何问题。</li>
2609
+ <li><strong>图床问题:</strong> 这个问题我根本不知道怎么解决我还是摆烂吧,博文能不放图我绝对不会放图出来。</li>
2610
+ <li><strong>总结一下:</strong> 这就是Mlikiowa全新的博客了,Always believe that something wonderful is about to happen.Let’s go!</li>
2611
+ </ul>
2612
+
2613
+ </div>
2614
+ </div>
2615
+
2616
+
2617
+
2618
+ <div class='footer'>
2619
+ <!-- 参考资料、相关资料等 -->
2620
+
2621
+ <!-- 相关文章 -->
2622
+
2623
+ <!-- 版权声明组件 -->
2624
+
2625
+
2626
+
2627
+ <div class="copyright license">
2628
+ <div class="license-title">新博客建好啦</div>
2629
+ <div class="license-link"><a href="https://nanaeo.cn/2022/08/04/NewBlog/">https://nanaeo.cn/2022/08/04/NewBlog/</a>
2630
+ </div>
2631
+ <div class="license-meta">
2632
+ <div class="license-meta-item">
2633
+ <div class="license-meta-title">本文作者</div>
2634
+ <div class="license-meta-text">Mlikiowa</div>
2635
+ </div>
2636
+ <div class="license-meta-item">
2637
+ <div class="license-meta-title">发布于</div>
2638
+ <div class="license-meta-text">2022年8月5日</div>
2639
+ </div>
2640
+
2641
+ <div class="license-meta-item">
2642
+ <div class="license-meta-title">更新于</div>
2643
+ <div class="license-meta-text">2023年12月19日</div>
2644
+ </div>
2645
+
2646
+
2647
+ <div class="license-meta-item">
2648
+ <div class="license-meta-title">许可协议</div>
2649
+ <div class="license-meta-text"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh#" target="_blank">CC BY-NC-SA 4.0</a></div>
2650
+ </div>
2651
+ </div>
2652
+ <div class="license-statement">署名-非商业性使用-相同方式共享 4.0 国际。</div>
2653
+ </div>
2654
+
2655
+
2656
+ <!-- 打赏组件 -->
2657
+
2658
+ </div>
2659
+
2660
+
2661
+
2662
+
2663
+
2664
+ <div class='article-meta' id="bottom">
2665
+ <div class='new-meta-box'>
2666
+
2667
+
2668
+ <div class="new-meta-item date" itemprop="dateModified" datetime="2023-12-19T14:35:13+08:00">
2669
+ <a class='notlink'>
2670
+ <i class="fa-solid fa-edit fa-fw" aria-hidden="true"></i>
2671
+ <p>更新于:2023年12月19日</p>
2672
+ </a>
2673
+ </div>
2674
+
2675
+
2676
+
2677
+
2678
+
2679
+
2680
+ <div class="new-meta-item meta-tags"><a class="tag" href="/tags/SiteLog/" rel="nofollow"><i class="fas fa-hashtag fa-fw" aria-hidden="true"></i><p>SiteLog</p></a></div> <div class="new-meta-item meta-tags"><a class="tag" href="/tags/HexoThemes/" rel="nofollow"><i class="fas fa-hashtag fa-fw" aria-hidden="true"></i><p>HexoThemes</p></a></div> <div class="new-meta-item meta-tags"><a class="tag" href="/tags/Hexo/" rel="nofollow"><i class="fas fa-hashtag fa-fw" aria-hidden="true"></i><p>Hexo</p></a></div>
2681
+ <span hidden itemprop="keywords">SiteLog HexoThemes Hexo</span>
2682
+
2683
+
2684
+
2685
+
2686
+ </div>
2687
+ <!-- Custom Files bottomMeta begin -->
2688
+
2689
+ <!-- Custom Files bottomMeta end -->
2690
+ </div>
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+ <div class="prev-next">
2698
+
2699
+ <a class='prev' href='/2022/08/13/GaussWave/'>
2700
+ <p class='title'><i class="fa-solid fa-chevron-left" aria-hidden="true"></i>高斯滤波</p>
2701
+ <p class='content'>高斯滤波的实现
2702
+
2703
+
2704
+ 本文提示本文提供了相关代码和算法仅为示例学习,并非标准案例,并且OpenCV提供了高斯滤波函数,如果遇到不明白的概念和地方可以参考引用文章理解,也可以尝试在搜索引擎上搜索相关...</p>
2705
+ </a>
2706
+
2707
+
2708
+ </div>
2709
+
2710
+ <!-- Custom Files postEnd begin-->
2711
+
2712
+ <!-- Custom Files postEnd end-->
2713
+ </article>
2714
+
2715
+
2716
+
2717
+
2718
+
2719
+ <article class="post white-box shadow floatable blur" id="comments">
2720
+ <span hidden>
2721
+ <meta itemprop="discussionUrl" content="/2022/08/04/NewBlog/index.html#comments">
2722
+ </span>
2723
+ <p ct><i class='fa-solid fa-comments'></i> 评论</p>
2724
+
2725
+
2726
+ <div id="layoutHelper-comments"></div>
2727
+
2728
+ </article>
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+ </div>
2736
+ <aside id='l_side' itemscope itemtype="http://schema.org/WPSideBar">
2737
+
2738
+
2739
+
2740
+
2741
+
2742
+
2743
+
2744
+
2745
+
2746
+
2747
+ <div class="widget-sticky pjax">
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+ <section class="widget toc-wrapper desktop mobile " id="toc-div" >
2754
+
2755
+ <header>
2756
+
2757
+ <i class="fa-solid fa-list fa-fw" aria-hidden="true"></i><span class='name'>Content</span>
2758
+
2759
+ </header>
2760
+
2761
+
2762
+ <div class='content'>
2763
+ <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9B%9E%E5%BF%86"><span class="toc-text">回忆</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%8D%9A%E5%AE%A2%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83"><span class="toc-text">博客运行环境</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA"><span class="toc-text">博客搭建</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%81%E7%A7%BB%E4%BD%BF%E7%94%A8"><span class="toc-text">迁移使用</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8D%9A%E5%AE%A2%E5%86%85%E5%AE%B9"><span class="toc-text">博客内容</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%9C%9F%E7%9B%BC"><span class="toc-text">期盼</span></a></li></ol>
2764
+ </div>
2765
+ </section>
2766
+
2767
+
2768
+
2769
+ </div>
2770
+
2771
+
2772
+ <!-- 没有 pjax 占位会报错 万恶的 pjax -->
2773
+
2774
+ <div class="pjax">
2775
+ <!-- pjax占位 -->
2776
+ </div>
2777
+
2778
+ <div class="pjax">
2779
+ <!-- pjax占位 -->
2780
+ </div>
2781
+
2782
+ <div class="pjax">
2783
+ <!-- pjax占位 -->
2784
+ </div>
2785
+
2786
+ <div class="pjax">
2787
+ <!-- pjax占位 -->
2788
+ </div>
2789
+
2790
+ <div class="pjax">
2791
+ <!-- pjax占位 -->
2792
+ </div>
2793
+
2794
+ <div class="pjax">
2795
+ <!-- pjax占位 -->
2796
+ </div>
2797
+
2798
+ <div class="pjax">
2799
+ <!-- pjax占位 -->
2800
+ </div>
2801
+
2802
+ <div class="pjax">
2803
+ <!-- pjax占位 -->
2804
+ </div>
2805
+
2806
+ <!-- Custom Files side begin -->
2807
+
2808
+ <!-- Custom Files side end -->
2809
+ </aside>
2810
+
2811
+
2812
+
2813
+ <!--此文件用来存放一些不方便取值的变量-->
2814
+ <!--思路大概是将值藏到重加载的区域内-->
2815
+
2816
+ <pjax>
2817
+ <script>
2818
+ window.pdata={}
2819
+ pdata.ispage=true;
2820
+ pdata.commentPath="";
2821
+ pdata.commentPlaceholder="";
2822
+ pdata.commentConfig={};
2823
+ // see: /layout/_partial/scripts/_ctrl/coverCtrl.ejs
2824
+
2825
+ // header
2826
+ var l_header=document.getElementById("l_header");
2827
+
2828
+ l_header.classList.remove("show");
2829
+
2830
+
2831
+ // cover
2832
+ var cover_wrapper=document.querySelector('#l_cover .cover-wrapper');
2833
+ var scroll_down=document.getElementById('scroll-down');
2834
+ cover_wrapper.id="half";
2835
+ cover_wrapper.style.display="";
2836
+ scroll_down.style.display="none";
2837
+
2838
+
2839
+ </script>
2840
+ </pjax>
2841
+ </div>
2842
+
2843
+
2844
+ <footer class="footer clearfix" itemscope itemtype="http://schema.org/WPFooter">
2845
+ <br><br>
2846
+
2847
+
2848
+ <div class='copyright'>
2849
+ <p>⌘ Hexo With Volantis</p>
2850
+
2851
+ </div>
2852
+
2853
+
2854
+ <!-- Custom Files footer begin-->
2855
+
2856
+ <!-- Custom Files footer end-->
2857
+ </footer>
2858
+
2859
+
2860
+ <a id="s-top" class="fa-solid fa-arrow-up fa-fw" href="/" onclick="return false;" title="top"></a>
2861
+ </div>
2862
+ </div>
2863
+ <div>
2864
+ <script>
2865
+ /******************** volantis.dom ********************************/
2866
+ // 页面选择器 将dom对象缓存起来 see: /source/js/app.js etc.
2867
+ volantis.dom.bodyAnchor = volantis.dom.$(document.getElementById("safearea")); // 页面主体
2868
+ volantis.dom.topBtn = volantis.dom.$(document.getElementById('s-top')); // 向上
2869
+ volantis.dom.wrapper = volantis.dom.$(document.getElementById('wrapper')); // 整个导航栏
2870
+ volantis.dom.coverAnchor = volantis.dom.$(document.querySelector('#l_cover .cover-wrapper')); // 1个
2871
+ volantis.dom.switcher = volantis.dom.$(document.querySelector('#l_header .switcher .s-search')); // 搜索按钮 移动端 1个
2872
+ volantis.dom.header = volantis.dom.$(document.getElementById('l_header')); // 移动端导航栏
2873
+ volantis.dom.search = volantis.dom.$(document.querySelector('#l_header .m_search')); // 搜索框 桌面端 移动端 1个
2874
+ volantis.dom.mPhoneList = volantis.dom.$(document.querySelectorAll('#l_header .m-phone .list-v')); // 手机端 子菜单 多个
2875
+ </script>
2876
+
2877
+ <script>
2878
+
2879
+ volantis.css("https://fastly.jsdelivr.net/npm/volantis-static/libs/@fortawesome/fontawesome-free/css/all.min.css");
2880
+
2881
+
2882
+
2883
+ </script>
2884
+
2885
+ <!-- required -->
2886
+
2887
+
2888
+ <!-- internal -->
2889
+
2890
+ <script src="/js/app.js"></script>
2891
+
2892
+
2893
+
2894
+
2895
+
2896
+
2897
+ <!-- rightmenu要在darkmode之前(ToggleButton) darkmode要在comments之前(volantis.dark.push)-->
2898
+
2899
+
2900
+
2901
+ <script>
2902
+ function loadIssuesJS() {
2903
+
2904
+ const sites_api = document.getElementById('sites-api');
2905
+ if (sites_api != undefined && typeof SitesJS === 'undefined') {
2906
+ volantis.js("/js/plugins/tags/sites.js")
2907
+ }
2908
+
2909
+
2910
+ const friends_api = document.getElementById('friends-api');
2911
+ if (friends_api != undefined && typeof FriendsJS === 'undefined') {
2912
+ volantis.js("/js/plugins/tags/friends.js")
2913
+ }
2914
+
2915
+
2916
+ const contributors_api = document.getElementById('contributors-api');
2917
+ if (contributors_api != undefined && typeof ContributorsJS === 'undefined') {
2918
+ volantis.js("/js/plugins/tags/contributors.js")
2919
+ }
2920
+
2921
+ };
2922
+ loadIssuesJS()
2923
+ volantis.pjax.push(()=>{
2924
+ loadIssuesJS();
2925
+ })
2926
+
2927
+ </script>
2928
+
2929
+
2930
+
2931
+
2932
+ <script defer src="https://fastly.jsdelivr.net/npm/volantis-static/libs/vanilla-lazyload/dist/lazyload.min.js"></script>
2933
+ <script>
2934
+ // https://www.npmjs.com/package/vanilla-lazyload
2935
+ // Set the options globally
2936
+ // to make LazyLoad self-initialize
2937
+ window.lazyLoadOptions = {
2938
+ elements_selector: ".lazyload",
2939
+ threshold: 0
2940
+ };
2941
+ // Listen to the initialization event
2942
+ // and get the instance of LazyLoad
2943
+ window.addEventListener(
2944
+ "LazyLoad::Initialized",
2945
+ function (event) {
2946
+ window.lazyLoadInstance = event.detail.instance;
2947
+ },
2948
+ false
2949
+ );
2950
+ document.addEventListener('DOMContentLoaded', function () {
2951
+ lazyLoadInstance.update();
2952
+ });
2953
+ document.addEventListener('pjax:complete', function () {
2954
+ lazyLoadInstance.update();
2955
+ });
2956
+ </script>
2957
+
2958
+
2959
+
2960
+
2961
+
2962
+
2963
+ <script>
2964
+ window.FPConfig = {
2965
+ delay: 0,
2966
+ ignoreKeywords: ["#"],
2967
+ maxRPS: 6,
2968
+ hoverDelay: 0
2969
+ };
2970
+ </script>
2971
+ <script defer src="https://fastly.jsdelivr.net/npm/volantis-static/libs/flying-pages/flying-pages.min.js"></script>
2972
+
2973
+
2974
+
2975
+
2976
+
2977
+
2978
+
2979
+
2980
+
2981
+ <script>
2982
+ volantis.layoutHelper("comments",`<div id="giscus_container"></div>`)
2983
+
2984
+ volantis.giscus = {};
2985
+
2986
+ function check_giscus() {
2987
+ if (volantis.dark.mode === "dark") {
2988
+ volantis.giscus.Theme = 'dark';
2989
+ } else {
2990
+ volantis.giscus.Theme = 'light';
2991
+ }
2992
+
2993
+ return document.getElementById("giscus_container");
2994
+ }
2995
+
2996
+ function pjax_giscus() {
2997
+ const HEAD = check_giscus();
2998
+ if (!HEAD) return;
2999
+ let cfg = Object.assign({"theme":{"light":"light","dark":"dark"},"repo":"Mlikiowa/MliKiowa.github.io","repo-id":"R_kgDOHxvLiA","category":"General","category-id":"DIC_kwDOHxvLiM4CQr9N","mapping":"url","reactions-enabled":"1","emit-metadata":"0","lang":"zh-CN"},pdata.commentConfig)
3000
+ const script = document.createElement('script');
3001
+ script.setAttribute('src', 'https://giscus.app/client.js');
3002
+ Object.keys(cfg).forEach(k=>{
3003
+ if (k != "theme") {
3004
+ script.setAttribute('data-'+k, cfg[k]);
3005
+ }
3006
+ })
3007
+ script.setAttribute('data-theme', volantis.giscus.Theme);
3008
+ script.setAttribute('crossorigin', "anonymous");
3009
+ HEAD.appendChild(script);
3010
+ }
3011
+
3012
+ function dark_giscus() {
3013
+ const HEAD = check_giscus();
3014
+ if (!HEAD) return;
3015
+
3016
+ const message = {
3017
+ setConfig: {
3018
+ theme: volantis.giscus.Theme
3019
+ }
3020
+ };
3021
+ const giscusIframe = document.querySelector('iframe.giscus-frame');
3022
+ giscusIframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');
3023
+ }
3024
+ pjax_giscus();
3025
+ volantis.pjax.push(pjax_giscus);
3026
+ volantis.dark.push(dark_giscus);
3027
+ </script>
3028
+
3029
+
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+ <!-- optional -->
3036
+
3037
+ <script>
3038
+ const SearchServiceDataPathRoot = ("/" || "/").endsWith("/") ?
3039
+ "/" || "/" :
3040
+ "//" || "/";
3041
+ const SearchServiceDataPath = SearchServiceDataPathRoot + "content.json";
3042
+
3043
+ function loadSearchScript() {
3044
+ // see: layout/_partial/scripts/_ctrl/cdnCtrl.ejs
3045
+ return volantis.js("/js/search/hexo.js");
3046
+ }
3047
+
3048
+ function loadSearchService() {
3049
+ loadSearchScript();
3050
+ document.querySelectorAll(".input.u-search-input").forEach((e) => {
3051
+ e.removeEventListener("focus", loadSearchService, false);
3052
+ });
3053
+
3054
+ document.querySelectorAll(".u-search-form").forEach((e) => {
3055
+ e.addEventListener("submit", (event) => {
3056
+ event.preventDefault();
3057
+ }, false);
3058
+ });
3059
+ }
3060
+
3061
+ // 打开并搜索 字符串 s
3062
+ function OpenSearch(s) {
3063
+ if (typeof SearchService === 'undefined')
3064
+ loadSearchScript().then(() => {
3065
+ SearchService.setQueryText(s);
3066
+ SearchService.search();
3067
+ });
3068
+ else {
3069
+ SearchService.setQueryText(s);
3070
+ SearchService.search();
3071
+ }
3072
+ }
3073
+
3074
+ // 访问含有 ?s=xxx 的链接时打开搜索 // 与搜索引擎 structured data 相关: /scripts/helpers/structured-data/lib/config.js
3075
+ if (window.location.search && /^\?s=/g.test(window.location.search)) {
3076
+ let queryText = decodeURI(window.location.search)
3077
+ .replace(/\ /g, "-")
3078
+ .replace(/^\?s=/g, "");
3079
+ OpenSearch(queryText);
3080
+ }
3081
+
3082
+ // 搜索输入框获取焦点时加载搜索
3083
+ document.querySelectorAll(".input.u-search-input").forEach((e) => {
3084
+ e.addEventListener("focus", loadSearchService, false);
3085
+ });
3086
+ </script>
3087
+
3088
+
3089
+
3090
+
3091
+
3092
+
3093
+
3094
+ <script>
3095
+
3096
+
3097
+
3098
+ function pjax_highlightjs_copyCode(){
3099
+ if (!(document.querySelector(".highlight .code pre") ||
3100
+ document.querySelector(".article pre code"))) {
3101
+ return;
3102
+ }
3103
+ VolantisApp.utilCopyCode(".highlight .code pre, .article pre code")
3104
+ }
3105
+ volantis.requestAnimationFrame(pjax_highlightjs_copyCode)
3106
+ volantis.pjax.push(pjax_highlightjs_copyCode)
3107
+
3108
+ </script>
3109
+
3110
+
3111
+
3112
+
3113
+
3114
+
3115
+
3116
+
3117
+
3118
+
3119
+
3120
+
3121
+ <script>
3122
+ function load_swiper() {
3123
+ if (!document.querySelectorAll(".swiper-container")[0]) return;
3124
+ volantis.css("https://fastly.jsdelivr.net/npm/volantis-static/libs/swiper/swiper-bundle.min.css");
3125
+ volantis.js("https://fastly.jsdelivr.net/npm/volantis-static/libs/swiper/swiper-bundle.min.js").then(() => {
3126
+ pjax_swiper();
3127
+ });
3128
+ }
3129
+
3130
+ load_swiper();
3131
+
3132
+ function pjax_swiper() {
3133
+ volantis.swiper = new Swiper('.swiper-container', {
3134
+ slidesPerView: 'auto',
3135
+ spaceBetween: 8,
3136
+ centeredSlides: true,
3137
+ loop: true,
3138
+ pagination: {
3139
+ el: '.swiper-pagination',
3140
+ clickable: true,
3141
+ },
3142
+ navigation: {
3143
+ nextEl: '.swiper-button-next',
3144
+ prevEl: '.swiper-button-prev',
3145
+ },
3146
+ });
3147
+ }
3148
+
3149
+ volantis.pjax.push(() => {
3150
+ if (!document.querySelectorAll(".swiper-container")[0]) return;
3151
+ if (typeof volantis.swiper === "undefined") {
3152
+ load_swiper();
3153
+ } else {
3154
+ pjax_swiper();
3155
+ }
3156
+ });
3157
+ </script>
3158
+
3159
+
3160
+ <!-- pjax 标签必须存在于所有页面 否则 pjax error -->
3161
+ <pjax>
3162
+
3163
+ </pjax>
3164
+
3165
+ <script>
3166
+ function listennSidebarTOC() {
3167
+ const navItems = document.querySelectorAll(".toc li");
3168
+ if (!navItems.length) return;
3169
+ let targets = []
3170
+ const sections = [...navItems].map((element) => {
3171
+ const link = element.querySelector(".toc-link");
3172
+ const target = document.getElementById(
3173
+ decodeURI(link.getAttribute("href")).replace("#", "")
3174
+ );
3175
+ targets.push(target)
3176
+ // 解除 a 标签 href 的 锚点定位, a 标签 href 的 锚点定位 会随机启用?? 产生错位???
3177
+ link.setAttribute("onclick","return false;")
3178
+ link.setAttribute("toc-action","toc-"+decodeURI(link.getAttribute("href")).replace("#", ""))
3179
+ link.setAttribute("href","/")
3180
+ // 配置 点击 触发新的锚点定位
3181
+ link.addEventListener("click", (event) => {
3182
+ event.preventDefault();
3183
+ // 这里的 addTop 是通过错位使得 toc 自动展开.
3184
+ volantis.scroll.to(target,{addTop: 5, observer:true})
3185
+ // Anchor id
3186
+ history.pushState(null, document.title, "#" + target.id);
3187
+ });
3188
+ return target;
3189
+ });
3190
+
3191
+ function activateNavByIndex(target) {
3192
+ if (target.classList.contains("active-current")) return;
3193
+
3194
+ document.querySelectorAll(".toc .active").forEach((element) => {
3195
+ element.classList.remove("active", "active-current");
3196
+ });
3197
+ target.classList.add("active", "active-current");
3198
+ let parent = target.parentNode;
3199
+ while (!parent.matches(".toc")) {
3200
+ if (parent.matches("li")) parent.classList.add("active");
3201
+ parent = parent.parentNode;
3202
+ }
3203
+ }
3204
+
3205
+ // 方案一:
3206
+ volantis.activateNavIndex=0
3207
+ activateNavByIndex(navItems[volantis.activateNavIndex])
3208
+ volantis.scroll.push(()=>{
3209
+ if (targets[0].getBoundingClientRect().top >= 0) {
3210
+ volantis.activateNavIndex = 0
3211
+ }else if (targets[targets.length-1].getBoundingClientRect().top < 0) {
3212
+ volantis.activateNavIndex = targets.length-1
3213
+ } else {
3214
+ for (let index = 0; index < targets.length; index++) {
3215
+ const target0 = targets[index];
3216
+ const target1 = targets[(index+1)%targets.length];
3217
+ if (target0.getBoundingClientRect().top < 0&&target1.getBoundingClientRect().top >= 0) {
3218
+ volantis.activateNavIndex=index
3219
+ break;
3220
+ }
3221
+ }
3222
+ }
3223
+ activateNavByIndex(navItems[volantis.activateNavIndex])
3224
+ })
3225
+
3226
+ // 方案二:
3227
+ // IntersectionObserver 不是完美精确到像素级别 也不是低延时性的
3228
+ // function findIndex(entries) {
3229
+ // let index = 0;
3230
+ // let entry = entries[index];
3231
+ // if (entry.boundingClientRect.top > 0) {
3232
+ // index = sections.indexOf(entry.target);
3233
+ // return index === 0 ? 0 : index - 1;
3234
+ // }
3235
+ // for (; index < entries.length; index++) {
3236
+ // if (entries[index].boundingClientRect.top <= 0) {
3237
+ // entry = entries[index];
3238
+ // } else {
3239
+ // return sections.indexOf(entry.target);
3240
+ // }
3241
+ // }
3242
+ // return sections.indexOf(entry.target);
3243
+ // }
3244
+ // function createIntersectionObserver(marginTop) {
3245
+ // marginTop = Math.floor(marginTop + 10000);
3246
+ // let intersectionObserver = new IntersectionObserver(
3247
+ // (entries, observe) => {
3248
+ // let scrollHeight = document.documentElement.scrollHeight;
3249
+ // if (scrollHeight > marginTop) {
3250
+ // observe.disconnect();
3251
+ // createIntersectionObserver(scrollHeight);
3252
+ // return;
3253
+ // }
3254
+ // let index = findIndex(entries);
3255
+ // activateNavByIndex(navItems[index]);
3256
+ // }, {
3257
+ // rootMargin: marginTop + "px 0px -100% 0px",
3258
+ // threshold: 0,
3259
+ // }
3260
+ // );
3261
+ // sections.forEach((element) => {
3262
+ // element && intersectionObserver.observe(element);
3263
+ // });
3264
+ // }
3265
+ // createIntersectionObserver(document.documentElement.scrollHeight);
3266
+ }
3267
+
3268
+ document.addEventListener("DOMContentLoaded", ()=>{
3269
+ volantis.requestAnimationFrame(listennSidebarTOC)
3270
+ });
3271
+ document.addEventListener("pjax:success", ()=>{
3272
+ volantis.requestAnimationFrame(listennSidebarTOC)
3273
+ });
3274
+ </script>
3275
+
3276
+
3277
+ <script>
3278
+ try {
3279
+ // https://web.dev/content-visibility/
3280
+ // https://www.caniuse.com/?search=content-visibility
3281
+ // https://infrequently.org/2020/12/content-visibility-scroll-fix/
3282
+ // https://infrequently.org/2020/12/resize-resilient-deferred-rendering/
3283
+
3284
+ // 备注 目前已知的问题:
3285
+ // 动态修改导致的内容高度变化(例如评论框异步渲染的外部盒子高度变化) 无法提前获知, 进而导致的首次滚动条跳动无法去除 (wontfix) 事实上不使用 content-visibility 也会有跳动, 不过是比使用 content-visibility 跳动提前
3286
+ // scrollreveal 插件潜在问题 目前尚不明确
3287
+
3288
+ let eqIsh = (a, b, fuzz = 2) => {
3289
+ return Math.abs(a - b) <= fuzz;
3290
+ };
3291
+
3292
+ let rectNotEQ = (a, b) => {
3293
+ return !eqIsh(a.width, b.width) || !eqIsh(a.height, b.height);
3294
+ };
3295
+
3296
+ // Keep a map of elements and the dimensions of
3297
+ // their place-holders, re-setting the element's
3298
+ // intrinsic size when we get updated measurements
3299
+ // from observers.
3300
+ let spaced = new WeakMap();
3301
+
3302
+ // Only call this when known cheap, post layout
3303
+ let reserveSpace = (el, rect = el.getClientBoundingRect()) => {
3304
+ let old = spaced.get(el);
3305
+ // Set intrinsic size to prevent jumping on un-painting:
3306
+ // https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override
3307
+ if (!old || rectNotEQ(old, rect)) {
3308
+ spaced.set(el, rect);
3309
+ el.style["contain-intrinsic-size"] = `${rect.width}px ${rect.height}px`;
3310
+ }
3311
+ };
3312
+
3313
+ let iObs = new IntersectionObserver(
3314
+ (entries, o) => {
3315
+ entries.forEach((entry) => {
3316
+ // We don't care if the element is intersecting or
3317
+ // has been laid out as our page structure ensures
3318
+ // they'll get the right width.
3319
+ reserveSpace(entry.target, entry.boundingClientRect);
3320
+ });
3321
+ },
3322
+ { rootMargin: "500px 0px 500px 0px" }
3323
+ );
3324
+
3325
+ let rObs = new ResizeObserver((entries, o) => {
3326
+ entries.forEach((entry) => {
3327
+ reserveSpace(entry.target, entry.contentRect);
3328
+ });
3329
+ });
3330
+
3331
+ let resizeResilientDeferredRendering = (Selector) => {
3332
+ let articles = document.querySelectorAll(Selector);
3333
+
3334
+ if (articles.length) {
3335
+ articles.forEach((el) => {
3336
+ iObs.observe(el);
3337
+ rObs.observe(el);
3338
+ });
3339
+
3340
+ // Workaround for Chrome bug, part 2.
3341
+ //
3342
+ // Re-enable browser management of rendering for the
3343
+ // first article after the first paint. Double-rAF
3344
+ // to ensure we get called after a layout.
3345
+ requestAnimationFrame(() => {
3346
+ requestAnimationFrame(() => {
3347
+ articles[0].style["content-visibility"] = "auto";
3348
+ });
3349
+ });
3350
+ }
3351
+ };
3352
+
3353
+ let contentVisibilityScrollFix = () => {
3354
+ if (!("content-visibility" in document.documentElement.style)) {
3355
+ return;
3356
+ }
3357
+ resizeResilientDeferredRendering(".post-story");
3358
+ };
3359
+ contentVisibilityScrollFix();
3360
+ volantis.pjax.push(contentVisibilityScrollFix);
3361
+ } catch (error) {
3362
+ console.log(error);
3363
+ }
3364
+ </script>
3365
+
3366
+
3367
+
3368
+ <script>
3369
+ document.onreadystatechange = function () {
3370
+ if (document.readyState == 'complete') {
3371
+ // 页面加载完毕 样式加载失败,或是当前网速慢,或是开启了省流模式
3372
+ const { saveData, effectiveType } = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {}
3373
+ if (getComputedStyle(document.querySelector("#safearea"), null)["display"] == "none" || saveData || /2g/.test(effectiveType)) {
3374
+ document.querySelectorAll(".reveal").forEach(function (e) {
3375
+ e.style["opacity"] = "1";
3376
+ });
3377
+ document.querySelector("#safearea").style["display"] = "block";
3378
+ }
3379
+ }
3380
+ }
3381
+ </script>
3382
+
3383
+
3384
+ <script type="application/ld+json">[{"@context":"http://schema.org","@type":"Organization","name":"Village","url":"https://nanaeo.cn/","logo":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png","width":192,"height":192}},{"@context":"http://schema.org","@type":"Person","name":"Mlikiowa","image":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png"},"url":"https://nanaeo.cn/","sameAs":["https://github.com/volantis-x"],"description":"It is a little blog~"},{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://nanaeo.cn/","name":"Village"}},{"@type":"ListItem","position":2,"item":{"@id":"https://nanaeo.cn/categories/SiteLog/","name":"SiteLog"}},{"@type":"ListItem","position":3,"item":{"@id":"https://nanaeo.cn/2022/08/04/NewBlog/","name":"新博客建好啦"}}]},{"@context":"http://schema.org","@type":"WebSite","name":"Village","url":"https://nanaeo.cn/","keywords":null,"description":"It is a little blog~","author":{"@type":"Person","name":"Mlikiowa","image":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png"},"url":"https://nanaeo.cn/","description":"It is a little blog~"},"publisher":{"@type":"Organization","name":"Village","url":"https://nanaeo.cn/","logo":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png","width":192,"height":192}},"potentialAction":{"@type":"SearchAction","name":"Site Search","target":{"@type":"EntryPoint","urlTemplate":"https://nanaeo.cn?s={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"http://schema.org","@type":"BlogPosting","headline":"新博客建好啦","description":"Hi Hexo,I am Mlikiowa!是全新的Hexo&#x2F;vlolantis博客,我又回来写博客了!","inLanguage":["zh-CN","en","default"],"mainEntityOfPage":{"@type":"WebPage","@id":"https://nanaeo.cn/2022/08/04/NewBlog/"},"author":{"@type":"Person","name":"Mlikiowa","image":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png"},"url":"https://nanaeo.cn/"},"publisher":{"@type":"Organization","name":"Village","logo":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png","width":192,"height":192}},"url":"https://nanaeo.cn/2022/08/04/NewBlog/","wordCount":57,"datePublished":"2022-08-04T16:00:00.000Z","dateModified":"2023-12-19T06:35:13.573Z","articleSection":"SiteLog","keywords":"SiteLog,HexoThemes,Hexo","image":{"@type":"ImageObject","url":"https://fastly.jsdelivr.net/npm/volantis-static/media/org.volantis/blog/favicon/android-chrome-192x192.png","width":192,"height":192}}]</script>
3385
+
3386
+
3387
+
3388
+
3389
+ <!--
3390
+ pjax重载区域接口:
3391
+ 1. <pjax></pjax> 标签 pjax 标签必须存在于所有页面 否则 pjax error
3392
+ 2. script[data-pjax]
3393
+ 3. .pjax-reload script
3394
+ 4. .pjax
3395
+ -->
3396
+
3397
+
3398
+
3399
+ <script src="https://fastly.jsdelivr.net/npm/volantis-static/libs/pjax/pjax.min.js"></script>
3400
+
3401
+
3402
+ <script>
3403
+ var pjax;
3404
+ document.addEventListener('DOMContentLoaded', function () {
3405
+ pjax = new Pjax({
3406
+ elements: 'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([pjax-fancybox]):not([onclick="return false;"]):not([onclick="return!1"]):not([target="_blank"]):not([target="view_window"]):not([href$=".xml"])',
3407
+ selectors: [
3408
+ "head title",
3409
+ "head meta[name=keywords]",
3410
+ "head meta[name=description]",
3411
+
3412
+ "#l_main",
3413
+ "#pjax-header-nav-list",
3414
+ ".pjax",
3415
+ "pjax", // <pjax></pjax> 标签
3416
+ "script[data-pjax], .pjax-reload script" // script标签添加data-pjax 或 script标签外层添加.pjax-reload 的script代码段重载
3417
+ ],
3418
+ cacheBust: false, // url 地址追加时间戳,用以避免浏览器缓存
3419
+ timeout: 5000,
3420
+
3421
+ });
3422
+ });
3423
+
3424
+ document.addEventListener('pjax:send', function (e) {
3425
+ //window.stop(); // 相当于点击了浏览器的停止按钮
3426
+
3427
+ try {
3428
+ var currentUrl = window.location.pathname;
3429
+ var targetUrl = e.triggerElement.href;
3430
+ var banUrl = [""];
3431
+ if (banUrl[0] != "") {
3432
+ banUrl.forEach(item => {
3433
+ if(currentUrl.indexOf(item) != -1 || targetUrl.indexOf(item) != -1) {
3434
+ window.location.href = targetUrl;
3435
+ }
3436
+ });
3437
+ }
3438
+ } catch (error) {}
3439
+
3440
+ // 使用 volantis.pjax.send 方法传入pjax:send回调函数 参见layout/_partial/scripts/global.ejs
3441
+ volantis.pjax.method.send.start();
3442
+ });
3443
+
3444
+ document.addEventListener('pjax:complete', function () {
3445
+ // 使用 volantis.pjax.push 方法传入重载函数 参见layout/_partial/scripts/global.ejs
3446
+ volantis.pjax.method.complete.start();
3447
+ });
3448
+
3449
+ document.addEventListener('pjax:error', function (e) {
3450
+ if(volantis.debug) {
3451
+ console.error(e);
3452
+ console.log('pjax error: \n' + JSON.stringify(e));
3453
+ }else{
3454
+ // 使用 volantis.pjax.error 方法传入pjax:error回调函数 参见layout/_partial/scripts/global.ejs
3455
+ volantis.pjax.method.error.start();
3456
+ window.location.href = e.triggerElement.href;
3457
+ }
3458
+ });
3459
+ </script>
3460
+
3461
+
3462
+ </div>
3463
+ <!-- import body_end begin-->
3464
+ <script data-pjax async src="https://ackee.nanaeo.cn/tracker.js" data-ackee-server="https://ackee.nanaeo.cn" data-ackee-domain-id="3e94aa30-5cea-4f2b-9ec6-c0178d3beb0c"></script>
3465
+ <script>"serviceWorker"in navigator&&navigator.serviceWorker.register("/volantis-sw.js").then(function(n){n.onupdatefound=function(){var e=n.installing;e.onstatechange=function(){switch(e.state){case"installed":navigator.serviceWorker.controller?console.log("Updated serviceWorker."):console.log("serviceWorker Sucess!");break;case"redundant":console.log("The installing service worker became redundant.")}}}}).catch(function(e){console.log("Error during service worker registration:",e)}); </script>
3466
+ <!-- import body_end end-->
3467
+ <!-- Custom Files bodyEnd begin-->
3468
+
3469
+ <!-- Custom Files bodyEnd end-->
3470
+ <!-- front-matter body_end begin -->
3471
+ <!-- front-matter body_end end -->
3472
+ </body>
3473
+ </html>