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&uin=1422756921&site=qq&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.