PageSourceSearch

https://eloquent-khapse-98a9d2.netlify.app/

html eloquent-khapse-98a9d2.netlify.app collected 2026-10-03 10:41:36 UTC 108,592 bytes, 3,128 lines download raw bytes

1<!DOCTYPE html>
2<html>
3  <!-- meta/link... -->
4  
5
6
7
8<head>
9  <meta http-equiv="content-type" content="text/html; charset=utf-8">
10<!-- This site is hosted on Netlify. Anyone can build and deploy a site
11     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=f9d215e3-e2b9-471d-8525-551449bc5772
12     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
13  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
14  <!-- Global site tag (gtag.js) - Google Analytics -->
15
16
17  <title>青云博客-Hexo</title>
18
19  <link rel="icon" type="image/x-icon, image/vnd.microsoft.icon" href="/favicon.ico">
20  <link rel="stylesheet" href="https://at.alicdn.com/t/font_1911880_c1nvbyezg17.css">
21  <link href="https://cdn.jsdmirror.com/npm/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet">
22  <link href="/js/swiper/[email protected]" rel="stylesheet">
23  
24  
25  
26  
27<link rel="stylesheet" href="/css/animate.min.css">
28
29  
30<link rel="stylesheet" href="/css/style.css">
31
32  
33  
34    <link href="/css/fancybox.css" rel="stylesheet">
35  
36  
37    
38<link rel="stylesheet" href="/js/shareJs/share.min.css">
39
40  
41  <style>
42        @media (max-width: 992px) {
43            #waifu {
44                display: none;
45            }
46        }
47    </style>
48    
48<script defer src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
48
49    <link href="//cdn.bootcss.com/pace/1.0.2/themes/pink/pace-theme-flash.css" rel="stylesheet">
50
51    
52        
52<script src="/js/valine/index.js"></script>
52
53    
54    
55    <!-- 依赖于jquery和vue -->
56    
57        
57<script src="https://cdn.jsdmirror.com/npm/[email protected]/dist/jquery.min.js"></script>
57
58    
59
60    
61        
61<script src="https://cdn.jsdmirror.com/npm/[email protected]/dist/vue.min.js"></script>
61
62    
63
64    <!-- import link -->
65    
66        
67            
68        
69            
70        
71    
72    <!-- import script -->
73    
74        
75            <div id="music" key="62c6977a7d8ac" api="https://music.xfyun.club"></div>
75<script defer id="xplayer" src="https://music.xfyun.club/Static/player8/js/player.js" ></script>
75
76        
77            
78        
79    
80
81<meta name="generator" content="Hexo 5.4.0"></head>
82
83  
84  <!-- 预加载动画 -->
85  <!-- 页面预加载动画 -->
86
87  <body>
88    <!-- 判断是否为暗黑风格 -->
89    <!-- 判断是否为黑夜模式 -->
90<script>
91  let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
92
93  if (isDark) {
94    $(document.body).addClass('darkModel');
95  }
96</script>
96
97
98    <!-- 需要在上面加载的js -->
99    
99<script>
100  function loadScript(src, cb) {
101    return new Promise(resolve => {
102      setTimeout(function () {
103        var HEAD = document.getElementsByTagName("head")[0] || document.documentElement;
104        var script = document.createElement("script");
105        script.setAttribute("type", "text/javascript");
106        if (cb) {
107          if (JSON.stringify(cb)) {
108            for (let p in cb) {
109              if (p == "onload") {
110                script[p] = () => {
111                  cb[p]()
112                  resolve()
113                }
114              } else {
115                script[p] = cb[p]
116                script.onload = resolve
117              }
118            }
119          } else {
120            script.onload = () => {
121              cb()
122              resolve()
123            };
124          }
125        } else {
126          script.onload = resolve
127        }
128        script.setAttribute("src", src);
129        HEAD.appendChild(script);
130      });
131    });
132  }
133
134  //https://github.com/filamentgroup/loadCSS
135  var loadCSS = function (src) {
136    return new Promise(resolve => {
137      setTimeout(function () {
138        var link = document.createElement('link');
139        link.rel = "stylesheet";
140        link.href = src;
141        link.onload = resolve;
142        document.getElementsByTagName("head")[0].appendChild(link);
143      });
144    });
145  };
146
147</script>
147 
148
149<!-- 轮播图所需要的js -->
150<script src="/js/swiper/swiper.min.js"></script>
vendor: 1 bytes, line 150
150
151<script src="/js/swiper/vue-awesome-swiper.js"></script>
vendor: 1 bytes, line 151
151
152<script src="/js/swiper/swiper.animate1.0.3.min.js"></script>
152
153
154<script type="text/javascript">
155  Vue.use(window.VueAwesomeSwiper)
156</script>
156
157
158
159  
159<script src="/js/vue-typed-js/index.js"></script>
159
160
161
162<!-- 首页的公告滚动插件的js需要重新加载 -->
163<script src="/js/vue-seamless-scroll/index.js"></script>
163
164
165<!-- 打字机效果js -->
166<script src="https://cdn.jsdmirror.com/npm/[email protected]"></script>
166
167
168
169    <div id="safearea">
170      <main class="main" id="pjax-container">
171        <!-- 头部导航 -->
172        
173<header class="header  " 
174  id="navHeader"
175  style="position: fixed;
176  left: 0; top: 0; z-index: 10;width: 100%;"
177>
178  <div class="header-content">
179    <div class="bars">
180      <div id="appDrawer" class="sidebar-image">
181  <div class="drawer-box-icon">
182    <i class="fas fa-bars" aria-hidden="true" @click="showDialogDrawer"></i>
183  </div>
184  
185  <transition name="fade">
186    <div class="drawer-box_mask" v-cloak style="display: none;" v-show="visible" @click.self="cancelDialogDrawer">
187    </div>
188  </transition>
189  <div class="drawer-box" :class="{'active': visible}">
190    <div class="drawer-box-head bg-color">
191      <img class="drawer-box-head_logo lazyload placeholder" src="/medias/logo.png" class="lazyload placeholder" data-srcset="/medias/logo.png" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="logo">
192      <h3 class="drawer-box-head_title">青云博客-Hexo</h3>
193      <h5 class="drawer-box-head_desc">一个Hexo博客</h5>
194    </div>
195    
196    <div class="drawer-box-content">
197      <ul class="drawer-box-content_menu">
198        
199          
200            <li class="drawer-box-content_item" style="position: relative;">
201              
202                <a href="/" class="drawer-menu-item-link">
203                  
204                    <i class="fas fa-home" aria-hidden="true"></i>
205                  
206                  <span class="name">首页</span>
207                </a>
208              
209            </li>
210          
211            <li class="drawer-box-content_item" style="position: relative;">
212              
213                <a href="/archives" class="drawer-menu-item-link">
214                  
215                    <i class="fas fa-archive" aria-hidden="true"></i>
216                  
217                  <span class="name">文章</span>
218                </a>
219              
220            </li>
221          
222            <li class="drawer-box-content_item" style="position: relative;">
223              
224                <a href="/talks" class="drawer-menu-item-link">
225                  
226                    <i class="fas fa-comment-dots" aria-hidden="true"></i>
227                  
228                  <span class="name">说说</span>
229                </a>
230              
231            </li>
232          
233            <li class="drawer-box-content_item" style="position: relative;">
234              
235                <a href="/gallery" class="drawer-menu-item-link">
236                  
237                    <i class="fas fa-archive" aria-hidden="true"></i>
238                  
239                  <span class="name">相册</span>
240                </a>
241              
242            </li>
243          
244            <li class="drawer-box-content_item" style="position: relative;">
245              
246                <a href="/about" class="drawer-menu-item-link">
247                  
248                    <i class="fas fa-user" aria-hidden="true"></i>
249                  
250                  <span class="name">关于我</span>
251                </a>
252              
253            </li>
254          
255            <li class="drawer-box-content_item" style="position: relative;">
256              
257                <a href="/friends" class="drawer-menu-item-link">
258                  
259                    <i class="fas fa-film" aria-hidden="true"></i>
260                  
261                  <span class="name">友情链接</span>
262                </a>
263              
264            </li>
265          
266        
267        
268          <li class="drawer-box-content_item">
269            <a target="_blank" rel="noopener" href="https://github.com/1422756921">
270              <i class="fas fa-github" aria-hidden="true"></i>
271              <span>Github</span>
272            </a>
273          </li>
274        
275      </ul>
276    </div>
277  </div>
278</div>
279
280<script>
281  var body = document.body || document.documentElement || window;
282  var vm = new Vue({
283    el: '#appDrawer',
284    data: {
285      visible: false,
286      top: 0,
287      openArr: [],
288    },
289    computed: {
290    },
291    mounted() {
292    },
293    methods: {
294      isOpen(index) {
295        if (this.openArr.includes(index)) {
296          return true;
297        } else {
298          return false;
299        }
300      },
301      openOrCloseMenu(curIndex) {
302        const index = this.openArr.indexOf(curIndex);
303        if (index !== -1) {
304          this.openArr.splice(index, 1);
305        } else {
306          this.openArr.push(curIndex);
307        }
308      },
309      showDialogDrawer() {
310        this.visible = true;
311        // 防止页面滚动,只能让弹框滚动
312        this.top = $(document).scrollTop()
313        body.style.cssText = 'width: 100%; height: 100%;overflow: hidden;';
314      },
315      cancelDialogDrawer() {
316        this.visible = false;
317        body.removeAttribute('style');
318        $(document).scrollTop(this.top)
319      }
320    },
321    created() {}
322  })
323</script>
323
324
325    </div>
326    <div class="blog-title" id="author-avatar">
327      
328        <div class="avatar">
329          <img src="/medias/logo.png" class="lazyload placeholder" data-srcset="/medias/logo.png" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="logo">
330        </div>
331      
332      <a href="/" class="logo">青云博客-Hexo</a>
333    </div>
334    <nav class="navbar">
335      <ul class="menu">
336        
337          
338            <li class="menu-item" style="position: relative;">
339              
340                <a href="/" class="menu-item-link" title="首页">
341                  
342                    <i class="fas fa-home" aria-hidden="true"></i>
343                  
344                  <span class="name">首页</span>
345                </a>
346              
347            </li>
348          
349            <li class="menu-item" style="position: relative;">
350              
351                <a href="/archives" class="menu-item-link" title="文章">
352                  
353                    <i class="fas fa-archive" aria-hidden="true"></i>
354                  
355                  <span class="name">文章</span>
356                </a>
357              
358            </li>
359          
360            <li class="menu-item" style="position: relative;">
361              
362                <a href="/talks" class="menu-item-link" title="说说">
363                  
364                    <i class="fas fa-comment-dots" aria-hidden="true"></i>
365                  
366                  <span class="name">说说</span>
367                </a>
368              
369            </li>
370          
371            <li class="menu-item" style="position: relative;">
372              
373                <a href="/gallery" class="menu-item-link" title="相册">
374                  
375                    <i class="fas fa-archive" aria-hidden="true"></i>
376                  
377                  <span class="name">相册</span>
378                </a>
379              
380            </li>
381          
382            <li class="menu-item" style="position: relative;">
383              
384                <a href="/about" class="menu-item-link" title="关于我">
385                  
386                    <i class="fas fa-user" aria-hidden="true"></i>
387                  
388                  <span class="name">关于我</span>
389                </a>
390              
391            </li>
392          
393            <li class="menu-item" style="position: relative;">
394              
395                <a href="/friends" class="menu-item-link" title="友情链接">
396                  
397                    <i class="fas fa-film" aria-hidden="true"></i>
398                  
399                  <span class="name">友情链接</span>
400                </a>
401              
402            </li>
403          
404        
405      </ul>
406      
407      
408        <div id="appSearch">
409  <div class="search"  @click="showDialog()"><i class="fas fa-search" aria-hidden="true"></i></div>
410  <transition name="fade">
411    <div class="message-box_wrapper" style="display: none;" v-cloak v-show="dialogVisible" @click.self="cancelDialogVisible()">
412      <div class="message-box animated bounceInDown">
413        <h2>
414          <span>
415            <i class="fas fa-search" aria-hidden="true"></i>
416            <span class="title">本地搜索</span>
417          </span>
418          <i class="fas fa-times close" pointer style="float:right;" aria-hidden="true" @click.self="cancelDialogVisible()"></i>
419        </h2>
420        <form class="site-search-form">
421          <input type="text"
422            placeholder="请输入关键字"
423            id="local-search-input" 
424            @click="getSearchFile()"
425            class="st-search-input"
426            v-model="searchInput"
427          />
428        </form>
429        <div class="result-wrapper">
430          <div id="local-search-result" class="local-search-result-cls"></div>
431        </div>
432      </div>
433    </div>
434  </transition>
435</div>
436<script src="/js/local_search.js"></script>
vendor: 1 bytes, line 436
436
437<script>
438  var body = document.body || document.documentElement || window;
439  var vm = new Vue({
440    el: '#appSearch',
441    data: {
442      dialogVisible: false,
443      searchInput: '',
444      top: 0,
445    },
446    computed: {
447    },
448    mounted() {
449      window.addEventListener('pjax:complete', () => {
450        this.cancelDialogVisible();
451      })
452    },
453    methods: {
454      showDialog() {
455        this.dialogVisible = true;
456        // 防止页面滚动,只能让弹框滚动
457        this.top = $(document).scrollTop()
458        body.style.cssText = 'overflow: hidden;';
459      },
460      getSearchFile() {
461        if (!this.searchInput) {
462          getSearchFile("/search.xml");
463        }
464      },
465      cancelDialogVisible() {
466        this.dialogVisible = false;
467        body.removeAttribute('style');
468        $(document).scrollTop(this.top)
469      },
470    },
471    created() {}
472  })
473</script>
473
474<!-- 解决刷新页面闪烁问题,可以在元素上添加display: none, 或者用vue.extend方法,详情:https://blog.csdn.net/qq_31393401/article/details/81017912 -->
475<!-- 下面是搜索基本写法 -->
476<!-- 
476<script type="text/javascript" id="local.search.active">
477  var inputArea = document.querySelector("#local-search-input");
478  inputArea.onclick   = function(){ getSearchFile(); this.onclick = null }
479  inputArea.onkeydown = function(){ if(event.keyCode == 13) return false }
480</script>
480 -->
481
482      
483
484    </nav>
485  </div>
486  
487    <a target="_blank" rel="noopener" href="https://github.com/1422756921" class="github-corner color-primary" aria-label="View source on GitHub"><svg width="60" height="60" viewBox="0 0 250 250" style="fill:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
488  
489  
490    <div id="he-plugin-simple"></div>
491    
491<script>
492      WIDGET = {
493        CONFIG: {
494          "modules": "012",
495          "background": 5,
496          "tmpColor": "4A4A4A",
497          "tmpSize": 16,
498          "cityColor": "4A4A4A",
499          "citySize": 16,
500          "aqiSize": 16,
501          "weatherIconSize": 24,
502          "alertIconSize": 18,
503          "padding": "10px 10px 10px 10px",
504          "shadow": "1",
505          "language": "auto",
506          "borderRadius": 5,
507          "fixed": "false",
508          "vertical": "middle",
509          "horizontal": "center",
510          "key": "2784dd3fcb1e4f0f9a9b579bf69641f2"
511        }
512      }
513    </script>
513
514    
514<script defer src="/"></script>
514 
515    
516</header>
517        <!-- 内容区域 -->
518        
519  <!-- 首页轮播 -->
520  
521
522  <link href="/js/vue-typed-js/index.css" rel="stylesheet">
523
524
525
526
527
528
529<div class="swiper-length" style="display: none;">0</div>
530<div id="appSwiper"
531  class="swiper-no-swiping"
532  @mouseenter="stopAutoPlay()" 
533  @mouseleave="startAutoPlay()"
534>
535  <swiper v-cloak ref="mySwiper" :options="swiperOptions" @slideChangeTransitionEnd="slideChangeTransitionEnd">
536    
537      <swiper-slide>
538        <div class="item swiper-lazy" data-background="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" style="background-size: 300000px; 
539          background-position: left center;" style="position: relative;">
540          <div class="swiper-bgmask" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;"></div>
541            <div class="flag">
542              
543              <div class="img-mask swiper-lazy swiper-default-bgImg" data-background="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" style="height: 100%; background-size: cover; 
544                background-position: center center;">
545                <div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>   
546              </div>
547              <div class="flag-text">
548                <div class="flag-text-content">
549                  <div class="title ani animated" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s">青墨书晚风</div>
550                  
551                    <div class="ani animated default-excerpt" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s">
552                      <vue-typed-js :strings="defaultDesc" :loop="defaultDescTypedLoop" :type-speed="100" :back-speed="50">
553                        <h1 class="typing"></h1>
554                      </vue-typed-js>
555                    </div>
556                    
557                </div>
558                <div style="display: flex;" class="flag-text-btns">
559                  
560                    <div class="ani animated" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s"><a target="_blank" rel="noopener" href="https://blog.aerr.cn" class="read-more swiper-btn-color" style="display: inline-block; z-index:1;">wp博客</a></div>
561                  
562                  
563                    <div class="ani animated" style="margin-left: 10px;" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s"><a target="_blank" rel="noopener" href="http://dh.aerr.cn" class="read-more swiper-btn-color2" style="display: inline-block; z-index:1;border: 1px solid white;">导航页</a></div>
564                  
565                </div>
566              </div>
567            </div>
568          </div>
569      </swiper-slide>
570    
571  </swiper>
572  
573    <div id="scroll-down" @click="toPostContent()">
574      <a href="javascript:;">
575        <i class="fas fa-angle-down scroll-down-effects"></i>
576      </a>
577    </div>
578  
579  <canvas id="header_canvas"style="position:absolute;bottom:0;width:100%;pointer-events:none;"></canvas>
580  
581    <svg class="hans-container" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none"><defs><path id="hans-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path></defs><g class="hans-parallax"><use xlink:href="#hans-wave" x="50" y="0" fill="rgba(224,233,239,.5)"></use><use xlink:href="#hans-wave" x="50" y="3" fill="rgba(224,233,239,.5)"></use><use xlink:href="#hans-wave" x="50" y="6" fill="rgba(224,233,239,.5)"></use></g></svg>
582    
583</div>
584
585
586<style>.hans-parallax>use{animation:hans-wave-move 12s linear infinite}.hans-parallax>use:nth-child(1){animation-delay:-2s}.hans-parallax>use:nth-child(2){animation-delay:-2s;animation-duration:5s}.hans-parallax>use:nth-child(3){animation-delay:-4s;animation-duration:3s}@keyframes hans-wave-move{0%{transform:translate(-90px,0)}100%{transform:translate(85px,0)}}</style>
587<style>
588  .hans-container {
589    position: absolute!important;
590    bottom: 0;
591    width: 100%;
592    height: 120px;
593    z-index: 100;
594    pointer-events:none;
595  }
596</style>
597
598
599<script>
600  var autoplay = JSON.parse('false');
601  var delay = '5000';
602  var loop = JSON.parse('true') ? false : JSON.parse('true');
603  var effect = 'slide';
604  var swiperLength = parseInt(document.querySelector(".swiper-length").innerText);
605  var defaultDesc = '煮酒洗净尘嚣,论知交,万般付之一笑,共偕老';
606  defaultDesc = defaultDesc.split(',');
607  var defaultDescTypedLoop = JSON.parse('true');
608  var vm = new Vue({
609    el: '#appSwiper',
610    data: {
611      defaultDesc: defaultDesc,
612      defaultDescTypedLoop,
613      swiperOptions: {
614        pagination: {
615          el: '.swiper-pagination',
616          clickable: true // 允许点击小圆点跳转
617        },
618        loop: loop ? true : false,
619        effect, // fade
620        autoplay: (autoplay && swiperLength > 1) ? {
621      delay,
622      disableOnInteraction: false // 手动切换之后继续自动轮播
623      } : false,
624        navigation: {
625          nextEl: '.swiper-button-next',
626          prevEl: '.swiper-button-prev',
627        },
628        lazy: {
629          loadPrevNext: true,
630        },
631        on:{
632          init: function() {
633            swiperAnimateCache(this); //隐藏动画元素 
634            swiperAnimate(this); //初始化完成开始动画
635          }, 
636          slideChangeTransitionEnd: function(){ 
637            swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
638          } 
639        }
640        // Some Swiper option/callback...
641      }
642    },
643    computed: {
644      swiper() {
645        return this.$refs.mySwiper.$swiper
646      }
647    },
648    mounted() {
649      // console.log('Current Swiper instance object', this.swiper)
650      // this.swiper.slideTo(0, 1000, false)
651    },
652    methods: {
653      stopAutoPlay() {
654        (autoplay && swiperLength > 1) && this.swiper.autoplay.stop();
655      },
656      startAutoPlay() {
657        (autoplay && swiperLength > 1) && this.swiper.autoplay.start();
658      },
659      slideChangeTransitionEnd() {
660        console.log('1');
661      },
662      toPostContent() {
663        const fullHeight = $(window).height() - 60;
664        $('html,body').animate({scrollTop: fullHeight},500);
665      }
666    },
667    created() {}
668  })
669</script>
669
670
671  
671<script src="/js/bubble/homeBubble.js"></script>
671
672
673<style>
674#appSwiper {
675  position: relative;
676  user-select: none;
677  overflow: hidden;
678  font-family: Titillium Web,'PingFang SC','Hiragino Sans GB','Microsoft JhengHei','Microsoft YaHei',sans-serif;
679}
680.default-excerpt {
681  font-size: 1.6em;
682  margin-top: 1em;
683  color: #eee;
684}
685.bottom-one-btn {
686  margin-top: 15px;
687}
688.swiper-container {
689  overflow: hidden;
690  z-index: 0;
691}
692.swiper-slide {
693  height: 350px;
694  position: relative;
695}
696.swiper-button-prev,
697.swiper-button-next {
698  padding: 10px 10px;
699  transition: background 0.2s;
700}
701.swiper-button-prev:hover,
702.swiper-button-next:hover {
703  background: rgba(0, 0, 0, 0.2);
704}
705.swiper-slide .item {
706  width: 100%;
707  height: 100%;
708}
709.flag {
710  position: relative;
711  width: 70%;
712  margin: 0 auto;
713  color: #ffffff;
714  height: 100%;
715  background: #000;
716}
717.flag img {
718  min-height: 100%;
719}
720.flag-text {
721  position: absolute;
722  top: 50px;
723  left: 50px;
724  width: 80%;
725  height: 280px;
726  display: flex;
727  flex-direction: column;
728  justify-content: space-between;
729  z-index: 9999;
730}
731.flag-text .title {
732  font-size: 1.8em;
733}
734.flag-text .title a {
735  color: #fff;
736  transition: color 0.3s;
737}
738.flag-text .title a:hover {
739  color: rgba(66, 185, 133, 0.8);
740}
741.flag-text .excerpt {
742  color: #eee;
743  width: 70%;
744  line-height: 30px;
745  height: 150px;
746  margin-top: 2%;
747  display: -webkit-box;
748  -webkit-box-orient: vertical;
749  -webkit-line-clamp: 5;
750  overflow: hidden;
751}
752.swiper-pagination-bullet-active {
753  opacity: 1;
754  background-color: #42b983;
755}
756.img-mask {
757  opacity:0.6; filter: alpha(opacity=60);
758}
759.flag-text .read-more {
760  margin-bottom: 30px;
761  padding: 5px 15px;
762  color: #ffffff;
763  border-radius: 20px;
764}
765#scroll-down {
766  position: absolute;
767  bottom: 10px;
768  left: 50%;
769  transform: translateX(-50%);
770  font-size: 2.5em;
771  color: #fff;
772  cursor: pointer;
773  z-index: 2;
774}
775#scroll-down a {
776  color: #fff;
777}
778@-webkit-keyframes rightan
779  {
780  
781  0%
782  {
783    transform: translateY(0);
784    opacity: 0.5;
785  }
786  50% {
787    transform: translateY(-30px);
788    opacity: 1;
789  }
790  100%
791  {
792    transform: translateY(0);
793    opacity: 0.5;
794  }
795}
796.scroll-down-effects {
797  animation: rightan 1.5s infinite;
798}
799/* 当头部导航设置为背景透明的时候 */
800.swiper-slide {
801  height: 400px;
802}
803.flag-text {
804  top: 80px;
805}
806
807@media (min-width: 992px) {
808  .swiper-button-prev {
809    margin-left: 15%;
810    transform: translateX(-180%);
811  }
812  .swiper-button-next {
813    margin-right: 15%;
814    transform: translateX(180%);
815  }
816  .flag-text .title {
817    width: 80%;
818    line-height: 35px;
819    max-height: 70px;
820    display: -webkit-box;
821    -webkit-box-orient: vertical;
822    -webkit-line-clamp: 2;
823    overflow: hidden;
824  }
825}
826@media screen and (max-width: 1200px) { 
827  .flag {
828    width: 80%;
829  }
830  .swiper-button-prev {
831    margin-left: 10%;
832    transform: translateX(-180%);
833  }
834  .swiper-button-next {
835    margin-right: 10%;
836    transform: translateX(180%);
837  }
838}
839@media (max-width: 992px) {
840  .flag {
841    width: 100%;
842  }
843  .flag-text .title {
844    font-size: 1.5em;
845    margin-top: 50px;
846    display: -webkit-box;
847    -webkit-box-orient: vertical;
848    -webkit-line-clamp: 2;
849    overflow: hidden;
850  }
851  .flag-text {
852    position: absolute;
853    top: 0;
854    left: 0;
855    width: 80%;
856    height: 100%;
857    margin-left: 50%;
858    transform: translateX(-50%);
859  }
860  .flag-text .excerpt {
861    width: 100%;
862    line-height: 25px;
863    height: 125px;
864    display: -webkit-box;
865    -webkit-box-orient: vertical;
866    -webkit-line-clamp: 5;
867    overflow: hidden;
868  }
869  .flag-text .read-more {
870    margin-bottom: 80px;
871  }
872}
873@media (max-width: 992px) and (min-width: 551px) {
874  .flag-text .excerpt {
875    width: 70%;
876  }
877}
878@media (max-width: 551px) {
879  .swiper-slide {
880    height: 250px;
881  }
882  .flag-text .title {
883    line-height: 30px;
884    max-height: 60px;
885    display: -webkit-box;
886    -webkit-box-orient: vertical;
887    -webkit-line-clamp: 2;
888    overflow: hidden;
889    margin-top: 20px;
890  }
891  .flag-text .excerpt {
892    font-size: 1em;
893    line-height: 20px;
894    height: 80px;
895    display: -webkit-box;
896    -webkit-box-orient: vertical;
897    -webkit-line-clamp: 4;
898  }
899  .flag-text .excerpt { 
900    margin-top: 10px;
901  }
902  .flag-text .read-more {
903    margin-top: 10px;
904    margin-bottom: 50px;
905  }
906  .swiper-button-prev,
907  .swiper-button-next {
908    transform: scale(0.5);
909  }
910  .swiper-button-prev {
911    left: 0;
912  }
913  .swiper-button-next {
914    right: 0;
915  }
916}
917/* 当头部导航设置为背景透明的时候 */
918  @media (max-width: 992px) {
919    .flag-text {
920      top: 60px;
921      height: 80%;
922    }
923  }
924  @media (max-width: 551px) {
925    .swiper-slide {
926      height: 310px;
927    }
928  }
929
930/* 文字或者按钮居中显示 */
931
932  .flag-text {
933    left: 10%;
934  }
935  .flag-text .flag-text-content {
936    width: 100%;
937    text-align: center;
938  }
939  .flag-text .title {
940    width: 100%;
941    text-align: center;
942  }
943  .flag-text .excerpt { 
944    width: 100%;
945    text-align: center;
946  }
947  .bottom-one-btn {
948    display: flex;
949    justify-content: center;
950  }
951  .default-excerpt {
952    display: flex;
953    justify-content: center;
954    font-size: 1.6em;
955  }
956  .flag-text-btns {
957    justify-content: center;
958  }
959  @media (min-width: 992px) {
960    .flag-text .excerpt {
961      line-height: 30px;
962      display: -webkit-box;
963      -webkit-box-orient: vertical;
964      -webkit-line-clamp: 5;
965      overflow: hidden;
966    }
967  }
968  @media (max-width: 992px) {
969    .flag-text {
970      margin-left: 0;
971      transform: translateX(0);
972    }
973  }
974
975
976
977
978/* 全屏显示 */
979
980  .flag {
981    width: 100%;
982  }
983  .swiper-slide {
984    height: 100vh;
985  }
986  .flag-text {
987    top: 50%;
988    left: 15%;
989    transform: translateY(-50%);
990    width: 70%;
991    height: auto;
992  }
993  .flag-text .title {
994    font-size: 2.8em;
995    line-height: 1.5em;
996    max-height: none;
997  }
998  .flag-text .excerpt {
999    font-size: 1.25em;
1000    height: 150px;
1001  }
1002  .flag-text .read-more {
1003    margin-top: 10px;
1004  }
1005  .swiper-button-prev,
1006  .swiper-button-next {
1007    margin-top: -60px!important;
1008  }
1009  .swiper-btn-color,
1010  .swiper-btn-color2 {
1011    background-color: transparent;
1012    border: 1px solid #fff;
1013  }
1014  .swiper-btn-color:hover,
1015  .swiper-btn-color2:hover {
1016    background-color: rgba(66, 185, 133, 0.8);
1017    border: 1px solid rgba(66, 185, 133, 0.8)!important;
1018  }
1019  .flag-text-btns {
1020    justify-content: center;
1021  }
1022  .swiper-button-prev {
1023    margin-left: 10px;
1024    transform: translateX(0);
1025    border-radius: 50%;
1026    padding: 0;
1027    width: 50px;
1028    height: 50px;
1029  }
1030  .swiper-button-next {
1031    margin-right: 10px;
1032    transform: translateX(0);
1033    border-radius: 50%;
1034    padding: 0;
1035    width: 50px;
1036    height: 50px;
1037  }
1038  .swiper-button-next:after, .swiper-button-prev:after {
1039    font-size: 1.2em;
1040  }
1041  @media (min-width: 992px) {
1042    .flag-text .excerpt {
1043      line-height: 35px;
1044      height: 175px;
1045    }
1046    .default-excerpt {
1047      min-height: 150px;
1048    }
1049    .typed-element {
1050      align-items: unset;
1051    }
1052  }
1053  @media (max-width: 992px) {
1054    .flag-text {
1055      margin-left: 0;
1056      height: 60%;
1057      top: 55%;
1058    }
1059    .flag-text .title {
1060      font-size: 2.4em;
1061      margin-top: 0;
1062      display: -webkit-box;
1063      -webkit-box-orient: vertical;
1064      -webkit-line-clamp: 2;
1065      overflow: hidden;
1066    }
1067    .flag-text .excerpt {
1068      line-height: 35px;
1069      height: 185px;
1070    }
1071    .flag-text .read-more {
1072      margin-top: 20px;
1073    }
1074  }
1075  @media (max-width: 551px) {
1076    .flag-text {
1077      height: 60%;
1078    }
1079    .flag-text .title {
1080      font-size: 2.2em;
1081    }
1082    .flag-text .excerpt {
1083      line-height: 30px;
1084    }
1085    .flag-text .read-more {
1086      margin-top: 50px;
1087      padding: 10px 30px;
1088    }
1089    .swiper-button-prev {
1090      margin-left: 0;
1091    }
1092    .swiper-button-next {
1093      margin-right: 0;
1094    }
1095    .default-excerpt {
1096      margin-top: 1em;
1097    }
1098  }
1099
1100
1101/* video */
1102.swiper-video {
1103  width: 100%;
1104  height: 100%;
1105}
1106.swiper-video video {
1107  pointer-events: none;
1108}
1109.swiper-video-maskBox{
1110  position: absolute;
1111  top: 0;
1112  left: 0;
1113  height: 100%;
1114  width: 100%;
1115  background-color: #000;
1116  opacity: 0.2;
1117  z-index: 1;
1118}
1119@media (min-width: 992px) {
1120  
1121    .swiper-video {
1122      display: none;
1123    }
1124    .swiper-default-bgImg {
1125      display: block;  
1126    }
1127  
1128}
1129@media (max-width: 992px) {
1130  .swiper-video {
1131    display: none;
1132  }
1133  .swiper-default-bgImg {
1134    display: block;  
1135  }
1136}
1137/* video-end */
1138</style>
1139
1140
1141<div id="l_main">
1142  <div class="l_content">
1143    <!-- 自定义的内容 -->
1144    
1145  
1146    <div class="widget welcome" id="welcome" style="order: -1;background: #fff">
1147      <header>
1148        
1149          <i style="color: blue" class="fas fa-envelope fa-fw" aria-hidden="true"></i><span class='name'>欢迎</span>
1150        
1151      </header>
1152      <div class="content">
1153        <img src="https://imgapi.cn/ip.php" class="lazyload placeholder" data-srcset="https://imgapi.cn/ip.php" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" style="width:100%">
1154      </div>
1155  </div>
1156  
1157    <div class="widget my_github_container" id="my_github_container" style="order: -1;background: #fff">
1158      <header>
1159        
1160          <a style="color: #42b983" target="_blank" rel="noopener" href='https://github.com/1422756921'><i class="fa-solid fa-calendar-days fa-fw" aria-hidden="true"></i><span class='name'>Github日历</span></a>
1161        
1162      </header>
1163      <div class="content">
1164         <img no-lazy width="100%" hright="300px" src="https://ghchart.rshah.org/42b983/1422756921" alt="1422756921 github" /> 
1165      </div>
1166  </div>
1167  
1168
1169    <!-- 首页座右铭 -->
1170    
1171  <div class="motto">
1172      <h3 class="motto-title">
1172座右铭</h3>
1173      <div class="motto-content">
1174        <p>
1175          沉淀后我愿意做个温暖的人,有自己的喜好,有自己的原则,有自己的信仰,不急功近利,不浮夸轻薄。宠辱不惊,淡定安逸,心静如水,不忘初心,方得始终。——凌茜  
1176        </p> 
1177      </div>
1178  </div>
1179
1180    <!-- 首页公告 -->
1181    
1182<style>
1183  .index-notice-content {
1184    margin-top: 10px;
1185  }
1186  .warp {
1187    width: 100%;
1188    margin: 0 auto;
1189    overflow: hidden;
1190  }
1191  .index-notice-content__ul {
1192    list-style: none;
1193    padding: 0;
1194    margin: 0 auto;
1195  }
1196  .index-notice-content__ul li,
1197  .index-notice-content__ul a {
1198    display: block;
1199    height: 30px;
1200    line-height: 30px;
1201    display: flex;
1202    justify-content: space-between;
1203    font-size: 15px;
1204  }
1205  .index-notice-content__title {
1206    flex: 1;
1207    overflow: hidden;
1208  }
1209  .index-notice-content__title a,
1210  .index-notice-content__title span {
1211    overflow: hidden;
1212    display: block;
1213    text-overflow:ellipsis; 
1214    white-space: nowrap;
1215    height: 100%;
1216    width: 100%;
1217    color: #000;
1218  }
1219  .index-notice-content__title a:hover,
1220  .index-notice-content__title span:hover {
1221    text-decoration: underline;
1222  }
1223  .index-notice-content__date {
1224    min-width: 80px;
1225    margin-left: 5px;
1226    color: #000;
1227  }
1228</style>
1229<div class="index-notice" id="appIndexNotice">
1230    <h3>
1231      <i class="fas fa-bullhorn index-notice-icon"></i>公告
1232    </h3>
1233    <div class="index-notice-content">
1234      
1235      <vue-seamless-scroll
1236        :data="listData"
1237        :class-option="classOption"
1238        class="warp"
1239        style="height: 30px"
1240      >
1241        <ul class="index-notice-content__ul">
1242          
1243          
1244            <li>
1245              
1246                <div class="index-notice-content__title">
1247                  
1248                    <a target="_blank" rel="noopener" href="https://blog.aerr.cn" title="目前主要使用wp博客https://blog.aerr.cn" style="color:red">
1249                      目前主要使用wp博客https://blog.aerr.cn
1250                    </a>
1251                  
1252                </div>
1253                
1254              
1255            </li>
1256           
1257        </ul>
1258      </vue-seamless-scroll>
1259    </div>
1260</div>
1261<script src="/js/vue-seamless-scroll/index.js"></script>
1261
1262
1263<!-- 滚动插件采用 vue-seamless-scroll
1264  https://chenxuan0000.github.io/vue-seamless-scroll/zh/guide/06-singleStop.html 
1265-->
1266
1267<script>
1268  var seamless = JSON.parse('false');
1269  seamless = seamless ? 0 : 30;
1270  var listData = '[object Object]' || '';
1271  listData = listData.split(',');
1272  var vm = new Vue({
1273    el: '#appIndexNotice',
1274    data: {
1275      listData: listData,
1276      moveNum: 2,
1277      classOption: {
1278        singleHeight: seamless,
1279        limitMoveNum: listData.length
1280      },
1281    },
1282    computed: {
1283    },
1284    mounted() {
1285    },
1286    methods: {
1287    },
1288    created() {
1289      this.moveNum = parseInt(this.listData.length);
1290    }
1291  })
1292</script>
1292
1293
1294
1295
1296    <!-- 首页文章置顶 -->
1297    
1298
1299
1300<div class="topArticle reveal">
1301	<h3><i class="fas fa-thumbs-o-up" aria-hidden="true"></i>推荐文章</h3>
1302	<div class="articles">
1303		
1304			
1305		
1306			
1307		
1308			
1309		
1310			
1311		
1312			
1313		
1314			
1315		
1316			
1317		
1318			
1319		
1320			
1321		
1322			
1323		
1324			
1325		
1326			
1327		
1328	</div>
1329</div>
1330
1331
1332    <div class="bg-floor" id="home-bg-floor" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -2;"></div>
1333    <!-- 每一篇文章卡片 -->
1334    <!-- hash算法 -->
1335
1336<section class="posts">
1337  
1338    
1339    <article class="post reveal" style="flex-direction: row-reverse;   ">
1340      <div class="post-main">
1341        <div class="post-info">
1342          <div class="post-time">
1343            <i class="fas fa-clock" aria-hidden="true"></i>
1344            <span class="post-time">2025-07-12</span>
1345          </div>
1346          <div class="post-title">
1347            <a class="post-title-link" href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/">如何搭建中转服务器</a>
1348          </div>
1349          <div class="post-meta">
1350            <div class="post-tags">
1351              <!-- 文章详情页的标签 -->
1352
1353            </div>
1354            <div class="post-categories">
1355              <!-- 文章详情页的分类 -->
1356
1357
1358            </div>
1359          </div>
1360          <div class="post-img-mobile">
1361            <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/" style="background-size: cover; 
1362              background-position: center center;">
1363              <img class="lazyload lazyload placeholder" src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1364            </a>
1365          </div>
1366          <div class="post-content">
1367            上中转的意义是什么,最常见的无非就是拉延迟,拉速度。
1368中转前:用户 → 节点服务器中转后:用户 → 中转服务器(中转鸡)→ 节点服务器(落地鸡)
1369可能有人看到这里会觉得多一个服务器会拉低速度,为什么要加,可以举个例子,比如,节点服务器的ip
1370          </div>
1371        </div>
1372        <div class="post-more">
1373          <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/">
1374            <i class="iconfont iconmore" pointer style="float: right;  " title="阅读更多"></i>
1375          </a>
1376        </div>
1377      </div>
1378      <div class="post-img">
1379        <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/" style="background-size: cover; 
1380          background-position: center center;">
1381          <img class="lazyload lazyload placeholder" src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1382        </a>
1383      </div>
1384    </article>
1385  
1386    
1387    <article class="post reveal" style="   ">
1388      <div class="post-main">
1389        <div class="post-info">
1390          <div class="post-time">
1391            <i class="fas fa-clock" aria-hidden="true"></i>
1392            <span class="post-time">2025-07-12</span>
1393          </div>
1394          <div class="post-title">
1395            <a class="post-title-link" href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/">如何在3-ui面板添加住宅IP</a>
1396          </div>
1397          <div class="post-meta">
1398            <div class="post-tags">
1399              <!-- 文章详情页的标签 -->
1400
1401            </div>
1402            <div class="post-categories">
1403              <!-- 文章详情页的分类 -->
1404
1405
1406            </div>
1407          </div>
1408          <div class="post-img-mobile">
1409            <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/" style="background-size: cover; 
1410              background-position: center center;">
1411              <img class="lazyload lazyload placeholder" src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1412            </a>
1413          </div>
1414          <div class="post-content">
1415            有一些国外的东西可能需要比较纯净的环境来注册使用,比如Google Voice、Talkatone、Claude、Tiktok、Azure、海外版PayPal、阿里云国际站、亚马逊运营等等,都是需要比较纯净原生IP或者是住宅IP才能注册,不
1416          </div>
1417        </div>
1418        <div class="post-more">
1419          <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/">
1420            <i class="iconfont iconmore" pointer style="  " title="阅读更多"></i>
1421          </a>
1422        </div>
1423      </div>
1424      <div class="post-img">
1425        <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/" style="background-size: cover; 
1426          background-position: center center;">
1427          <img class="lazyload lazyload placeholder" src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1428        </a>
1429      </div>
1430    </article>
1431  
1432    
1433    <article class="post reveal" style="flex-direction: row-reverse;   ">
1434      <div class="post-main">
1435        <div class="post-info">
1436          <div class="post-time">
1437            <i class="fas fa-clock" aria-hidden="true"></i>
1438            <span class="post-time">2025-07-08</span>
1439          </div>
1440          <div class="post-title">
1441            <a class="post-title-link" href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/">用3x-ui搭建reality</a>
1442          </div>
1443          <div class="post-meta">
1444            <div class="post-tags">
1445              <!-- 文章详情页的标签 -->
1446
1447            </div>
1448            <div class="post-categories">
1449              <!-- 文章详情页的分类 -->
1450
1451
1452            </div>
1453          </div>
1454          <div class="post-img-mobile">
1455            <a href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/" style="background-size: cover; 
1456              background-position: center center;">
1457              <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1458            </a>
1459          </div>
1460          <div class="post-content">
1461            这篇文章很久之前就写了,但一直放在wordpress博客的草稿里不敢发布。原因是去年我wp博客突然被下备案了,什么原因都没有告知,后面打电话问了管局才知道是因为博客存在搭建VPN、翻墙教程,被工信部永久拉入黑名单了(呜呜呜,5年的备案域名,
1462          </div>
1463        </div>
1464        <div class="post-more">
1465          <a href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/">
1466            <i class="iconfont iconmore" pointer style="float: right;  " title="阅读更多"></i>
1467          </a>
1468        </div>
1469      </div>
1470      <div class="post-img">
1471        <a href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/" style="background-size: cover; 
1472          background-position: center center;">
1473          <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1474        </a>
1475      </div>
1476    </article>
1477  
1478    
1479    <article class="post reveal" style="   ">
1480      <div class="post-main">
1481        <div class="post-info">
1482          <div class="post-time">
1483            <i class="fas fa-clock" aria-hidden="true"></i>
1484            <span class="post-time">2023-12-08</span>
1485          </div>
1486          <div class="post-title">
1487            <a class="post-title-link" href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/">Windows搭建v2服务端</a>
1488          </div>
1489          <div class="post-meta">
1490            <div class="post-tags">
1491              <!-- 文章详情页的标签 -->
1492
1493            </div>
1494            <div class="post-categories">
1495              <!-- 文章详情页的分类 -->
1496
1497
1498            </div>
1499          </div>
1500          <div class="post-img-mobile">
1501            <a href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/" style="background-size: cover; 
1502              background-position: center center;">
1503              <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1504            </a>
1505          </div>
1506          <div class="post-content">
1507            网上搭建代理的教程大部分都是在Linux环境下搭建的,在Windows下搭建教程就比较少,因为这种行为纯粹就是脱裤子放屁,既然是Windows,为什么不直接用?
1508所以此教程针对Azure学生订阅的Windows。玩过Azure学生订阅的知道
1509          </div>
1510        </div>
1511        <div class="post-more">
1512          <a href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/">
1513            <i class="iconfont iconmore" pointer style="  " title="阅读更多"></i>
1514          </a>
1515        </div>
1516      </div>
1517      <div class="post-img">
1518        <a href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/" style="background-size: cover; 
1519          background-position: center center;">
1520          <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1521        </a>
1522      </div>
1523    </article>
1524  
1525    
1526    <article class="post reveal" style="flex-direction: row-reverse;   ">
1527      <div class="post-main">
1528        <div class="post-info">
1529          <div class="post-time">
1530            <i class="fas fa-clock" aria-hidden="true"></i>
1531            <span class="post-time">2023-07-13</span>
1532          </div>
1533          <div class="post-title">
1534            <a class="post-title-link" href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/">推荐几个免费图床</a>
1535          </div>
1536          <div class="post-meta">
1537            <div class="post-tags">
1538              <!-- 文章详情页的标签 -->
1539
1540            </div>
1541            <div class="post-categories">
1542              <!-- 文章详情页的分类 -->
1543
1544
1545            </div>
1546          </div>
1547          <div class="post-img-mobile">
1548            <a href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/" style="background-size: cover; 
1549              background-position: center center;">
1550              <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1551            </a>
1552          </div>
1553          <div class="post-content">
1554            最近频繁使用到图床,搜集了自己使用过的比较好用的图床网站,有知名大站也有小众网站,使用体验都不错
1555排名不分先后
1556有备案域名有备案域名的先看这里,没有的往下拉
1557七牛地址:https://www.qiniu.com/prices/kodo
1558开通
1559          </div>
1560        </div>
1561        <div class="post-more">
1562          <a href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/">
1563            <i class="iconfont iconmore" pointer style="float: right;  " title="阅读更多"></i>
1564          </a>
1565        </div>
1566      </div>
1567      <div class="post-img">
1568        <a href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/" style="background-size: cover; 
1569          background-position: center center;">
1570          <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1571        </a>
1572      </div>
1573    </article>
1574  
1575    
1576    <article class="post reveal" style="   ">
1577      <div class="post-main">
1578        <div class="post-info">
1579          <div class="post-time">
1580            <i class="fas fa-clock" aria-hidden="true"></i>
1581            <span class="post-time">2023-07-11</span>
1582          </div>
1583          <div class="post-title">
1584            <a class="post-title-link" href="/2023/07/11/%E4%B8%80%E4%B8%AAhexo%E5%8D%9A%E5%AE%A2%E5%90%8E%E5%8F%B0%E2%80%93Qexo/">一个hexo博客后台–Qexo</a>
1585          </div>
1586          <div class="post-meta">
1587            <div class="post-tags">
1588              <!-- 文章详情页的标签 -->
1589
1590            </div>
1591            <div class="post-categories">
1592              <!-- 文章详情页的分类 -->
1593
1594
1595            </div>
1596          </div>
1597          <div class="post-img-mobile">
1598            <a href="/2023/07/11/%E4%B8%80%E4%B8%AAhexo%E5%8D%9A%E5%AE%A2%E5%90%8E%E5%8F%B0%E2%80%93Qexo/" style="background-size: cover; 
1599              background-position: center center;">
1600              <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/80/v2-5f7cb7e900b9dcf5354c3d4d2c5cc3c2_1440w.webp" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/80/v2-5f7cb7e900b9dcf5354c3d4d2c5cc3c2_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1601            </a>
1602          </div>
1603          <div class="post-content">
1604            Qexo,一个快速、美观、强大的在线hexo管理器,支持使用 Vercel 零成本一键部署,,您只需要配置一个免费数据库。特色功能:自定义图床上传图片,在线配置编辑,在线页面管理,开放 API,自动检查更新,在线一键更新,快速接入友情链接,
1605          </div>
1606        </div>
1607        <div class="post-more">
1608          <a href="/2023/07/11/%E4%B8%80%E4%B8%AAhexo%E5%8D%9A%E5%AE%A2%E5%90%8E%E5%8F%B0%E2%80%93Qexo/">
1609            <i class="iconfont iconmore" pointer style="  " title="阅读更多"></i>
1610          </a>
1611        </div>
1612      </div>
1613      <div class="post-img">
1614        <a href="/2023/07/11/%E4%B8%80%E4%B8%AAhexo%E5%8D%9A%E5%AE%A2%E5%90%8E%E5%8F%B0%E2%80%93Qexo/" style="background-size: cover; 
1615          background-position: center center;">
1616          <img class="lazyload lazyload placeholder" src="https://pic3.zhimg.com/80/v2-5f7cb7e900b9dcf5354c3d4d2c5cc3c2_1440w.webp" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/80/v2-5f7cb7e900b9dcf5354c3d4d2c5cc3c2_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1617        </a>
1618      </div>
1619    </article>
1620  
1621    
1622    <article class="post reveal" style="flex-direction: row-reverse;   ">
1623      <div class="post-main">
1624        <div class="post-info">
1625          <div class="post-time">
1626            <i class="fas fa-clock" aria-hidden="true"></i>
1627            <span class="post-time">2023-07-11</span>
1628          </div>
1629          <div class="post-title">
1630            <a class="post-title-link" href="/2023/07/11/%E5%88%A9%E7%94%A8Github%20Actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%20Hexo%E5%8D%9A%E5%AE%A2/">利用Github Actions自动化部署 Hexo博客</a>
1631          </div>
1632          <div class="post-meta">
1633            <div class="post-tags">
1634              <!-- 文章详情页的标签 -->
1635
1636            </div>
1637            <div class="post-categories">
1638              <!-- 文章详情页的分类 -->
1639
1640
1641            </div>
1642          </div>
1643          <div class="post-img-mobile">
1644            <a href="/2023/07/11/%E5%88%A9%E7%94%A8Github%20Actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%20Hexo%E5%8D%9A%E5%AE%A2/" style="background-size: cover; 
1645              background-position: center center;">
1646              <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1647            </a>
1648          </div>
1649          <div class="post-content">
1650            Github Action自动化部署是什么简单说,就是把hexo博客编译前的源代码上传到github代码仓库,Action在代码发生变动的时候,自动通过安装一系列nodejs环境和相关依赖,编译生成html页面到github pages仓库
1651          </div>
1652        </div>
1653        <div class="post-more">
1654          <a href="/2023/07/11/%E5%88%A9%E7%94%A8Github%20Actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%20Hexo%E5%8D%9A%E5%AE%A2/">
1655            <i class="iconfont iconmore" pointer style="float: right;  " title="阅读更多"></i>
1656          </a>
1657        </div>
1658      </div>
1659      <div class="post-img">
1660        <a href="/2023/07/11/%E5%88%A9%E7%94%A8Github%20Actions%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2%20Hexo%E5%8D%9A%E5%AE%A2/" style="background-size: cover; 
1661          background-position: center center;">
1662          <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1663        </a>
1664      </div>
1665    </article>
1666  
1667    
1668    <article class="post reveal" style="   ">
1669      <div class="post-main">
1670        <div class="post-info">
1671          <div class="post-time">
1672            <i class="fas fa-clock" aria-hidden="true"></i>
1673            <span class="post-time">2021-11-24</span>
1674          </div>
1675          <div class="post-title">
1676            <a class="post-title-link" href="/2021/11/24/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/">Hexo博客搭建</a>
1677          </div>
1678          <div class="post-meta">
1679            <div class="post-tags">
1680              <!-- 文章详情页的标签 -->
1681
1682            </div>
1683            <div class="post-categories">
1684              <!-- 文章详情页的分类 -->
1685
1686
1687            </div>
1688          </div>
1689          <div class="post-img-mobile">
1690            <a href="/2021/11/24/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/" style="background-size: cover; 
1691              background-position: center center;">
1692              <img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1693            </a>
1694          </div>
1695          <div class="post-content">
1696            Hexo是个快速、简洁且高效的博客框架,它是一款基于Node.js的静态博客生成程序,作者是中国台湾tommy351。它的安装运行等甚至生成文章页面 生成目录,网站配置都是在爱代码模式下进行的。还有就是要学会使用Hexo,就得学会使用Git
1697          </div>
1698        </div>
1699        <div class="post-more">
1700          <a href="/2021/11/24/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/">
1701            <i class="iconfont iconmore" pointer style="  " title="阅读更多"></i>
1702          </a>
1703        </div>
1704      </div>
1705      <div class="post-img">
1706        <a href="/2021/11/24/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/" style="background-size: cover; 
1707          background-position: center center;">
1708          <img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1709        </a>
1710      </div>
1711    </article>
1712  
1713    
1714    <article class="post reveal" style="flex-direction: row-reverse;   ">
1715      <div class="post-main">
1716        <div class="post-info">
1717          <div class="post-time">
1718            <i class="fas fa-clock" aria-hidden="true"></i>
1719            <span class="post-time">2021-11-22</span>
1720          </div>
1721          <div class="post-title">
1722            <a class="post-title-link" href="/2021/11/22/%E6%8A%8A%E5%8D%9A%E5%AE%A2%E4%BB%8EGitHub%E8%BF%81%E7%A7%BB%E5%88%B0Gitee/">把博客从GitHub迁移到Gitee</a>
1723          </div>
1724          <div class="post-meta">
1725            <div class="post-tags">
1726              <!-- 文章详情页的标签 -->
1727
1728            </div>
1729            <div class="post-categories">
1730              <!-- 文章详情页的分类 -->
1731
1732
1733            </div>
1734          </div>
1735          <div class="post-img-mobile">
1736            <a href="/2021/11/22/%E6%8A%8A%E5%8D%9A%E5%AE%A2%E4%BB%8EGitHub%E8%BF%81%E7%A7%BB%E5%88%B0Gitee/" style="background-size: cover; 
1737              background-position: center center;">
1738              <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1739            </a>
1740          </div>
1741          <div class="post-content">
1742            原因:Github是基于 Git 做版本控制的代码托管平台,同时也是全球最大的代(同)码(性)托(交)管(友)网站。喜欢用GitHub的都知道,时常出现抽风现象,包括Pages功能也是如果你把网站托管到GitHub上,某天你想让用户浏览,用
1743          </div>
1744        </div>
1745        <div class="post-more">
1746          <a href="/2021/11/22/%E6%8A%8A%E5%8D%9A%E5%AE%A2%E4%BB%8EGitHub%E8%BF%81%E7%A7%BB%E5%88%B0Gitee/">
1747            <i class="iconfont iconmore" pointer style="float: right;  " title="阅读更多"></i>
1748          </a>
1749        </div>
1750      </div>
1751      <div class="post-img">
1752        <a href="/2021/11/22/%E6%8A%8A%E5%8D%9A%E5%AE%A2%E4%BB%8EGitHub%E8%BF%81%E7%A7%BB%E5%88%B0Gitee/" style="background-size: cover; 
1753          background-position: center center;">
1754          <img class="lazyload lazyload placeholder" src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1755        </a>
1756      </div>
1757    </article>
1758  
1759    
1760    <article class="post reveal" style="   ">
1761      <div class="post-main">
1762        <div class="post-info">
1763          <div class="post-time">
1764            <i class="fas fa-clock" aria-hidden="true"></i>
1765            <span class="post-time">2021-11-20</span>
1766          </div>
1767          <div class="post-title">
1768            <a class="post-title-link" href="/2021/11/20/%E5%85%B3%E4%BA%8E%E5%8D%9A%E5%AE%A2%E7%9A%84%E4%BA%8B/">关于博客的事</a>
1769          </div>
1770          <div class="post-meta">
1771            <div class="post-tags">
1772              <!-- 文章详情页的标签 -->
1773
1774            </div>
1775            <div class="post-categories">
1776              <!-- 文章详情页的分类 -->
1777
1778
1779            </div>
1780          </div>
1781          <div class="post-img-mobile">
1782            <a href="/2021/11/20/%E5%85%B3%E4%BA%8E%E5%8D%9A%E5%AE%A2%E7%9A%84%E4%BA%8B/" style="background-size: cover; 
1783              background-position: center center;">
1784              <img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1785            </a>
1786          </div>
1787          <div class="post-content">
1788            Hexo博客Hello,这里是青云依兮的Hexo博客,是我所有站点中唯一一个不怕被攻击的
1789Hexo是个快速、简洁且高效的博客框架,它是一款基于Node.js的静态博客生成程序,作者是中国台湾tommy351。
1790它的安装运行等甚至生成文章页面
1791          </div>
1792        </div>
1793        <div class="post-more">
1794          <a href="/2021/11/20/%E5%85%B3%E4%BA%8E%E5%8D%9A%E5%AE%A2%E7%9A%84%E4%BA%8B/">
1795            <i class="iconfont iconmore" pointer style="  " title="阅读更多"></i>
1796          </a>
1797        </div>
1798      </div>
1799      <div class="post-img">
1800        <a href="/2021/11/20/%E5%85%B3%E4%BA%8E%E5%8D%9A%E5%AE%A2%E7%9A%84%E4%BA%8B/" style="background-size: cover; 
1801          background-position: center center;">
1802          <img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-e434e3a2888fb4efb1844845b8791d1f_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1803        </a>
1804      </div>
1805    </article>
1806  
1807</section>
1808    <!-- 翻页 -->
1809    
1810  <!-- <nav class="page-nav">
1811    <span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/">下一页</a>
1812  </nav> -->
1813  <div class="page-nav">
1814    
1815    <div class="page-info">
1816        <div class="page-info-text">1 / 2</div>
1817    </div>
1818    
1819      <a href="/page/2/"
1820         class="page-nav-next">
1821          <span class="mr-5">下一页</span><i class="fas fa-angle-right"></i>
1822      </a>
1823      
1824  </div>
1825
1826  </div>
1827
1828  <aside id='l_side'>
1829  
1830    
1831      <section class="widget side_blogger">
1832  <div class='content'>
1833    
1834      
1835        <a class='avatar flat-box rectangle' href='/about/'>
1836          <img src='http://q1.qlogo.cn/g?b=qq&nk=1422756921&s=160'/>
1837        </a>
1838      
1839    
1840    
1841      <div class='text'>
1842        
1843          <h2>青云依兮</h2>
1844        
1845        
1846          <p>Hexo</p>
1847
1848        
1849        
1850          <p><span id="jinrishici-sentence">青云博客-Hexo</span></p>
1851          
1851<script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
1851
1852        
1853      </div>
1854    
1855    
1856      <div class="social-wrapper">
1857        
1858          
1859        
1860          
1861            <a href="mailto:[email protected]"
1862              class="social fas fa-envelope flat-btn"
1863              target="_blank"
1864              rel="external nofollow noopener noreferrer">
1865              
1866            </a>
1867          
1868        
1869          
1870            <a href="https://github.com/1422756921"
1871              class="social fab fa-github flat-btn"
1872              target="_blank"
1873              rel="external nofollow noopener noreferrer">
1874              
1875            </a>
1876          
1877        
1878          
1879            <a href="http://wpa.qq.com/msgrd?v=3&amp;uin=1422756921&amp;site=qq&amp;menu=yes"
1880              class="social fab fa-qq flat-btn"
1881              target="_blank"
1882              rel="external nofollow noopener noreferrer">
1883              
1884            </a>
1885          
1886        
1887      </div>
1888    
1889  </div>
1890</section>
1891
1892    
1893  
1894  
1895  
1896    
1897  
1898
1899  <div class="layout_sticky">    
1900    
1901      
1902        
1903  
1904      
1905      
1906        
1907  
1908      
1909      
1910  <section class="widget side_recent_post">
1911    
1912  <header>
1913    
1914      <a style="color: " href='/tags/'><i class="fas fa-book fa-fw" aria-hidden="true"></i><span class='name'>最新文章</span></a>
1915    
1916  </header>
1917
1918
1919    <div class='content'>
1920      
1921      <!-- hash算法 -->
1922      
1923      <div class="aside-list">
1924        
1925          <div class="aside-list-item">
1926            
1927            
1928            
1929
1930            <div class="post-img-box">
1931              <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/" class="post-img " style="background-size: cover; 
1932                background-position: center center;">
1933                <img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1934              </a>
1935            </div>
1936            <div class="post-date-title">
1937              <div>
1938                
1939                  <span class="post-date">07-12</span>
1940                
1941              </div>
1942              <a class="post-title" href="/2025/07/12/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%AD%E8%BD%AC%E6%9C%8D%E5%8A%A1%E5%99%A8/">如何搭建中转服务器</a>
1943            </div>
1944          </div>
1945        
1946          <div class="aside-list-item">
1947            
1948            
1949            
1950
1951            <div class="post-img-box">
1952              <a href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/" class="post-img " style="background-size: cover; 
1953                background-position: center center;">
1954                <img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" class="lazyload placeholder" data-srcset="https://pica.zhimg.com/80/v2-573ac3e25de03fad9c32add5a05e5cfc_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1955              </a>
1956            </div>
1957            <div class="post-date-title">
1958              <div>
1959                
1960                  <span class="post-date">07-12</span>
1961                
1962              </div>
1963              <a class="post-title" href="/2025/07/12/%E5%A6%82%E4%BD%95%E5%9C%A83-ui%E9%9D%A2%E6%9D%BF%E6%B7%BB%E5%8A%A0%E4%BD%8F%E5%AE%85IP/">如何在3-ui面板添加住宅IP</a>
1964            </div>
1965          </div>
1966        
1967          <div class="aside-list-item">
1968            
1969            
1970            
1971
1972            <div class="post-img-box">
1973              <a href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/" class="post-img " style="background-size: cover; 
1974                background-position: center center;">
1975                <img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1976              </a>
1977            </div>
1978            <div class="post-date-title">
1979              <div>
1980                
1981                  <span class="post-date">07-08</span>
1982                
1983              </div>
1984              <a class="post-title" href="/2025/07/08/%E7%94%A83x-ui%E6%90%AD%E5%BB%BAreality/">用3x-ui搭建reality</a>
1985            </div>
1986          </div>
1987        
1988          <div class="aside-list-item">
1989            
1990            
1991            
1992
1993            <div class="post-img-box">
1994              <a href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/" class="post-img " style="background-size: cover; 
1995                background-position: center center;">
1996                <img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" class="lazyload placeholder" data-srcset="https://pic3.zhimg.com/v2-a5267dfbf175991d4b3a69b41f3f678a_b.jpg" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
1997              </a>
1998            </div>
1999            <div class="post-date-title">
2000              <div>
2001                
2002                  <span class="post-date">12-08</span>
2003                
2004              </div>
2005              <a class="post-title" href="/2023/12/08/Windows%E6%90%AD%E5%BB%BAv2%E6%9C%8D%E5%8A%A1%E7%AB%AF/">Windows搭建v2服务端</a>
2006            </div>
2007          </div>
2008        
2009          <div class="aside-list-item">
2010            
2011            
2012            
2013
2014            <div class="post-img-box">
2015              <a href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/" class="post-img " style="background-size: cover; 
2016                background-position: center center;">
2017                <img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" class="lazyload placeholder" data-srcset="https://pic2.zhimg.com/80/v2-e22aaad20d20634f506f57fff0fcbc17_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
2018              </a>
2019            </div>
2020            <div class="post-date-title">
2021              <div>
2022                
2023                  <span class="post-date">07-13</span>
2024                
2025              </div>
2026              <a class="post-title" href="/2023/07/13/%E6%8E%A8%E8%8D%90%E5%87%A0%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A/">推荐几个免费图床</a>
2027            </div>
2028          </div>
2029        
2030      </div>
2031    </div>
2032  </section>
2033
2034      
2035  <section class="widget side_archives">
2036    
2037    <header><a style="color: red" href='/archives/'><i class="fas fa-archive fa-fw" aria-hidden="true"></i><span class='name'>归档</span></a></header><div class="content"><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/07/"><span class="card-archive-list-date">七月 2025</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/12/"><span class="card-archive-list-date">十二月 2023</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/07/"><span class="card-archive-list-date">七月 2023</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/11/"><span class="card-archive-list-date">十一月 2021</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/09/"><span class="card-archive-list-date">九月 2021</span><span class="card-archive-list-count">1</span></a></li></ul></div>
2038  </section>
2039
2040      <section class="widget side_webinfo">
2041  
2042  <header>
2043    
2044      <i style="color: " class="fas fa-chart-line fa-fw" aria-hidden="true"></i><span class='name' style="color: ">站点信息</span>
2045    
2046  </header>
2047
2048
2049  <div class='content'>
2050    <div class="webinfo">
2051      
2052        <div class="webinfo-item">
2053          <div>文章数目:</div>
2054          <div>12 篇</div>
2055        </div>
2056      
2057
2058      
2059        <div class="webinfo-item">
2060          <div>已运行时间:</div>
2061          <div id="webinfo-runtime-count" publish_date="03/24/2020 21:34:09"></div>
2062        </div>
2063        
2063<script>
2064          var BirthDay = new Date(new Date('2021/11/18'));
2065          var today = new Date();
2066          var timeold = (today.getTime() - BirthDay.getTime());
2067          var daysold = Math.floor(timeold / (24 * 60 * 60 * 1000));
2068          document.getElementById('webinfo-runtime-count').innerHTML = daysold + ' 天';
2069        </script>
2069
2070      
2071
2072
2073      
2074
2075      
2076        <div class="webinfo-item">
2077          <div>本站访客数:</div>
2078          
2079          <div><span id="busuanzi_value_site_uv"><i class="fas fa-fan fa-spin fa-fw" aria-hidden="true"></i></span> 人</div>
2080          
2081        </div>
2082      
2083
2084      
2085        <div class="webinfo-item">
2086          <div>本站总访问量:</div>
2087          
2088          <div><span id="busuanzi_value_site_pv"><i class="fas fa-fan fa-spin fa-fw" aria-hidden="true"></i></span> 次</div>
2089          
2090        </div>
2091      
2092
2093      
2094        <div class="webinfo-item">
2095          <div>最后活动时间:</div>
2096          
2097            <div id="last-update" style="display: none;">Sat Jan 31 2026 05:51:00 GMT+0000 (Coordinated Universal Time)</div>
2098            <div id="last-update-show">2026-01-31 日</div>
2099          
2100        </div>
2101        
2102        
2102<script>
2103          function timeago(dateTimeStamp) {
2104              var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
2105              var hour = minute * 60;
2106              var day = hour * 24;
2107              var week = day * 7;
2108              var month = day * 30;
2109              var now = new Date().getTime(); //获取当前时间毫秒
2110              var diffValue = now - dateTimeStamp; //时间差
2111              if (diffValue < 0) {
2112                  return;
2113              }
2114              var minC = diffValue / minute; //计算时间差的分,时,天,周,月
2115              var hourC = diffValue / hour;
2116              var dayC = diffValue / day;
2117              var weekC = diffValue / week;
2118              var monthC = diffValue / month;
2119              if (monthC >= 1 && monthC <= 3) {
2120                  result = " " + parseInt(monthC) + " 月前"
2121              } else if (weekC >= 1 && weekC <= 3) {
2122                  result = " " + parseInt(weekC) + " 周前"
2123              } else if (dayC >= 1 && dayC <= 6) {
2124                  result = " " + parseInt(dayC) + " 天前"
2125              } else if (hourC >= 1 && hourC <= 23) {
2126                  result = " " + parseInt(hourC) + " 小时前"
2127              } else if (minC >= 1 && minC <= 59) {
2128                  result = " " + parseInt(minC) + " 分钟前"
2129              } else if (diffValue >= 0 && diffValue <= minute) {
2130                  result = "刚刚"
2131              } else {
2132                  var datetime = new Date();
2133                  datetime.setTime(dateTimeStamp);
2134                  var Nyear = datetime.getFullYear();
2135                  var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
2136                  var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
2137                  var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
2138                  var Nminute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
2139                  var Nsecond = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
2140                  result = Nyear + "-" + Nmonth + "-" + Ndate
2141              }
2142              return result;
2143          }
2144          var lastUpDate = document.getElementById('last-update').innerHTML;
2145          try {
2146            document.getElementById('last-update-show').innerHTML = timeago(new Date(lastUpDate));
2147          } catch (error) {
2148            document.getElementById('last-update-show').innerHTML = '2026-01-31 日';
2149          }
2150        </script>
2150
2151        
2152      
2153    </div>
2154  </div>
2155</section>
2156      
2157  
2158
2159    
2160  </div>
2161</aside>
2162</div>
2163<!-- 花瓣和雪花飘落 -->
2164<!-- 雪花和花瓣特效 -->
2165
2166
2167
2168<!-- 灯笼 -->
2169
2170
2171      </main>
2172    </div>
2173
2174    <!-- 页脚 -->
2175    
2176  
2177  
2178    <!-- 底部鱼儿跳动效果,依赖于jquery-->
2179<div id="j-fish-skip" style=" position: relative;height: 153px;width: auto;"></div>
2180<script>
2181  var RENDERER = {
2182    POINT_INTERVAL: 5,
2183    FISH_COUNT: 3,
2184    MAX_INTERVAL_COUNT: 50,
2185    INIT_HEIGHT_RATE: .5,
2186    THRESHOLD: 50,
2187    FISH_COLOR: '',
2188    init: function () {
2189      this.setFishColor(); this.setParameters(), this.reconstructMethods(), this.setup(), this.bindEvent(), this.render()
2190    },
2191    setFishColor: function () {
2192      let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
2193      if (isDark) {
2194        this.FISH_COLOR = '#222'; // 暗黑色,有时间把这整成一个变量
2195      } else {
2196        this.FISH_COLOR = '' || 'rgba(66, 185, 133, 0.8)';
2197      }
2198    },
2199    setParameters: function () {
2200      this.$window = $(window), this.$container = $("#j-fish-skip"), this.$canvas = $("<canvas />"), this.context = this.$canvas.appendTo(this.$container).get(0).getContext("2d"), this.points = [], this.fishes = [], this.watchIds = []
2201    },
2202    createSurfacePoints: function () {
2203      var t = Math.round(this.width / this.POINT_INTERVAL);
2204      this.pointInterval = this.width / (t - 1), this.points.push(new SURFACE_POINT(this, 0));
2205      for (var i = 1; i < t; i++) {
2206        var e = new SURFACE_POINT(this, i * this.pointInterval),
2207          h = this.points[i - 1];
2208        e.setPreviousPoint(h), h.setNextPoint(e), this.points.push(e)
2209      }
2210    },
2211    reconstructMethods: function () {
2212      this.watchWindowSize = this.watchWindowSize.bind(this), this.jdugeToStopResize = this.jdugeToStopResize.bind(this), this.startEpicenter = this.startEpicenter.bind(this), this.moveEpicenter = this.moveEpicenter.bind(this), this.reverseVertical = this.reverseVertical.bind(this), this.render = this.render.bind(this)
2213    },
2214    setup: function () {
2215      this.points.length = 0, this.fishes.length = 0, this.watchIds.length = 0, this.intervalCount = this.MAX_INTERVAL_COUNT, this.width = this.$container.width(), this.height = this.$container.height(), this.fishCount = this.FISH_COUNT * this.width / 500 * this.height / 500, this.$canvas.attr({
2216        width: this.width,
2217        height: this.height
2218      }), this.reverse = !1, this.fishes.push(new FISH(this)), this.createSurfacePoints()
2219    },
2220    watchWindowSize: function () {
2221      this.clearTimer(), this.tmpWidth = this.$window.width(), this.tmpHeight = this.$window.height(), this.watchIds.push(setTimeout(this.jdugeToStopResize, this.WATCH_INTERVAL))
2222    },
2223    clearTimer: function () {
2224      for (; this.watchIds.length > 0;) clearTimeout(this.watchIds.pop())
2225    },
2226    jdugeToStopResize: function () {
2227      var t = this.$window.width(),
2228        i = this.$window.height(),
2229        e = t == this.tmpWidth && i == this.tmpHeight;
2230      this.tmpWidth = t, this.tmpHeight = i, e && this.setup()
2231    },
2232    bindEvent: function () {
2233      this.$window.on("resize", this.watchWindowSize), this.$container.on("mouseenter", this.startEpicenter), this.$container.on("mousemove", this.moveEpicenter)
2234    },
2235    getAxis: function (t) {
2236      var i = this.$container.offset();
2237      return {
2238        x: t.clientX - i.left + this.$window.scrollLeft(),
2239        y: t.clientY - i.top + this.$window.scrollTop()
2240      }
2241    },
2242    startEpicenter: function (t) {
2243      this.axis = this.getAxis(t)
2244    },
2245    moveEpicenter: function (t) {
2246      var i = this.getAxis(t);
2247      this.axis || (this.axis = i), this.generateEpicenter(i.x, i.y, i.y - this.axis.y), this.axis = i
2248    },
2249    generateEpicenter: function (t, i, e) {
2250      if (!(i < this.height / 2 - this.THRESHOLD || i > this.height / 2 + this.THRESHOLD)) {
2251        var h = Math.round(t / this.pointInterval);
2252        h < 0 || h >= this.points.length || this.points[h].interfere(i, e)
2253      }
2254    },
2255    reverseVertical: function () {
2256      this.reverse = !this.reverse;
2257      for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].reverseVertical()
2258    },
2259    controlStatus: function () {
2260      for (var t = 0, i = this.points.length; t < i; t++) this.points[t].updateSelf();
2261      for (t = 0, i = this.points.length; t < i; t++) this.points[t].updateNeighbors();
2262      this.fishes.length < this.fishCount && 0 == --this.intervalCount && (this.intervalCount = this.MAX_INTERVAL_COUNT, this.fishes.push(new FISH(this)))
2263    },
2264    render: function () {
2265      requestAnimationFrame(this.render), this.controlStatus(), this.context.clearRect(0, 0, this.width, this.height), this.context.fillStyle = this.FISH_COLOR;
2266      for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].render(this.context);
2267      this.context.save(), this.context.globalCompositeOperation = "xor", this.context.beginPath(), this.context.moveTo(0, this.reverse ? 0 : this.height);
2268      for (t = 0, i = this.points.length; t < i; t++) this.points[t].render(this.context);
2269      this.context.lineTo(this.width, this.reverse ? 0 : this.height), this.context.closePath(), this.context.fill(), this.context.restore(
vendor: 4,264 bytes, lines 2269-2323
2269)
2270    }
2271  },
2272  SURFACE_POINT = function (t, i) {
2273    this.renderer = t, this.x = i, this.init()
2274  };
2275  SURFACE_POINT.prototype = {
2276    SPRING_CONSTANT: .03,
2277    SPRING_FRICTION: .9,
2278    WAVE_SPREAD: .3,
2279    ACCELARATION_RATE: .01,
2280    init: function () {
2281      this.initHeight = this.renderer.height * this.renderer.INIT_HEIGHT_RATE, this.height = this.initHeight, this.fy = 0, this.force = {
2282        previous: 0,
2283        next: 0
2284      }
2285    },
2286    setPreviousPoint: function (t) {
2287      this.previous = t
2288    },
2289    setNextPoint: function (t) {
2290      this.next = t
2291    },
2292    interfere: function (t, i) {
2293      this.fy = this.renderer.height * this.ACCELARATION_RATE * (this.renderer.height - this.height - t >= 0 ? -1 : 1) * Math.abs(i)
2294    },
2295    updateSelf: function () {
2296      this.fy += this.SPRING_CONSTANT * (this.initHeight - this.height), this.fy *= this.SPRING_FRICTION, this.height += this.fy
2297    },
2298    updateNeighbors: function () {
2299      this.previous && (this.force.previous = this.WAVE_SPREAD * (this.height - this.previous.height)), this.next && (this.force.next = this.WAVE_SPREAD * (this.height - this.next.height))
2300    },
2301    render: function (t) {
2302      this.previous && (this.previous.height += this.force.previous, this.previous.fy += this.force.previous), this.next && (this.next.height += this.force.next, this.next.fy += this.force.next), t.lineTo(this.x, this.renderer.height - this.height)
2303    }
2304  };
2305  var FISH = function (t) {
2306    this.renderer = t, this.init()
2307  };
2308  FISH.prototype = {
2309    GRAVITY: .4,
2310    init: function () {
2311      this.direction = Math.random() < .5, this.x = this.direction ? this.renderer.width + this.renderer.THRESHOLD : -this.renderer.THRESHOLD, this.previousY = this.y, this.vx = this.getRandomValue(4, 10) * (this.direction ? -1 : 1), this.renderer.reverse ? (this.y = this.getRandomValue(1 * this.renderer.height / 10, 4 * this.renderer.height / 10), this.vy = this.getRandomValue(2, 5), this.ay = this.getRandomValue(.05, .2)) : (this.y = this.getRandomValue(6 * this.renderer.height / 10, 9 * this.renderer.height / 10), this.vy = this.getRandomValue(-5, -2), this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1, this.theta = 0, this.phi = 0
2312    },
2313    getRandomValue: function (t, i) {
2314      return t + (i - t) * Math.random()
2315    },
2316    reverseVertical: function () {
2317      this.isOut = !this.isOut, this.ay *= -1
2318    },
2319    controlStatus: function (t) {
2320      this.previousY = this.y, this.x += this.vx, this.y += this.vy, this.vy += this.ay, this.renderer.reverse ? this.y > this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy -= this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(.05, .2)), this.isOut = !1) : this.y < this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy += this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1), this.isOut || (this.theta += Math.PI / 20, this.theta %= 2 * Math.PI, this.phi += Math.PI / 30, this.phi %= 2 * Math.PI), this.renderer.generateEpicenter(this.x + (this.direction ? -1 : 1) * this.renderer.THRESHOLD, this.y, this.y - this.previousY), (this.vx > 0 && this.x > this.renderer.width + this.renderer.THRESHOLD || this.vx < 0 && this.x < -this.renderer.THRESHOLD) && this.init()
2321    },
2322    render: function (t) {
2323      t.save(), t.translate(this.x, this.y), t.rotate(Math.PI + Math.atan2(this.vy, this.vx)), t.scale(1, this.direction ? 1 : -1), t.beginPath(), t.moveTo(-30, 0), t.bezierCurveTo(-20, 15, 15, 10, 40, 0), t.bezierCurveTo(15, -10, -20, -15, -30, 0), t.fill(), t.save(), t.translate(40, 0), t.scale(.9 + .2 * Math.sin(this.theta), 1), t.beginPath(), t.moveTo(0, 0), t.quadraticCurveTo(5, 10, 20, 8), t.quadraticCurveTo(12, 5, 10, 0), t.quadraticCurveTo(12, -5, 20, -8), t.quadraticCurveTo(5, -10, 0, 0), t.fill(), t.restore(), t.save(), t.translate(-3, 0), t.rotate((Math.PI / 3 + Math.PI / 10 * Math.sin(this.phi)) * (this.renderer.reverse ? -1 : 1)), t.beginPath(), this.renderer.reverse ? (t.moveTo(5, 0), t.bezierCurveTo(10, 10, 10, 30, 0, 40), t.bezierCurveTo(-12, 25, -8, 10, 0, 0)) : (t.moveTo(-5, 0), t.bezierCurveTo(-10, -10, -10, -30, 0, -40), t.bezierCurveTo(12, -25, 8, -10, 0, 0)), t.closePath(), t.fill(), t.restore(
2323), t.restore(), this.controlStatus(t)
2324    }
2325  }, $(function () {
2326    RENDERER.init()
2327    $('.dark').click(function () {
2328      setTimeout(() => {
2329        RENDERER.setFishColor();
2330        RENDERER.context.fill();
2331      });
2332    })
2333  });
2334</script>
2334
2335  
2336  <div class="footer bg-color">
2337    <div class="footer-main">
2338      
2339        
2340          <div class="link">
2341            
2342          </div>
2343        
2344      
2345        
2346          <div class="footer-copyright">
2347            <p>Copyright © 2021 - 2023 <a target="_blank" rel="noopener" href="https://blog.aerr.cn">青云依兮</a> |  Theme <a target="_blank" rel="noopener" href="https://github.com/yuang01/theme">Bamboo</a> </p>
2348
2349          </div>
2350        
2351      
2352        
2353          
2354            <!-- 不蒜子统计 -->
2355            <!-- 不蒜子统计 -->
2356<span id="busuanzi_container_site_pv">
2357      <i class="fas fa-eye" aria-hidden="true"></i>本站总访问量:<span id="busuanzi_value_site_pv"></span> 次
2358</span>
2359<span class="post-meta-divider">|</span>
2360<span id="busuanzi_container_site_uv" style='display:none'>
2361      <i class="fas fa-users" aria-hidden="true"></i>本站访客数:<span id="busuanzi_value_site_uv"></span> 人
2362</span>
2363
2364          
2365        
2366      
2367        
2368          <div class="footer-custom">
2369            
2370          </div>
2371        
2372      
2373    </div>
2374  </div>
2375
2376
2377
2378    <!-- 渲染暗黑按钮 -->
2379    
2380      <div class="dark">
2381  <div class="dark-content">
2382    <i class="fas fa-moon" aria-hidden="true"></i>
2383    <!-- <span>关灯</span> -->
2384  </div>
2385  
2386</div>
2387
2388<script>
2389  $(function() {
2390    let isDark = JSON.parse(localStorage.getItem('dark'))  || JSON.parse('false');
2391    if (isDark) {
2392      $(".dark-content").replaceWith(
2393          `
2394          <div class='dark-content'>
2395            <i class="fas fa-lightbulb" aria-hidden="true"></i>
2396          </div>
2397          `
2398        );
2399    }
2400    $('.dark').click(function() {
2401      if ($(document.body).is('.darkModel')) {
2402        $(document.body).removeClass('darkModel');
2403        localStorage.setItem('dark', false);
2404        $(".dark-content").replaceWith(
2405          `
2406          <div class='dark-content'>
2407            <i class="fas fa-moon" aria-hidden="true"></i>
2408          </div>
2409          `
2410        );
2411      } else {
2412        $(document.body).addClass('darkModel');
2413        localStorage.setItem('dark', true);
2414        $(".dark-content").replaceWith(
2415          `
2416          <div class='dark-content'>
2417            <i class="fas fa-lightbulb" aria-hidden="true"></i>
2418          </div>
2419          `
2420        );
2421      }
2422    })
2423  })
2424</script>
2424
2425    
2426    <!-- 渲染回到顶部按钮 -->
2427    
2428      <div class="goTop top-btn-color" pointer>
2429  <i class="fas fa-arrow-up" aria-hidden="true"></i>
2430</div>
2431<script src="/js/goTop.js"></script>
2431
2432
2433    
2434    <!-- 渲染左下角音乐播放器 -->
2435    
2436
2437    <!-- 图片放大 -->
2438    
2439      
2439<script src="/js/fancybox.umd.js"></script>
2439
2440    
2441
2442    <!-- 百度解析 -->
2443    <!-- Baidu Analytics -->
2444
2445    <!-- Baidu Push -->
2446
2447<script>
2448    (function () {
2449        var bp = document.createElement('script');
2450        var curProtocol = window.location.protocol.split(':')[0];
2451        if (curProtocol === 'https') {
2452            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
2453        } else {
2454            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
2455        }
2456        var s = document.getElementsByTagName("script")[0];
2457        s.parentNode.insertBefore(bp, s);
2458    })();
2459</script>
2459
2460
2461    
2462    <!-- 背景彩带 -->
2463    
2464      
2464<script type="text/javascript" size="100" alpha='0.4' zIndex="-1" src="/js/ribbon.min.js"></script>
2464
2465    
2466
2467    
2467<script src="/js/utils/index.js"></script>
2467
2468    
2468<script src="/js/app.js"></script>
2468
2469    
2470    <!-- 文章目录所需js -->
2471<!-- <link href="/js/tocbot/tocbot.css" rel="stylesheet">
2472<script src="/js/tocbot/tocbot.min.js"></script>
2472 -->
2473
2474<script src="/js/tocbot.min.js"></script>
2474
2475
2476
2477<link rel="stylesheet" href="/css/tocbot.css">
2478
2479<script>
2480  var headerEl = 'h2, h3, h4',  //headers 
2481    content = '.post-detail',//文章容器
2482    idArr = {};  //标题数组以确定是否增加索引id
2483  //add #id
2484  var option = {
2485    // Where to render the table of contents.
2486    tocSelector: '.toc',
2487    // Where to grab the headings to build the table of contents.
2488    contentSelector: content,
2489    // Which headings to grab inside of the contentSelector element.
2490    headingSelector: headerEl,
2491    scrollSmooth: true,
2492    scrollSmoothOffset: -70,
2493    // headingsOffset: -($(window).height() * 0.4 - 45),
2494    headingsOffset: -($(window).height() * 0.4 - 70),
2495    // positionFixedSelector: '.toc-main',
2496    // positionFixedClass: 'is-position-fixed',
2497    fixedSidebarOffset: 'auto',
2498    activeLinkClass: 'is-active-link',
2499    orderedList: true,
2500    collapseDepth: 20,
2501    // onClick: function (e) {},
2502  }
2503  if ($('.toc').length > 0) {
2504
2505    $(content).children(headerEl).each(function () {
2506      //去除空格以及多余标点
2507      var headerId = $(this).text().replace(/[\s|\~|`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\||\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\:|\,|\。]/g, '');
2508
2509      headerId = headerId.toLowerCase();
2510      if (idArr[headerId]) {
2511        //id已经存在
2512        $(this).attr('id', headerId + '-' + idArr[headerId]);
2513        idArr[headerId]++;
2514      }
2515      else {
2516        //id未存在
2517        idArr[headerId] = 1;
2518        $(this).attr('id', headerId);
2519      }
2520    });
2521
2522    document.addEventListener("DOMContentLoaded", function () {
2523      tocbot.init(option);
2524      mobileTocClick();
2525    });
2526
2527  }
2528
2529  window.tocScrollFn = function () {
2530    return bamboo.throttle(function () {
2531      findHeadPosition();
2532    }, 100)()
2533  }
2534  window.addEventListener('scroll', tocScrollFn);
2535
2536  const findHeadPosition = function (top) {
2537    if ($('.toc-list').length <= 0) {
2538      return false;
2539    }
2540    setTimeout(() => {  // or DOMContentLoaded 
2541      autoScrollToc();
2542    }, 0);
2543  }
2544
2545  const autoScrollToc = function () {
2546    const $activeItem = document.querySelector('.is-active-link');
2547    const $cardToc = document.querySelector('.toc-content');
2548    const activePosition = $activeItem.getBoundingClientRect().top
2549    const sidebarScrollTop = $cardToc.scrollTop
2550    if (activePosition > (document.documentElement.clientHeight - 100)) {
2551      $cardToc.scrollTop = sidebarScrollTop + 150
2552    }
2553    if (activePosition < 150) {
2554      $cardToc.scrollTop = sidebarScrollTop - 150
2555    }
2556  }
2557
2558  document.addEventListener('pjax:send', function () {
2559    if ($('.toc').length) {
2560      tocbot.destroy();
2561    }
2562  });
2563
2564  document.addEventListener('pjax:complete', function () {
2565    if ($('.toc').length) {
2566      tocbot.init(option);
2567      mobileTocClick();
2568    }
2569  });
2570  
2571  // 手机端toc按钮点击出现目录
2572  const mobileTocClick = function () {
2573    const $cardTocLayout = document.getElementsByClassName('side_toc')[0];
2574    const $cardToc = $cardTocLayout.getElementsByClassName('toc-content')[0];
2575    let right = '45px';
2576    if (window.innerWidth >= 551 && window.innerWidth <= 992) {
2577      right = '100px'
2578    }
2579    const mobileToc = {
2580      open: () => {
2581        $cardTocLayout.style.cssText = 'animation: toc-open .3s; opacity: 1; right: ' + right
2582      },
2583
2584      close: () => {
2585        $cardTocLayout.style.animation = 'toc-close .2s'
2586        setTimeout(() => {
2587          $cardTocLayout.style.cssText = "opacity:''; animation: ''; right: ''"
2588        }, 100)
2589      }
2590    }
2591    document.getElementById('toc-mobile-btn').addEventListener('click', () => {
2592      if (window.getComputedStyle($cardTocLayout).getPropertyValue('opacity') === '0') mobileToc.open()
2593      else mobileToc.close()
2594    })
2595
2596    $cardToc.addEventListener('click', (e) => {
2597      if (window.innerWidth < 992) { // 小于992px的时候
2598        mobileToc.close()
2599      }
2600    })
2601  }
2602</script>
2602
2603
2604<style>
2605  /* .is-position-fixed {
2606    position: sticky !important;
2607    top: 74px;
2608  }
2609
2610  .toc-main ul {
2611    counter-reset: show-list;
2612  }
2613
2614  .toc-main ul li::before {
2615    content: counter(item)".";
2616    display: block;
2617    position: absolute;
2618    left: 12px;
2619    top: 0;
2620  } */
2621</style>
2622 
2623
2624<!-- 设置导航背景 -->
2625<script>
2626  let setHeaderClass = () => {
2627    const nav = $('#navHeader');
2628    const navTop = nav.outerHeight();
2629    const winTop = $(window).scrollTop();
2630    if(winTop > navTop) {
2631      nav.addClass('header-bg-color');
2632    }
2633    else {
2634      nav.removeClass('header-bg-color');
2635    }
2636  };
2637
2638  let scrollCollect = () => {
2639    return bamboo.throttle(function (e) {
2640      setHeaderClass();
2641    }, 200)()
2642  }
2643
2644  let initHeaderBg = () => {
2645    setHeaderClass();
2646  }
2647
2648  setHeaderClass();
2649  window.addEventListener('scroll', scrollCollect);
2650
2651  document.addEventListener('pjax:send', function () {
2652    window.removeEventListener('scroll', scrollCollect)
2653  })
2654  document.addEventListener('pjax:complete', function () {
2655    window.addEventListener('scroll', scrollCollect);
2656    setHeaderClass();
2657  })
2658</script>
2658 
2659
2660<!-- 渲染issues标签里的内容 -->
2661<script>
2662  function loadIssuesJS() {
2663    if ($(".post-detail").find(".issues-api").length == 0) {
2664      return;
2665    } 
2666    loadScript('/js/issues/index.js');
2667  };
2668  $(function () {
2669    loadIssuesJS();
2670  });
2671  document.addEventListener('pjax:complete', function () {
2672    if (typeof IssuesAPI == "undefined") {
2673      loadIssuesJS();
2674    }
2675  })
2676</script>
2676
2677
2678<!-- 渲染远程json加载的图片标签(getPhotoOnline)里的内容 -->
2679<script>
2680  function loadPhotoOnlineJS() {
2681    if ($(".post-detail").find(".getJsonPhoto-api").length == 0) {
2682      return;
2683    } 
2684    loadScript('/js/getPhotoOnline/index.js');
2685  };
2686  $(function () {
2687    loadPhotoOnlineJS();
2688  });
2689  document.addEventListener('pjax:complete', function () {
2690    if (typeof getPhotoJson == "undefined") {
2691      loadPhotoOnlineJS();
2692    }
2693  })
2694</script>
2694
2695
2696<!-- 渲染远程json加载的talk标签(getTalkOnline)里的内容 -->
2697<script>
2698  function loadTalkOnlineJS() {
2699    if ($(".post-detail").find(".getJsonTalk-api").length == 0) {
2700      return;
2701    } 
2702    loadScript('https://cdnjs.cloudflare.com/ajax/libs/waterfall.js/1.0.2/waterfall.min.js'); // 瀑布流插件,https://raphamorim.io/waterfall.js/
2703    loadScript('/js/getTalkOnline/index.js');
2704  };
2705  $(function () {
2706    loadTalkOnlineJS();
2707  });
2708  document.addEventListener('pjax:complete', function () {
2709    if (typeof getTalkJson == "undefined") {
2710      loadTalkOnlineJS();
2711    }
2712  })
2713</script>
2713
2714
2715<!-- 渲染远程json加载的site-card标签(getSiteOnline)里的内容 -->
2716<script>
2717  function loadSiteOnlineJS() {
2718    if ($(".post-detail").find(".getJsonSite-api").length == 0) {
2719      return;
2720    } 
2721    loadScript('/js/getSiteOnline/index.js');
2722  };
2723  $(function () {
2724    loadSiteOnlineJS();
2725  });
2726  document.addEventListener('pjax:complete', function () {
2727    if (typeof getSiteJson == "undefined") {
2728      loadSiteOnlineJS();
2729    }
2730  })
2731</script>
2731
2732
2733<!-- 输入框打字特效 -->
2734<!-- 输入框打字特效 -->
2735
2736  
2736<script src="/js/activate-power-mode.js"></script>
2736
2737  
2737<script>
2738    POWERMODE.colorful = true;  // 打开随机颜色特效
2739    POWERMODE.shake = false;    // 关闭输入框抖动
2740    document.body.addEventListener('input', POWERMODE);//监听打字事件
2741  </script>
2741
2742
2743
2744<!-- markdown代码一键复制功能 -->
2745
2746  <link rel="stylesheet" href="https://cdn.jsdmirror.com/npm/v-plugs-ayu/lib/ayu.css">
2747  
2747<script src="https://cdn.jsdmirror.com/npm/v-plugs-ayu/lib/ayu.umd.min.js"></script>
2747
2748  
2748<script src="/js/clipboard/clipboard.min.js"></script>
2748
2749  <div id="appCopy">
2750  </div>
2751  
2751<script data-pjax>
2752    var vm = new Vue({
2753      el: '#appCopy',
2754      data: {
2755      },
2756      computed: {
2757      },
2758      mounted() {
2759        const that = this;
2760        var copy = '复制';
2761        /* code */
2762        var initCopyCode = function () {
2763          var copyHtml = '';
2764          copyHtml += '<button class="btn-copy" data-clipboard-snippet="" style="position:absolute;top:0;right:0;z-index:1;">';
2765          copyHtml += '<i class="fas fa-copy"></i><span>' + copy + '</span>';
2766          copyHtml += '</button>';
2767          $(".post-detail pre").not('.gutter pre').wrap("<div class='codeBox' style='position:relative;width:100%;'></div>")
2768          $(".post-detail pre").not('.gutter pre').before(copyHtml);
2769          new ClipboardJS('.btn-copy', {
2770            target: function (trigger) {
2771              return trigger.nextElementSibling;
2772            }
2773          });
2774        }
2775        initCopyCode();
2776        $('.btn-copy').unbind('click').bind('click', function () {
2777          doSomething();
2778        })
2779        $(document).unbind('keypress').bind('keypress', function (e) {
2780          if (e.ctrlKey && e.keyCode == 67) {
2781            doSomething();
2782          }
2783        })
2784
2785        function doSomething() {
2786          that.$notify({
2787            title: "成功",
2788            content: "代码已复制,请遵守相关授权协议。--青云依兮",
2789            type: 'success'
2790          })
2791        }
2792      },
2793      methods: {
2794      },
2795      created() { }
2796    })
2797  </script>
2797
2798  
2799
2800<!-- 图片懒加载 -->
2801<script defer src="https://cdn.jsdmirror.com/npm/[email protected]/dist/lazyload.min.js"></script>
vendor: 1 bytes, line 2801
2801
2802<script>
2803  // https://www.npmjs.com/package/vanilla-lazyload
2804  // Set the options globally
2805  // to make LazyLoad self-initialize
2806  window.lazyLoadOptions = {
2807    elements_selector: ".lazyload",
2808    threshold: 0
2809  };
2810  // Listen to the initialization event
2811  // and get the instance of LazyLoad
2812  window.addEventListener(
2813    "LazyLoad::Initialized",
2814    function (event) {
2815      window.lazyLoadInstance = event.detail.instance;
2816    },
2817    false
2818  );
2819  document.addEventListener('DOMContentLoaded', function () {
2820    lazyLoadInstance.update();
2821  });
2822  document.addEventListener('pjax:complete', function () {
2823    lazyLoadInstance.update();
2824  });
2825</script>
2825
2826
2827
2828<!-- 卡片滚动动画 -->
2829   
2830
2831<!-- 评论所需js -->
2832
2833  
2834    <!-- 弹幕所需的css和js -->
2835    
2836  <!-- 弹幕插件 -->
2837  <link href="/js/danmu/barrager.css" rel="stylesheet">
2838  
2838<script src="/js/danmu/jquery.barrager.js"></script>
2838
2839
2840<!-- 具体js,请前往valine/script.ejs查看 -->
2841
2842    
2842<script>
2843  var requiredFields = '';
2844  requiredFields = requiredFields.split(',');
2845  comment_el = '.comment';
2846  let looperValine = null;
2847  load_valine = function () {
2848    if ($(comment_el).length) {
2849      var valine = new Valine({
2850        el: '#vcomment',
2851        path: window.location.pathname,
2852        notify: false,
2853        verify: false,
2854        app_id: "8M0jKEDHJ9lR1j8WhakihSbv-gzGzoHsz",
2855        app_key: "6KkhQq0feQa6GF4iL11paa5H",
2856        placeholder: "请输入评论内容",
2857        avatar: "",
2858        master: "d72e6625d8e1e44d5dc721a27fc08508",   //博主邮箱md5
2859        tagMeta: ["博主","小伙伴","访客"],     //标识字段名
2860        friends: "",
2861        metaPlaceholder: { "nick": "昵称/QQ号", "mail": "邮箱" },
2862        requiredFields: requiredFields,
2863        enableQQ: true,
2864      });
2865      function debounce(fn) {
2866        var timerID = null
2867        return function () {
2868          var arg = arguments[0]   //获取事件
2869          if (timerID) {
2870            clearTimeout(timerID)
2871          }
2872          timerID = setTimeout(function () {
2873            fn(arg)              //事件传入函数
2874          }, 200)
2875        }
2876      }
2877      //查询评论 valine.Q('*').limit(7) -- 查询所有,限制7条, 下面的的代码是查询当前页面
2878      var themeDanmu = eval('true');
2879      var themeLoop = eval('false');
2880      var themeLooperTime = '5000' || 5000;
2881      var speed = '40' || 20;
2882      var isBarrager = true;
2883      if (themeDanmu == true) {
2884        do_barrager();
2885        if ($('.danmuBox').length <= 0) {
2886          $('.navbar').append('<div class="danmuBox"><div class="danmuBtn open"><span class="danmuCircle"></span><span class="danmuText">弹幕</span></div></div>');
2887        }
2888        $('.danmuBtn').on('click', debounce(
2889          function () {
2890            if ($('.danmuBtn').hasClass('open')) {
2891              $('.danmuBtn').removeClass('open')
2892              clearInterval(looperValine);
2893              $.fn.barrager.removeAll();
2894            } else {
2895              $('.danmuBtn').addClass("open");
2896              do_barrager();
2897            }
2898          }
2899        ))
2900      }
2901      function do_barrager() {
2902        isBarrager && valine.Q(window.location.pathname).find().then(function (comments) {
2903          // var num = 0; // 可以记录条数,循环调用的时候只取最新的评论放入弹幕中
2904          var run_once = true;
2905          var looper_time = themeLooperTime;
2906          var total = comments.length;
2907          // var looper = null;
2908          var index = 0;
2909          if (total > 0) {
2910            barrager();
2911          } else {
2912            // 当评论数为0的时候,自动关闭弹幕
2913            // $('.danmuBtn').removeClass('open');
2914          }
2915          function barrager() {
2916            if (run_once) {
2917              //如果是首次执行,则设置一个定时器,并且把首次执行置为false
2918              looperValine = setInterval(barrager, looper_time);
2919              run_once = false;
2920            }
2921            var content = comments[index]._serverData.comment;
2922            var email = comments[index]._serverData.mail;
2923            var link = comments[index]._serverData.link;
2924            var newcontent = content.substring(0, 50).replace(/<[^>]+>/g, "");
2925            //发布一个弹幕
2926            const item = {
2927              img: `https://q1.qlogo.cn/g?b=qq&nk=${email}&s=640`, //图片 
2928              info: newcontent, //文字 
2929              href: link, //链接 
2930              close: true, //显示关闭按钮 
2931              speed: speed, //延迟,单位秒,默认6 
2932              color: '#fff', //颜色,默认白色 
2933              old_ie_color: '#000000', //ie低版兼容色,不能与网页背景相同,默认黑色
2934            }
2935            $('body').barrager(item);
2936            //索引自增
2937            index++;
2938            //所有弹幕发布完毕,清除计时器。
2939            if (index == total) {
2940              clearInterval(looperValine);
2941              if (themeLoop === true) {
2942                setTimeout(function () {
2943                  do_barrager();
2944                }, 5000);
2945              } else {
2946                $('.danmuBtn').removeClass('open');
2947              }
2948              return false;
2949            }
2950
2951          }
2952        })
2953      }
2954    }
2955  };
2956  $(document).ready(load_valine);
2957  document.addEventListener('pjax:send', function (e) {
2958    
2959      $('.danmuBox').length > 0 && $('.danmuBox').remove()
2960      looperValine && clearInterval(looperValine);
2961      $.fn.barrager.removeAll();
2962    
2963  })
2964  document.addEventListener('pjax:complete', function () {
2965    load_valine();
2966  });
2967</script>
2967
2968
2969  
2970
2971
2972<!-- 鼠标点击特效 -->
2973<!-- 爱心点击 -->
2974
2975  
2976    <canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 999; pointer-events: none;" ></canvas>
2977    
2977<script src="//cdn.bootcss.com/animejs/2.2.0/anime.min.js"></script>
2977
2978    
2978<script src="/js/cursor/explosion.min.js"></script>
2978
2979  
2980
2981
2982
2983
2984  
2984<script async src="/js/busuanzi.pure.mini.js" data-pjax></script>
2984
2985
2986
2987<!-- 轮播图标签 -->
2988<script>
2989  var bambooSwiperTag = {};
2990  function load_swiper() {
2991    if (!document.querySelectorAll(".post-swiper-container")[0]) return;
2992    loadCSS("https://cdn.jsdmirror.com/npm/swiper@6/swiper-bundle.min.css")
2993    loadScript("https://cdn.jsdmirror.com/npm/swiper@6/swiper-bundle.min.js").then(() => {
2994      pjax_swiper();
2995    });
2996  }
2997
2998  load_swiper();
2999
3000  function pjax_swiper() {
3001    bambooSwiperTag.swiper = new Swiper('.post-swiper-container', {
3002      slidesPerView: 'auto',
3003      spaceBetween: 8,
3004      centeredSlides: true,
3005      loop: true,
3006      autoplay: true ? {
3007        delay: 3000,
3008        stopOnLastSlide: false,
3009        disableOnInteraction: false,
3010      } : false,
3011      pagination: {
3012        el: '.swiper-pagination',
3013        clickable: true,
3014      },
3015      navigation: {
3016        nextEl: '.swiper-button-next',
3017        prevEl: '.swiper-button-prev',
3018      },
3019      on:{
3020        init: function(){
3021          swiperAnimateCache(this); //隐藏动画元素 
3022          swiperAnimate(this); //初始化完成开始动画
3023        }, 
3024        slideChangeTransitionEnd: function(){ 
3025          swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
3026          //this.slides.eq(this.activeIndex).find('.ani').removeClass('ani'); 动画只展现一次,去除ani类名
3027        } 
3028      }
3029    });
3030  }
3031
3032  document.addEventListener('pjax:complete', function () {
3033    if (!document.querySelectorAll(".post-swiper-container")[0]) return;
3034    if (typeof bambooSwiperTag.swiper === "undefined") {
3035      load_swiper();
3036    } else {
3037      pjax_swiper();
3038    }
3039  });
3040</script>
3040
3041    <!-- pjax -->
3042    
3043
3044<!-- pjax -->
3045
3046
3047  
3047<script src="/js/[email protected]/index.js"></script>
3047
3048  
3049    <!-- 样式位于:source/css/_third-party/pjaxanimate.styl -->
3050
3051<div class="pjax-animate">
3052  
3053    <div class="loading-circle"><div id="loader-circle"></div></div>
3054    
3054<script>
3055      window.ShowLoading = function() {
3056        $(".loading-circle").css("display", "block");
3057      };
3058      window.HideLoading = function() {
3059        $(".loading-circle").css("display", "none");
3060      }
3061    </script>
3061
3062  
3063	
3063<script>
3064    document.addEventListener('pjax:complete', function () {
3065      window.HideLoading();
3066    })
3067    document.addEventListener('pjax:send', function () {
3068      window.ShowLoading();
3069    })
3070    document.addEventListener('pjax:error', function () {
3071      window.HideLoading();
3072    })
3073	</script>
3073
3074</div>
3075
3076  
3077
3078  
3078<script>
3079    var pjax = new Pjax({
3080      elements: 'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([no-pjax])',   // 拦截正常带链接的 a 标签
3081      selectors: ["#pjax-container","title"],                                   // 根据实际需要确认重载区域
3082      cacheBust: false,   // url 地址追加时间戳,用以避免浏览器缓存
3083      timeout: 5000
3084    });
3085
3086    document.addEventListener('pjax:send', function (e) {
3087
3088      try {
3089        var currentUrl = window.location.pathname;
3090        var targetUrl = e.triggerElement.href;
3091        var banUrl = [""];
3092        if (banUrl[0] != "") {
3093          banUrl.forEach(item => {
3094            if(currentUrl.indexOf(item) != -1 || targetUrl.indexOf(item) != -1) {
3095              window.location.href = targetUrl;
3096            }
3097          });
3098        }
3099      } catch (error) {}
3100
3101      $(window).unbind('resize');
3102      $(window).unbind('scroll');
3103      $(document).unbind('scroll');
3104      $(document).unbind('click');
3105      $('body').unbind('click');
3106
3107    })
3108    
3109    document.addEventListener('pjax:complete', function () {
3110      $('script[data-pjax], .pjax-reload script').each(function () {
3111        $(this).parent().append($(this).remove());
3112      });
3113    });
3114
3115    document.addEventListener('pjax:error', function (e) {
3116      window.location.href = e.triggerElement.href;
3117    })
3118    
3119    // 刷新不从顶部开始
3120    document.addEventListener("DOMContentLoaded", function () {
3121      history.scrollRestoration = 'auto';
3122    })
3123  </script>
3123
3124
3125
3126
3127  </body>
3128</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.