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