1 Star 0 Fork 0

panyunfeng123 / panyunfeng.gitee.com

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
index.html 90.06 KB
一键复制 编辑 原始数据 按行查看 历史
Panyunfeng123 提交于 2024-05-12 08:11 . Site updated: 2024-05-12 08:11:05
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863
<!DOCTYPE html>
<html>
<!-- meta/link... -->
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
<!-- Global site tag (gtag.js) - Google Analytics -->
<title>Hexo</title>
<link rel="icon" type="image/x-icon, image/vnd.microsoft.icon" href="/favicon.ico">
<link rel="stylesheet" href="https://at.alicdn.com/t/font_1911880_c1nvbyezg17.css">
<link href="https://unpkg.com/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet">
<link href="/js/swiper/swiper@5.4.1.min.css" rel="stylesheet">
<script>
var themeModelId = '';
if (themeModelId) {
localStorage.setItem('modelId', themeModelId);
}
</script>
<script defer src="https://cdn.jsdelivr.net/gh/yuang01/live2d-widget@latest/autoload.js"></script>
<script>
var live2dOpen = eval('true') || false;
if (!live2dOpen) {
localStorage.setItem('waifu-display', 1609323474481);
}
</script>
<link rel="stylesheet" href="/css/animate.min.css">
<link rel="stylesheet" href="/css/style.css">
<link href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.css" rel="stylesheet">
<link rel="stylesheet" href="/js/shareJs/share.min.css">
<style>
@media (max-width: 992px) {
#waifu {
display: none;
}
}
</style>
<script defer src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
<link href="//cdn.bootcss.com/pace/1.0.2/themes/pink/pace-theme-flash.css" rel="stylesheet">
<!-- 依赖于jquery和vue -->
<script src="https://unpkg.com/jquery@3.5.1/dist/jquery.min.js"></script>
<script src="https://unpkg.com/vue@2.6.11/dist/vue.min.js"></script>
<!-- import link -->
<!-- import script -->
<meta name="generator" content="Hexo 6.3.0"></head>
<!-- 预加载动画 -->
<!-- 页面预加载动画 -->
<div class="preloader_2" id="loader">
<div class="loader"></div>
</div>
<script>
var endLoading = function () {
document.body.style.overflow = 'auto';
document.getElementById('loader').classList.add("loading");
}
window.addEventListener('DOMContentLoaded',endLoading);
</script>
<body>
<!-- 判断是否为暗黑风格 -->
<!-- 判断是否为黑夜模式 -->
<script>
let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
if (isDark) {
$(document.body).addClass('darkModel');
}
</script>
<!-- 需要在上面加载的js -->
<script>
function loadScript(src, cb) {
return new Promise(resolve => {
setTimeout(function () {
var HEAD = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
if (cb) {
if (JSON.stringify(cb)) {
for (let p in cb) {
if (p == "onload") {
script[p] = () => {
cb[p]()
resolve()
}
} else {
script[p] = cb[p]
script.onload = resolve
}
}
} else {
script.onload = () => {
cb()
resolve()
};
}
} else {
script.onload = resolve
}
script.setAttribute("src", src);
HEAD.appendChild(script);
});
});
}
//https://github.com/filamentgroup/loadCSS
var loadCSS = function (src) {
return new Promise(resolve => {
setTimeout(function () {
var link = document.createElement('link');
link.rel = "stylesheet";
link.href = src;
link.onload = resolve;
document.getElementsByTagName("head")[0].appendChild(link);
});
});
};
</script>
<!-- 轮播图所需要的js -->
<script src="/js/swiper/swiper.min.js"></script>
<script src="/js/swiper/vue-awesome-swiper.js"></script>
<script src="/js/swiper/swiper.animate1.0.3.min.js"></script>
<script type="text/javascript">
Vue.use(window.VueAwesomeSwiper)
</script>
<script src="/js/vue-typed-js/index.js"></script>
<!-- 首页的公告滚动插件的js需要重新加载 -->
<script src="/js/vue-seamless-scroll/index.js"></script>
<!-- 打字机效果js -->
<script src="https://unpkg.com/typed.js@2.0.11"></script>
<div id="safearea">
<main class="main" id="pjax-container">
<!-- 头部导航 -->
<header class="header "
id="navHeader"
style="position: fixed;
left: 0; top: 0; z-index: 10;width: 100%;"
>
<div class="header-content">
<div class="bars">
<div id="appDrawer" class="sidebar-image">
<div class="drawer-box-icon">
<i class="fas fa-bars" aria-hidden="true" @click="showDialogDrawer"></i>
</div>
<transition name="fade">
<div class="drawer-box_mask" v-cloak style="display: none;" v-show="visible" @click.self="cancelDialogDrawer">
</div>
</transition>
<div class="drawer-box" :class="{'active': visible}">
<div class="drawer-box-head bg-color">
<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">
<h3 class="drawer-box-head_title">Hexo</h3>
<h5 class="drawer-box-head_desc">Cloud</h5>
</div>
<div class="drawer-box-content">
<ul class="drawer-box-content_menu">
<li class="drawer-box-content_item" style="position: relative;">
<a href="/" class="drawer-menu-item-link">
<i class="fas fa-home" aria-hidden="true"></i>
<span class="name">首页</span>
</a>
</li>
<li class="drawer-box-content_item" style="position: relative;">
<a href="/archives" class="drawer-menu-item-link">
<i class="fas fa-archive" aria-hidden="true"></i>
<span class="name">归档</span>
</a>
</li>
<li class="drawer-box-content_item" style="position: relative;">
<a href="/tags" class="drawer-menu-item-link">
<i class="fas fa-tags" aria-hidden="true"></i>
<span class="name">标签</span>
</a>
</li>
<li class="drawer-box-content_item" style="position: relative;">
<a href="/categories" class="drawer-menu-item-link">
<i class="fas fa-bookmark" aria-hidden="true"></i>
<span class="name">分类</span>
</a>
</li>
<li class="drawer-box-content_item" style="position: relative;">
<a href="javascript:;" class="drawer-menu-item-link has-children" @click="openOrCloseMenu(4)">
<span>
<i class="fas fa-link"></i>
<span class="name">友情链接</span>
</span>
<i class="fas fa-chevron-left arrow " :class="{'icon-rotate': isOpen(4)}" aria-hidden="true"></i>
</a>
<ul class="drawer-sub-menu" v-if="isOpen(4)">
<li>
<a href="/about">
<i class="fas fa-film" style="margin-top: -20px;"></i>
<span>关于我</span>
</a>
</li>
<li>
<a target="_blank" rel="noopener" href="http://tangninghaha.github.io">
<i class="fas fa-film" style="margin-top: -20px;"></i>
<span>tangninghaha.github.io</span>
</a>
</li>
</ul>
</li>
<li class="drawer-box-content_item">
<a target="_blank" rel="noopener" href="https://github.com/Panyunfeng123">
<i class="fas fa-github" aria-hidden="true"></i>
<span>Github</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<script>
var body = document.body || document.documentElement || window;
var vm = new Vue({
el: '#appDrawer',
data: {
visible: false,
top: 0,
openArr: [],
},
computed: {
},
mounted() {
},
methods: {
isOpen(index) {
if (this.openArr.includes(index)) {
return true;
} else {
return false;
}
},
openOrCloseMenu(curIndex) {
const index = this.openArr.indexOf(curIndex);
if (index !== -1) {
this.openArr.splice(index, 1);
} else {
this.openArr.push(curIndex);
}
},
showDialogDrawer() {
this.visible = true;
// 防止页面滚动,只能让弹框滚动
this.top = $(document).scrollTop()
body.style.cssText = 'width: 100%; height: 100%;overflow: hidden;';
},
cancelDialogDrawer() {
this.visible = false;
body.removeAttribute('style');
$(document).scrollTop(this.top)
}
},
created() {}
})
</script>
</div>
<div class="blog-title" id="author-avatar">
<div class="avatar">
<img src="/medias/logo.png" class="lazyload placeholder" data-srcset="/medias/logo.png" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="logo">
</div>
<a href="/" class="logo">Hexo</a>
</div>
<nav class="navbar">
<ul class="menu">
<li class="menu-item" style="position: relative;">
<a href="/" class="menu-item-link" title="首页">
<i class="fas fa-home" aria-hidden="true"></i>
<span class="name">首页</span>
</a>
</li>
<li class="menu-item" style="position: relative;">
<a href="/archives" class="menu-item-link" title="归档">
<i class="fas fa-archive" aria-hidden="true"></i>
<span class="name">归档</span>
</a>
</li>
<li class="menu-item" style="position: relative;">
<a href="/tags" class="menu-item-link" title="标签">
<i class="fas fa-tags" aria-hidden="true"></i>
<span class="name">标签</span>
</a>
</li>
<li class="menu-item" style="position: relative;">
<a href="/categories" class="menu-item-link" title="分类">
<i class="fas fa-bookmark" aria-hidden="true"></i>
<span class="name">分类</span>
</a>
</li>
<li class="menu-item" style="position: relative;">
<a href="javascript:;" class="menu-item-link" title="友情链接">
<i class="fas fa-link"></i>
<span class="name">友情链接</span>
<i class="fas fa-chevron-down arrow" aria-hidden="true"></i>
</a>
<ul class="sub-menu">
<li>
<a href="/about">
<i class="fas fa-film" style="margin-top: -20px;"></i>
<span>关于我</span>
</a>
</li>
<li>
<a target="_blank" rel="noopener" href="http://tangninghaha.github.io">
<i class="fas fa-film" style="margin-top: -20px;"></i>
<span>tangninghaha.github.io</span>
</a>
</li>
</ul>
</li>
</ul>
<div id="appSearch">
<div class="search" @click="showDialog()"><i class="fas fa-search" aria-hidden="true"></i></div>
<transition name="fade">
<div class="message-box_wrapper" style="display: none;" v-cloak v-show="dialogVisible" @click.self="cancelDialogVisible()">
<div class="message-box animated bounceInDown">
<h2>
<span>
<i class="fas fa-search" aria-hidden="true"></i>
<span class="title">本地搜索</span>
</span>
<i class="fas fa-times close" pointer style="float:right;" aria-hidden="true" @click.self="cancelDialogVisible()"></i>
</h2>
<form class="site-search-form">
<input type="text"
placeholder="请输入关键字"
id="local-search-input"
@click="getSearchFile()"
class="st-search-input"
v-model="searchInput"
/>
</form>
<div class="result-wrapper">
<div id="local-search-result" class="local-search-result-cls"></div>
</div>
</div>
</div>
</transition>
</div>
<script src="/js/local_search.js"></script>
<script>
var body = document.body || document.documentElement || window;
var vm = new Vue({
el: '#appSearch',
data: {
dialogVisible: false,
searchInput: '',
top: 0,
},
computed: {
},
mounted() {
window.addEventListener('pjax:complete', () => {
this.cancelDialogVisible();
})
},
methods: {
showDialog() {
this.dialogVisible = true;
// 防止页面滚动,只能让弹框滚动
this.top = $(document).scrollTop()
body.style.cssText = 'overflow: hidden;';
},
getSearchFile() {
if (!this.searchInput) {
getSearchFile("/search.xml");
}
},
cancelDialogVisible() {
this.dialogVisible = false;
body.removeAttribute('style');
$(document).scrollTop(this.top)
},
},
created() {}
})
</script>
<!-- 解决刷新页面闪烁问题,可以在元素上添加display: none, 或者用vue.extend方法,详情:https://blog.csdn.net/qq_31393401/article/details/81017912 -->
<!-- 下面是搜索基本写法 -->
<!-- <script type="text/javascript" id="local.search.active">
var inputArea = document.querySelector("#local-search-input");
inputArea.onclick = function(){ getSearchFile(); this.onclick = null }
inputArea.onkeydown = function(){ if(event.keyCode == 13) return false }
</script> -->
</nav>
</div>
<a target="_blank" rel="noopener" href="https://github.com/Panyunfeng123" 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>
<div id="he-plugin-simple"></div>
<script>
WIDGET = {
CONFIG: {
"modules": "012",
"background": 5,
"tmpColor": "4A4A4A",
"tmpSize": 16,
"cityColor": "4A4A4A",
"citySize": 16,
"aqiSize": 16,
"weatherIconSize": 24,
"alertIconSize": 18,
"padding": "10px 10px 10px 10px",
"shadow": "1",
"language": "auto",
"borderRadius": 5,
"fixed": "false",
"vertical": "middle",
"horizontal": "center",
"key": "2784dd3fcb1e4f0f9a9b579bf69641f2"
}
}
</script>
<script defer src="https://widget.qweather.net/simple/static/js/he-simple-common.js?v=2.0"></script>
</header>
<!-- 内容区域 -->
<!-- 首页轮播 -->
<link href="/js/vue-typed-js/index.css" rel="stylesheet">
<div class="swiper-length" style="display: none;">0</div>
<div id="appSwiper"
class="swiper-no-swiping"
@mouseenter="stopAutoPlay()"
@mouseleave="startAutoPlay()"
>
<swiper v-cloak ref="mySwiper" :options="swiperOptions" @slideChangeTransitionEnd="slideChangeTransitionEnd">
<swiper-slide>
<div class="item swiper-lazy" data-background="https://api.lolimi.cn/API/dmt/api.php?type=image" style="background-size: 300000px;
background-position: left center;" style="position: relative;">
<div class="swiper-bgmask" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;"></div>
<div class="flag">
<div class="img-mask swiper-lazy swiper-default-bgImg" data-background="https://api.lolimi.cn/API/dmt/api.php?type=image" style="height: 100%; background-size: cover;
background-position: center center;">
<div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>
</div>
<div class="flag-text">
<div class="flag-text-content">
<div class="title ani animated" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s">Cloud White</div>
<div class="excerpt ani animated" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s"></div>
</div>
<div style="display: flex;" class="flag-text-btns">
<div class="ani animated" swiper-animate-effect="fadeInDown" swiper-animate-duration="0.2s" swiper-animate-delay="0.1s"><a href="https://panyunfeng123.github.io/archives/" class="read-more swiper-btn-color" style="display: inline-block; z-index:1;">阅读文章</a></div>
</div>
</div>
</div>
</div>
</swiper-slide>
</swiper>
<div id="scroll-down" @click="toPostContent()">
<a href="javascript:;">
<i class="fas fa-angle-down scroll-down-effects"></i>
</a>
</div>
<canvas id="header_canvas"style="position:absolute;bottom:0;width:100%;pointer-events:none;"></canvas>
<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>
</div>
<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>
<style>
.hans-container {
position: absolute!important;
bottom: 0;
width: 100%;
height: 120px;
z-index: 100;
pointer-events:none;
}
</style>
<script>
var autoplay = JSON.parse('false');
var delay = '5000';
var loop = JSON.parse('true') ? false : JSON.parse('true');
var effect = 'slide';
var swiperLength = parseInt(document.querySelector(".swiper-length").innerText);
var defaultDesc = '';
defaultDesc = defaultDesc.split(',');
var defaultDescTypedLoop = JSON.parse('true');
var vm = new Vue({
el: '#appSwiper',
data: {
defaultDesc: defaultDesc,
defaultDescTypedLoop,
swiperOptions: {
pagination: {
el: '.swiper-pagination',
clickable: true // 允许点击小圆点跳转
},
loop: loop ? true : false,
effect, // fade
autoplay: (autoplay && swiperLength > 1) ? {
    delay,
    disableOnInteraction: false // 手动切换之后继续自动轮播
  } : false,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
lazy: {
loadPrevNext: true,
},
on:{
init: function() {
swiperAnimateCache(this); //隐藏动画元素
swiperAnimate(this); //初始化完成开始动画
},
slideChangeTransitionEnd: function(){
swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
}
}
// Some Swiper option/callback...
}
},
computed: {
swiper() {
return this.$refs.mySwiper.$swiper
}
},
mounted() {
// console.log('Current Swiper instance object', this.swiper)
// this.swiper.slideTo(0, 1000, false)
},
methods: {
stopAutoPlay() {
(autoplay && swiperLength > 1) && this.swiper.autoplay.stop();
},
startAutoPlay() {
(autoplay && swiperLength > 1) && this.swiper.autoplay.start();
},
slideChangeTransitionEnd() {
console.log('1');
},
toPostContent() {
const fullHeight = $(window).height() - 60;
$('html,body').animate({scrollTop: fullHeight},500);
}
},
created() {}
})
</script>
<script src="/js/bubble/homeBubble.js"></script>
<style>
#appSwiper {
position: relative;
user-select: none;
overflow: hidden;
font-family: Titillium Web,'PingFang SC','Hiragino Sans GB','Microsoft JhengHei','Microsoft YaHei',sans-serif;
}
.default-excerpt {
font-size: 1.6em;
margin-top: 1em;
color: #eee;
}
.bottom-one-btn {
margin-top: 15px;
}
.swiper-container {
overflow: hidden;
z-index: 0;
}
.swiper-slide {
height: 350px;
position: relative;
}
.swiper-button-prev,
.swiper-button-next {
padding: 10px 10px;
transition: background 0.2s;
}
.swiper-button-prev:hover,
.swiper-button-next:hover {
background: rgba(0, 0, 0, 0.2);
}
.swiper-slide .item {
width: 100%;
height: 100%;
}
.flag {
position: relative;
width: 70%;
margin: 0 auto;
color: #ffffff;
height: 100%;
background: #000;
}
.flag img {
min-height: 100%;
}
.flag-text {
position: absolute;
top: 50px;
left: 50px;
width: 80%;
height: 280px;
display: flex;
flex-direction: column;
justify-content: space-between;
z-index: 9999;
}
.flag-text .title {
font-size: 1.8em;
}
.flag-text .title a {
color: #fff;
transition: color 0.3s;
}
.flag-text .title a:hover {
color: rgba(66, 185, 133, 0.8);
}
.flag-text .excerpt {
color: #eee;
width: 70%;
line-height: 30px;
height: 150px;
margin-top: 2%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 5;
overflow: hidden;
}
.swiper-pagination-bullet-active {
opacity: 1;
background-color: #42b983;
}
.img-mask {
opacity:0.6; filter: alpha(opacity=60);
}
.flag-text .read-more {
margin-bottom: 30px;
padding: 5px 15px;
color: #ffffff;
border-radius: 20px;
}
#scroll-down {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
font-size: 2.5em;
color: #fff;
cursor: pointer;
z-index: 2;
}
#scroll-down a {
color: #fff;
}
@-webkit-keyframes rightan
{
0%
{
transform: translateY(0);
opacity: 0.5;
}
50% {
transform: translateY(-30px);
opacity: 1;
}
100%
{
transform: translateY(0);
opacity: 0.5;
}
}
.scroll-down-effects {
animation: rightan 1.5s infinite;
}
/* 当头部导航设置为背景透明的时候 */
.swiper-slide {
height: 400px;
}
.flag-text {
top: 80px;
}
@media (min-width: 992px) {
.swiper-button-prev {
margin-left: 15%;
transform: translateX(-180%);
}
.swiper-button-next {
margin-right: 15%;
transform: translateX(180%);
}
.flag-text .title {
width: 80%;
line-height: 35px;
max-height: 70px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
}
@media screen and (max-width: 1200px) {
.flag {
width: 80%;
}
.swiper-button-prev {
margin-left: 10%;
transform: translateX(-180%);
}
.swiper-button-next {
margin-right: 10%;
transform: translateX(180%);
}
}
@media (max-width: 992px) {
.flag {
width: 100%;
}
.flag-text .title {
font-size: 1.5em;
margin-top: 50px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.flag-text {
position: absolute;
top: 0;
left: 0;
width: 80%;
height: 100%;
margin-left: 50%;
transform: translateX(-50%);
}
.flag-text .excerpt {
width: 100%;
line-height: 25px;
height: 125px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 5;
overflow: hidden;
}
.flag-text .read-more {
margin-bottom: 80px;
}
}
@media (max-width: 992px) and (min-width: 551px) {
.flag-text .excerpt {
width: 70%;
}
}
@media (max-width: 551px) {
.swiper-slide {
height: 250px;
}
.flag-text .title {
line-height: 30px;
max-height: 60px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
margin-top: 20px;
}
.flag-text .excerpt {
font-size: 1em;
line-height: 20px;
height: 80px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
}
.flag-text .excerpt {
margin-top: 10px;
}
.flag-text .read-more {
margin-top: 10px;
margin-bottom: 50px;
}
.swiper-button-prev,
.swiper-button-next {
transform: scale(0.5);
}
.swiper-button-prev {
left: 0;
}
.swiper-button-next {
right: 0;
}
}
/* 当头部导航设置为背景透明的时候 */
@media (max-width: 992px) {
.flag-text {
top: 60px;
height: 80%;
}
}
@media (max-width: 551px) {
.swiper-slide {
height: 310px;
}
}
/* 文字或者按钮居中显示 */
.flag-text {
left: 10%;
}
.flag-text .flag-text-content {
width: 100%;
text-align: center;
}
.flag-text .title {
width: 100%;
text-align: center;
}
.flag-text .excerpt {
width: 100%;
text-align: center;
}
.bottom-one-btn {
display: flex;
justify-content: center;
}
.default-excerpt {
display: flex;
justify-content: center;
font-size: 1.6em;
}
.flag-text-btns {
justify-content: center;
}
@media (min-width: 992px) {
.flag-text .excerpt {
line-height: 30px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 5;
overflow: hidden;
}
}
@media (max-width: 992px) {
.flag-text {
margin-left: 0;
transform: translateX(0);
}
}
/* 全屏显示 */
.flag {
width: 100%;
}
.swiper-slide {
height: 100vh;
}
.flag-text {
top: 50%;
left: 15%;
transform: translateY(-50%);
width: 70%;
height: auto;
}
.flag-text .title {
font-size: 2.8em;
line-height: 1.5em;
max-height: none;
}
.flag-text .excerpt {
font-size: 1.25em;
height: 150px;
}
.flag-text .read-more {
margin-top: 10px;
}
.swiper-button-prev,
.swiper-button-next {
margin-top: -60px!important;
}
.swiper-btn-color,
.swiper-btn-color2 {
background-color: transparent;
border: 1px solid #fff;
}
.swiper-btn-color:hover,
.swiper-btn-color2:hover {
background-color: rgba(66, 185, 133, 0.8);
border: 1px solid rgba(66, 185, 133, 0.8)!important;
}
.flag-text-btns {
justify-content: center;
}
.swiper-button-prev {
margin-left: 10px;
transform: translateX(0);
border-radius: 50%;
padding: 0;
width: 50px;
height: 50px;
}
.swiper-button-next {
margin-right: 10px;
transform: translateX(0);
border-radius: 50%;
padding: 0;
width: 50px;
height: 50px;
}
.swiper-button-next:after, .swiper-button-prev:after {
font-size: 1.2em;
}
@media (min-width: 992px) {
.flag-text .excerpt {
line-height: 35px;
height: 175px;
}
.default-excerpt {
min-height: 150px;
}
.typed-element {
align-items: unset;
}
}
@media (max-width: 992px) {
.flag-text {
margin-left: 0;
height: 60%;
top: 55%;
}
.flag-text .title {
font-size: 2.4em;
margin-top: 0;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.flag-text .excerpt {
line-height: 35px;
height: 185px;
}
.flag-text .read-more {
margin-top: 20px;
}
}
@media (max-width: 551px) {
.flag-text {
height: 60%;
}
.flag-text .title {
font-size: 2.2em;
}
.flag-text .excerpt {
line-height: 30px;
}
.flag-text .read-more {
margin-top: 50px;
padding: 10px 30px;
}
.swiper-button-prev {
margin-left: 0;
}
.swiper-button-next {
margin-right: 0;
}
.default-excerpt {
margin-top: 1em;
}
}
/* video */
.swiper-video {
width: 100%;
height: 100%;
}
.swiper-video video {
pointer-events: none;
}
.swiper-video-maskBox{
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-color: #000;
opacity: 0.2;
z-index: 1;
}
@media (min-width: 992px) {
.swiper-video {
display: none;
}
.swiper-default-bgImg {
display: block;
}
}
@media (max-width: 992px) {
.swiper-video {
display: none;
}
.swiper-default-bgImg {
display: block;
}
}
/* video-end */
</style>
<div id="l_main">
<div class="l_content">
<!-- 自定义的内容 -->
<!-- 首页座右铭 -->
<div class="motto">
<h3 class="motto-title">座右铭</h3>
<div class="motto-content">
<p>
我是座右铭
</p>
</div>
</div>
<!-- 首页公告 -->
<!-- 首页文章置顶 -->
<div class="topArticle reveal">
<h3><i class="fas fa-thumbs-o-up" aria-hidden="true"></i>推荐文章</h3>
<div class="articles">
</div>
</div>
<div class="bg-floor" id="home-bg-floor" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -2;"></div>
<!-- 每一篇文章卡片 -->
<!-- hash算法 -->
<section class="posts">
<article class="post reveal" style="flex-direction: row-reverse; ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2024-05-04</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2024/05/04/zatan2405/">杂谈</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2024/05/04/zatan2405/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" class="lazyload placeholder" data-srcset="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-content">
杂谈最近两个月都被关在求实监狱里,趁这个劳动节谈谈最近的感受
从时间上来说,最早的重要的事就是求实劳犯入狱。我们已经周末n个周末不能出狱了(快可怜我)
然后就是共进联盟检测,只能说有点简单
接着是四月恐怖的三周,第二周体育中考差点满分,实验
</div>
</div>
<div class="post-more">
<a href="/2024/05/04/zatan2405/">
<i class="iconfont iconmore" pointer style="float: right; " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2024/05/04/zatan2405/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" class="lazyload placeholder" data-srcset="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
</article>
<article class="post reveal" style=" ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-12-29</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/12/29/zerzer/">Zerzer</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/12/29/zerzer/" style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
<div class="post-content">
var ap = new APlayer({
element: document.getElementById("
</div>
</div>
<div class="post-more">
<a href="/2023/12/29/zerzer/">
<i class="iconfont iconmore" pointer style=" " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/12/29/zerzer/" style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
</article>
<article class="post reveal" style="flex-direction: row-reverse; ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-12-09</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/12/09/2023.12yuekaofenxi/">2023.12月考分析</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/12/09/2023.12yuekaofenxi/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-content">
2023.12月考分析这次月考是有史以来qs最s的一次月考
只能说一句:太让我失望了!
先s中s的是逆天的分数缩小和分数膨胀,qs你就不能好好搞月考是吧,花两天考试会死是吧,分数这么少考呢。你说考试范围小的分数少点我还理解,刚好反着来,历史
</div>
</div>
<div class="post-more">
<a href="/2023/12/09/2023.12yuekaofenxi/">
<i class="iconfont iconmore" pointer style="float: right; " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/12/09/2023.12yuekaofenxi/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
</article>
<article class="post reveal" style=" ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-11-11</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/11/11/20231111/">2023.11.11中山降雨过程</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/11/11/20231111/" style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
<div class="post-content">
</div>
</div>
<div class="post-more">
<a href="/2023/11/11/20231111/">
<i class="iconfont iconmore" pointer style=" " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/11/11/20231111/" style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
</article>
<article class="post reveal" style="flex-direction: row-reverse; ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-10-11</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/10/11/Happy%20birthday%20to%20myself!/">Happy birthday to myself!</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/10/11/Happy%20birthday%20to%20myself!/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" class="lazyload placeholder" data-srcset="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-content">
Happy birthday to myself!Happy birthday to myself!
Thanks for you!
</div>
</div>
<div class="post-more">
<a href="/2023/10/11/Happy%20birthday%20to%20myself!/">
<i class="iconfont iconmore" pointer style="float: right; " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/10/11/Happy%20birthday%20to%20myself!/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" class="lazyload placeholder" data-srcset="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
</article>
<article class="post reveal" style=" ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-09-16</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/09/16/2023.9.8rain/">2023.9.8中山强降雨过程</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/09/16/2023.9.8rain/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" class="lazyload placeholder" data-srcset="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-content">
2023.9.8中山强降雨过程
7-12时逐小时降水量小榄排涝南站:7时:7.4mm
8时:29.4mm
9时:20.8mm
10时:38.3mm
11时:23.8mm
12时:30.8mm
东升鸡笼水闸站:7时:8.9mm
8
</div>
</div>
<div class="post-more">
<a href="/2023/09/16/2023.9.8rain/">
<i class="iconfont iconmore" pointer style=" " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/09/16/2023.9.8rain/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" class="lazyload placeholder" data-srcset="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
</article>
<article class="post reveal" style="flex-direction: row-reverse; ">
<div class="post-main">
<div class="post-info">
<div class="post-time">
<i class="fas fa-clock" aria-hidden="true"></i>
<span class="post-time">2023-09-16</span>
</div>
<div class="post-title">
<a class="post-title-link" href="/2023/09/16/hexo%20build/">Hexo 博客的艰难部署之旅</a>
</div>
<div class="post-meta">
<div class="post-tags">
<!-- 文章详情页的标签 -->
</div>
<div class="post-categories">
<!-- 文章详情页的分类 -->
</div>
</div>
<div class="post-img-mobile">
<a href="/2023/09/16/hexo%20build/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" class="lazyload placeholder" data-srcset="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-content">
Hexo 博客的艰难部署之旅上周打算换一个博客,就选了曾经装过的Hexo
结果刚安装就出现错误,Hexo一直装不进去
后来发现是npm有问题,下了个cnpm再装才好(装了不下10次)
然后远程到仓库又把分支写错(main -&gt; mas
</div>
</div>
<div class="post-more">
<a href="/2023/09/16/hexo%20build/">
<i class="iconfont iconmore" pointer style="float: right; " title="阅读更多"></i>
</a>
</div>
</div>
<div class="post-img">
<a href="/2023/09/16/hexo%20build/" style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" src="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" class="lazyload placeholder" data-srcset="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
</article>
</section>
<!-- 翻页 -->
</div>
<aside id='l_side'>
<section class="widget side_blogger">
<div class='content'>
<a class='avatar flat-box rectangle' href='/about/'>
<img src='https://pic2.zhimg.com/80/v2-42b72d5ebee4b8d8aa70d9687effe87b_1440w.webp'/>
</a>
<div class='text'>
<h2>青墨书晚风</h2>
<p>会当凌绝顶 一览众山小</p>
<p><span id="jinrishici-sentence">Hexo</span></p>
<script src="https://sdk.jinrishici.com/v2/browser/jinrishici.js" charset="utf-8"></script>
</div>
<div class="social-wrapper">
<a href="mailto:pan.yun.feng@foxmail.com"
class="social fas fa-envelope flat-btn"
target="_blank"
rel="external nofollow noopener noreferrer">
</a>
<a href="https://github.com/Panyunfeng123"
class="social fab fa-github flat-btn"
target="_blank"
rel="external nofollow noopener noreferrer">
</a>
<a href="tencent://AddContact/?fromId=50&amp;fromSubId=1&amp;subcmd=all&amp;uin=3181151691"
class="social fab fa-qq flat-btn"
target="_blank"
rel="external nofollow noopener noreferrer">
</a>
</div>
</div>
</section>
<div class="layout_sticky">
<section class="widget side_recent_post">
<header>
<a style="color: " href='/tags/'><i class="fas fa-book fa-fw" aria-hidden="true"></i><span class='name'>最新文章</span></a>
</header>
<div class='content'>
<!-- hash算法 -->
<div class="aside-list">
<div class="aside-list-item">
<div class="post-img-box">
<a href="/2024/05/04/zatan2405/" class="post-img " style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" class="lazyload placeholder" data-srcset="https://picx.zhimg.com/80/v2-9c50d3af0bc62a0e8b6e89e24c769317_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-date-title">
<div>
<span class="post-date">05-04</span>
</div>
<a class="post-title" href="/2024/05/04/zatan2405/">杂谈</a>
</div>
</div>
<div class="aside-list-item">
<div class="post-img-box">
<a href="/2023/12/29/zerzer/" class="post-img " style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
<div class="post-date-title">
<div>
<span class="post-date">12-29</span>
</div>
<a class="post-title" href="/2023/12/29/zerzer/">Zerzer</a>
</div>
</div>
<div class="aside-list-item">
<div class="post-img-box">
<a href="/2023/12/09/2023.12yuekaofenxi/" class="post-img " style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" class="lazyload placeholder" data-srcset="https://pic4.zhimg.com/80/v2-83ea273b88e119d9615aed0d89aad4ab_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-date-title">
<div>
<span class="post-date">12-09</span>
</div>
<a class="post-title" href="/2023/12/09/2023.12yuekaofenxi/">2023.12月考分析</a>
</div>
</div>
<div class="aside-list-item">
<div class="post-img-box">
<a href="/2023/11/11/20231111/" class="post-img " style="background-size: cover;
background-position: center center;">
<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="">
</a>
</div>
<div class="post-date-title">
<div>
<span class="post-date">11-11</span>
</div>
<a class="post-title" href="/2023/11/11/20231111/">2023.11.11中山降雨过程</a>
</div>
</div>
<div class="aside-list-item">
<div class="post-img-box">
<a href="/2023/10/11/Happy%20birthday%20to%20myself!/" class="post-img " style="background-size: cover;
background-position: center center;">
<img class="lazyload lazyload placeholder" style="width:100%;height:100%;object-fit:cover;" data-src="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" class="lazyload placeholder" data-srcset="https://pic1.zhimg.com/80/v2-03a22891ccba9bccf6424dfd7cbf4be7_1440w.webp" srcset="https://pic1.zhimg.com/v2-cd38920285d125be80b3eb504052c550_b.webp" alt="">
</a>
</div>
<div class="post-date-title">
<div>
<span class="post-date">10-11</span>
</div>
<a class="post-title" href="/2023/10/11/Happy%20birthday%20to%20myself!/">Happy birthday to myself!</a>
</div>
</div>
</div>
</div>
</section>
<section class="widget side_archives">
<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/2024/05/"><span class="card-archive-list-date">五月 2024</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/12/"><span class="card-archive-list-date">十二月 2023</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/11/"><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/10/"><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/09/"><span class="card-archive-list-date">九月 2023</span><span class="card-archive-list-count">2</span></a></li></ul></div>
</section>
<section class="widget side_webinfo">
<header>
<i style="color: " class="fas fa-chart-line fa-fw" aria-hidden="true"></i><span class='name' style="color: ">站点信息</span>
</header>
<div class='content'>
<div class="webinfo">
<div class="webinfo-item">
<div>文章数目:</div>
<div>7 篇</div>
</div>
<div class="webinfo-item">
<div>已运行时间:</div>
<div id="webinfo-runtime-count" publish_date="03/24/2020 21:34:09"></div>
</div>
<script>
var BirthDay = new Date(new Date('2023/09/16'));
var today = new Date();
var timeold = (today.getTime() - BirthDay.getTime());
var daysold = Math.floor(timeold / (24 * 60 * 60 * 1000));
document.getElementById('webinfo-runtime-count').innerHTML = daysold + '';
</script>
<div class="webinfo-item">
<div>本站访客数:</div>
<div><span id="busuanzi_value_site_uv"><i class="fas fa-fan fa-spin fa-fw" aria-hidden="true"></i></span></div>
</div>
<div class="webinfo-item">
<div>本站总访问量:</div>
<div><span id="busuanzi_value_site_pv"><i class="fas fa-fan fa-spin fa-fw" aria-hidden="true"></i></span></div>
</div>
<div class="webinfo-item">
<div>最后活动时间:</div>
<div id="last-update" style="display: none;">Sun May 12 2024 08:10:40 GMT+0800 (中国标准时间)</div>
<div id="last-update-show">2024-05-12 日</div>
</div>
<script>
function timeago(dateTimeStamp) {
var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
var hour = minute * 60;
var day = hour * 24;
var week = day * 7;
var month = day * 30;
var now = new Date().getTime(); //获取当前时间毫秒
var diffValue = now - dateTimeStamp; //时间差
if (diffValue < 0) {
return;
}
var minC = diffValue / minute; //计算时间差的分,时,天,周,月
var hourC = diffValue / hour;
var dayC = diffValue / day;
var weekC = diffValue / week;
var monthC = diffValue / month;
if (monthC >= 1 && monthC <= 3) {
result = " " + parseInt(monthC) + " 月前"
} else if (weekC >= 1 && weekC <= 3) {
result = " " + parseInt(weekC) + " 周前"
} else if (dayC >= 1 && dayC <= 6) {
result = " " + parseInt(dayC) + " 天前"
} else if (hourC >= 1 && hourC <= 23) {
result = " " + parseInt(hourC) + " 小时前"
} else if (minC >= 1 && minC <= 59) {
result = " " + parseInt(minC) + " 分钟前"
} else if (diffValue >= 0 && diffValue <= minute) {
result = "刚刚"
} else {
var datetime = new Date();
datetime.setTime(dateTimeStamp);
var Nyear = datetime.getFullYear();
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
var Nminute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
var Nsecond = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
result = Nyear + "-" + Nmonth + "-" + Ndate
}
return result;
}
var lastUpDate = document.getElementById('last-update').innerHTML;
try {
document.getElementById('last-update-show').innerHTML = timeago(new Date(lastUpDate));
} catch (error) {
document.getElementById('last-update-show').innerHTML = '2024-05-12 日';
}
</script>
</div>
</div>
</section>
</div>
</aside>
</div>
<!-- 花瓣和雪花飘落 -->
<!-- 雪花和花瓣特效 -->
<!-- 灯笼 -->
</main>
</div>
<!-- 页脚 -->
<!-- 底部鱼儿跳动效果,依赖于jquery-->
<div id="j-fish-skip" style=" position: relative;height: 153px;width: auto;"></div>
<script>
var RENDERER = {
POINT_INTERVAL: 5,
FISH_COUNT: 3,
MAX_INTERVAL_COUNT: 50,
INIT_HEIGHT_RATE: .5,
THRESHOLD: 50,
FISH_COLOR: '',
init: function () {
this.setFishColor(); this.setParameters(), this.reconstructMethods(), this.setup(), this.bindEvent(), this.render()
},
setFishColor: function () {
let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
if (isDark) {
this.FISH_COLOR = '#222'; // 暗黑色,有时间把这整成一个变量
} else {
this.FISH_COLOR = '' || 'rgba(66, 185, 133, 0.8)';
}
},
setParameters: function () {
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 = []
},
createSurfacePoints: function () {
var t = Math.round(this.width / this.POINT_INTERVAL);
this.pointInterval = this.width / (t - 1), this.points.push(new SURFACE_POINT(this, 0));
for (var i = 1; i < t; i++) {
var e = new SURFACE_POINT(this, i * this.pointInterval),
h = this.points[i - 1];
e.setPreviousPoint(h), h.setNextPoint(e), this.points.push(e)
}
},
reconstructMethods: function () {
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)
},
setup: function () {
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({
width: this.width,
height: this.height
}), this.reverse = !1, this.fishes.push(new FISH(this)), this.createSurfacePoints()
},
watchWindowSize: function () {
this.clearTimer(), this.tmpWidth = this.$window.width(), this.tmpHeight = this.$window.height(), this.watchIds.push(setTimeout(this.jdugeToStopResize, this.WATCH_INTERVAL))
},
clearTimer: function () {
for (; this.watchIds.length > 0;) clearTimeout(this.watchIds.pop())
},
jdugeToStopResize: function () {
var t = this.$window.width(),
i = this.$window.height(),
e = t == this.tmpWidth && i == this.tmpHeight;
this.tmpWidth = t, this.tmpHeight = i, e && this.setup()
},
bindEvent: function () {
this.$window.on("resize", this.watchWindowSize), this.$container.on("mouseenter", this.startEpicenter), this.$container.on("mousemove", this.moveEpicenter)
},
getAxis: function (t) {
var i = this.$container.offset();
return {
x: t.clientX - i.left + this.$window.scrollLeft(),
y: t.clientY - i.top + this.$window.scrollTop()
}
},
startEpicenter: function (t) {
this.axis = this.getAxis(t)
},
moveEpicenter: function (t) {
var i = this.getAxis(t);
this.axis || (this.axis = i), this.generateEpicenter(i.x, i.y, i.y - this.axis.y), this.axis = i
},
generateEpicenter: function (t, i, e) {
if (!(i < this.height / 2 - this.THRESHOLD || i > this.height / 2 + this.THRESHOLD)) {
var h = Math.round(t / this.pointInterval);
h < 0 || h >= this.points.length || this.points[h].interfere(i, e)
}
},
reverseVertical: function () {
this.reverse = !this.reverse;
for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].reverseVertical()
},
controlStatus: function () {
for (var t = 0, i = this.points.length; t < i; t++) this.points[t].updateSelf();
for (t = 0, i = this.points.length; t < i; t++) this.points[t].updateNeighbors();
this.fishes.length < this.fishCount && 0 == --this.intervalCount && (this.intervalCount = this.MAX_INTERVAL_COUNT, this.fishes.push(new FISH(this)))
},
render: function () {
requestAnimationFrame(this.render), this.controlStatus(), this.context.clearRect(0, 0, this.width, this.height), this.context.fillStyle = this.FISH_COLOR;
for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].render(this.context);
this.context.save(), this.context.globalCompositeOperation = "xor", this.context.beginPath(), this.context.moveTo(0, this.reverse ? 0 : this.height);
for (t = 0, i = this.points.length; t < i; t++) this.points[t].render(this.context);
this.context.lineTo(this.width, this.reverse ? 0 : this.height), this.context.closePath(), this.context.fill(), this.context.restore()
}
},
SURFACE_POINT = function (t, i) {
this.renderer = t, this.x = i, this.init()
};
SURFACE_POINT.prototype = {
SPRING_CONSTANT: .03,
SPRING_FRICTION: .9,
WAVE_SPREAD: .3,
ACCELARATION_RATE: .01,
init: function () {
this.initHeight = this.renderer.height * this.renderer.INIT_HEIGHT_RATE, this.height = this.initHeight, this.fy = 0, this.force = {
previous: 0,
next: 0
}
},
setPreviousPoint: function (t) {
this.previous = t
},
setNextPoint: function (t) {
this.next = t
},
interfere: function (t, i) {
this.fy = this.renderer.height * this.ACCELARATION_RATE * (this.renderer.height - this.height - t >= 0 ? -1 : 1) * Math.abs(i)
},
updateSelf: function () {
this.fy += this.SPRING_CONSTANT * (this.initHeight - this.height), this.fy *= this.SPRING_FRICTION, this.height += this.fy
},
updateNeighbors: function () {
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))
},
render: function (t) {
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)
}
};
var FISH = function (t) {
this.renderer = t, this.init()
};
FISH.prototype = {
GRAVITY: .4,
init: function () {
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
},
getRandomValue: function (t, i) {
return t + (i - t) * Math.random()
},
reverseVertical: function () {
this.isOut = !this.isOut, this.ay *= -1
},
controlStatus: function (t) {
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()
},
render: function (t) {
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(), t.restore(), this.controlStatus(t)
}
}, $(function () {
RENDERER.init()
$('.dark').click(function () {
setTimeout(() => {
RENDERER.setFishColor();
RENDERER.context.fill();
});
})
});
</script>
<div class="footer bg-color">
<div class="footer-main">
<div class="link">
</div>
<div class="footer-copyright">
<p>Copyright © 2023 - 2023 <a target="_blank" rel="noopener" href="https://github.com/Panyunfeng123">Panyunfeng123</a> | Powered by <a target="_blank" rel="noopener" href="https://hexo.io/zh-cn/docs/">Hexo</a> | Theme <a target="_blank" rel="noopener" href="https://github.com/yuang01/theme">Bamboo</a> </p>
</div>
<!-- 不蒜子统计 -->
<!-- 不蒜子统计 -->
<span id="busuanzi_container_site_pv">
<i class="fas fa-eye" aria-hidden="true"></i>本站总访问量:<span id="busuanzi_value_site_pv"></span>
</span>
<span class="post-meta-divider">|</span>
<span id="busuanzi_container_site_uv" style='display:none'>
<i class="fas fa-users" aria-hidden="true"></i>本站访客数:<span id="busuanzi_value_site_uv"></span>
</span>
<div class="footer-custom">
</div>
</div>
</div>
<!-- 渲染暗黑按钮 -->
<div class="dark">
<div class="dark-content">
<i class="fas fa-moon" aria-hidden="true"></i>
<!-- <span>关灯</span> -->
</div>
</div>
<script>
$(function() {
let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
if (isDark) {
$(".dark-content").replaceWith(
`
<div class='dark-content'>
<i class="fas fa-lightbulb" aria-hidden="true"></i>
</div>
`
);
}
$('.dark').click(function() {
if ($(document.body).is('.darkModel')) {
$(document.body).removeClass('darkModel');
localStorage.setItem('dark', false);
$(".dark-content").replaceWith(
`
<div class='dark-content'>
<i class="fas fa-moon" aria-hidden="true"></i>
</div>
`
);
} else {
$(document.body).addClass('darkModel');
localStorage.setItem('dark', true);
$(".dark-content").replaceWith(
`
<div class='dark-content'>
<i class="fas fa-lightbulb" aria-hidden="true"></i>
</div>
`
);
}
})
})
</script>
<!-- 渲染回到顶部按钮 -->
<div class="goTop top-btn-color" pointer>
<i class="fas fa-arrow-up" aria-hidden="true"></i>
</div>
<script src="/js/goTop.js"></script>
<!-- 渲染左下角音乐播放器 -->
<link rel="stylesheet" href="/js/aplayer/APlayer@1.10.1.min.css">
<style>
.aplayer .aplayer-lrc p {
font-size: 12px;
font-weight: 700;
line-height: 16px !important;
}
.aplayer .aplayer-lrc p.aplayer-lrc-current {
font-size: 15px;
color: #42b983;
}
.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
left: -66px !important;
}
.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
left: 0px !important;
}
</style>
<meting-js
class=""
server="netease"
type="song"
id="38019092"
fixed='true'
autoplay='false'
theme='#42b983'
loop='all'
order='random'
preload='auto'
volume='0.7'
list-folded='true'
>
</meting-js>
<!-- <style>
#aplayer {
position: fixed;
left: 0;
bottom: 300px;
}
</style> -->
<script src="https://unpkg.com/aplayer@1.10.1/dist/APlayer.min.js"></script>
<script src="https://unpkg.com/meting@2/dist/Meting.min.js"></script>
<!-- 图片放大 -->
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.js"></script>
<!-- 百度解析 -->
<!-- Baidu Analytics -->
<!-- Baidu Push -->
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<!-- 背景彩带 -->
<script type="text/javascript" size="100" alpha='0.4' zIndex="-1" src="/js/ribbon.min.js"></script>
<script src="/js/utils/index.js"></script>
<script src="/js/app.js"></script>
<!-- 文章目录所需js -->
<!-- <link href="/js/tocbot/tocbot.css" rel="stylesheet">
<script src="/js/tocbot/tocbot.min.js"></script> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.css">
<script>
var headerEl = 'h2, h3, h4', //headers
content = '.post-detail',//文章容器
idArr = {}; //标题数组以确定是否增加索引id
//add #id
var option = {
// Where to render the table of contents.
tocSelector: '.toc',
// Where to grab the headings to build the table of contents.
contentSelector: content,
// Which headings to grab inside of the contentSelector element.
headingSelector: headerEl,
scrollSmooth: true,
scrollSmoothOffset: -70,
// headingsOffset: -($(window).height() * 0.4 - 45),
headingsOffset: -($(window).height() * 0.4 - 70),
// positionFixedSelector: '.toc-main',
// positionFixedClass: 'is-position-fixed',
fixedSidebarOffset: 'auto',
activeLinkClass: 'is-active-link',
orderedList: true,
collapseDepth: 20,
// onClick: function (e) {},
}
if ($('.toc').length > 0) {
$(content).children(headerEl).each(function () {
//去除空格以及多余标点
var headerId = $(this).text().replace(/[\s|\~|`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\||\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\:|\,|\。]/g, '');
headerId = headerId.toLowerCase();
if (idArr[headerId]) {
//id已经存在
$(this).attr('id', headerId + '-' + idArr[headerId]);
idArr[headerId]++;
}
else {
//id未存在
idArr[headerId] = 1;
$(this).attr('id', headerId);
}
});
document.addEventListener("DOMContentLoaded", function () {
tocbot.init(option);
mobileTocClick();
});
}
window.tocScrollFn = function () {
return bamboo.throttle(function () {
findHeadPosition();
}, 100)()
}
window.addEventListener('scroll', tocScrollFn);
const findHeadPosition = function (top) {
if ($('.toc-list').length <= 0) {
return false;
}
setTimeout(() => { // or DOMContentLoaded
autoScrollToc();
}, 0);
}
const autoScrollToc = function () {
const $activeItem = document.querySelector('.is-active-link');
const $cardToc = document.querySelector('.toc-content');
const activePosition = $activeItem.getBoundingClientRect().top
const sidebarScrollTop = $cardToc.scrollTop
if (activePosition > (document.documentElement.clientHeight - 100)) {
$cardToc.scrollTop = sidebarScrollTop + 150
}
if (activePosition < 150) {
$cardToc.scrollTop = sidebarScrollTop - 150
}
}
document.addEventListener('pjax:send', function () {
if ($('.toc').length) {
tocbot.destroy();
}
});
document.addEventListener('pjax:complete', function () {
if ($('.toc').length) {
tocbot.init(option);
mobileTocClick();
}
});
// 手机端toc按钮点击出现目录
const mobileTocClick = function () {
const $cardTocLayout = document.getElementsByClassName('side_toc')[0];
const $cardToc = $cardTocLayout.getElementsByClassName('toc-content')[0];
let right = '45px';
if (window.innerWidth >= 551 && window.innerWidth <= 992) {
right = '100px'
}
const mobileToc = {
open: () => {
$cardTocLayout.style.cssText = 'animation: toc-open .3s; opacity: 1; right: ' + right
},
close: () => {
$cardTocLayout.style.animation = 'toc-close .2s'
setTimeout(() => {
$cardTocLayout.style.cssText = "opacity:''; animation: ''; right: ''"
}, 100)
}
}
document.getElementById('toc-mobile-btn').addEventListener('click', () => {
if (window.getComputedStyle($cardTocLayout).getPropertyValue('opacity') === '0') mobileToc.open()
else mobileToc.close()
})
$cardToc.addEventListener('click', (e) => {
if (window.innerWidth < 992) { // 小于992px的时候
mobileToc.close()
}
})
}
</script>
<style>
/* .is-position-fixed {
position: sticky !important;
top: 74px;
}
.toc-main ul {
counter-reset: show-list;
}
.toc-main ul li::before {
content: counter(item)".";
display: block;
position: absolute;
left: 12px;
top: 0;
} */
</style>
<!-- 设置导航背景 -->
<script>
let setHeaderClass = () => {
const nav = $('#navHeader');
const navTop = nav.outerHeight();
const winTop = $(window).scrollTop();
if(winTop > navTop) {
nav.addClass('header-bg-color');
}
else {
nav.removeClass('header-bg-color');
}
};
let scrollCollect = () => {
return bamboo.throttle(function (e) {
setHeaderClass();
}, 200)()
}
let initHeaderBg = () => {
setHeaderClass();
}
setHeaderClass();
window.addEventListener('scroll', scrollCollect);
document.addEventListener('pjax:send', function () {
window.removeEventListener('scroll', scrollCollect)
})
document.addEventListener('pjax:complete', function () {
window.addEventListener('scroll', scrollCollect);
setHeaderClass();
})
</script>
<!-- 渲染issues标签里的内容 -->
<script>
function loadIssuesJS() {
if ($(".post-detail").find(".issues-api").length == 0) {
return;
}
loadScript('/js/issues/index.js');
};
$(function () {
loadIssuesJS();
});
document.addEventListener('pjax:complete', function () {
if (typeof IssuesAPI == "undefined") {
loadIssuesJS();
}
})
</script>
<!-- 渲染远程json加载的图片标签(getPhotoOnline)里的内容 -->
<script>
function loadPhotoOnlineJS() {
if ($(".post-detail").find(".getJsonPhoto-api").length == 0) {
return;
}
loadScript('/js/getPhotoOnline/index.js');
};
$(function () {
loadPhotoOnlineJS();
});
document.addEventListener('pjax:complete', function () {
if (typeof getPhotoJson == "undefined") {
loadPhotoOnlineJS();
}
})
</script>
<!-- 渲染远程json加载的talk标签(getTalkOnline)里的内容 -->
<script>
function loadTalkOnlineJS() {
if ($(".post-detail").find(".getJsonTalk-api").length == 0) {
return;
}
loadScript('https://cdnjs.cloudflare.com/ajax/libs/waterfall.js/1.0.2/waterfall.min.js'); // 瀑布流插件,https://raphamorim.io/waterfall.js/
loadScript('/js/getTalkOnline/index.js');
};
$(function () {
loadTalkOnlineJS();
});
document.addEventListener('pjax:complete', function () {
if (typeof getTalkJson == "undefined") {
loadTalkOnlineJS();
}
})
</script>
<!-- 渲染远程json加载的site-card标签(getSiteOnline)里的内容 -->
<script>
function loadSiteOnlineJS() {
if ($(".post-detail").find(".getJsonSite-api").length == 0) {
return;
}
loadScript('/js/getSiteOnline/index.js');
};
$(function () {
loadSiteOnlineJS();
});
document.addEventListener('pjax:complete', function () {
if (typeof getSiteJson == "undefined") {
loadSiteOnlineJS();
}
})
</script>
<!-- 输入框打字特效 -->
<!-- 输入框打字特效 -->
<script src="/js/activate-power-mode.js"></script>
<script>
POWERMODE.colorful = true; // 打开随机颜色特效
POWERMODE.shake = false; // 关闭输入框抖动
document.body.addEventListener('input', POWERMODE);//监听打字事件
</script>
<!-- markdown代码一键复制功能 -->
<link rel="stylesheet" href="https://unpkg.com/v-plugs-ayu/lib/ayu.css">
<script src="https://unpkg.com/v-plugs-ayu/lib/ayu.umd.min.js"></script>
<script src="/js/clipboard/clipboard.min.js"></script>
<div id="appCopy">
</div>
<script data-pjax>
var vm = new Vue({
el: '#appCopy',
data: {
},
computed: {
},
mounted() {
const that = this;
var copy = '复制';
/* code */
var initCopyCode = function () {
var copyHtml = '';
copyHtml += '<button class="btn-copy" data-clipboard-snippet="" style="position:absolute;top:0;right:0;z-index:1;">';
copyHtml += '<i class="fas fa-copy"></i><span>' + copy + '</span>';
copyHtml += '</button>';
$(".post-detail pre").not('.gutter pre').wrap("<div class='codeBox' style='position:relative;width:100%;'></div>")
$(".post-detail pre").not('.gutter pre').before(copyHtml);
new ClipboardJS('.btn-copy', {
target: function (trigger) {
return trigger.nextElementSibling;
}
});
}
initCopyCode();
$('.btn-copy').unbind('click').bind('click', function () {
doSomething();
})
$(document).unbind('keypress').bind('keypress', function (e) {
if (e.ctrlKey && e.keyCode == 67) {
doSomething();
}
})
function doSomething() {
that.$notify({
title: "成功",
content: "代码已复制,请遵守相关授权协议。",
type: 'success'
})
}
},
methods: {
},
created() { }
})
</script>
<!-- 图片懒加载 -->
<script defer src="https://unpkg.com/vanilla-lazyload@17.1.0/dist/lazyload.min.js"></script>
<script>
// https://www.npmjs.com/package/vanilla-lazyload
// Set the options globally
// to make LazyLoad self-initialize
window.lazyLoadOptions = {
elements_selector: ".lazyload",
threshold: 0
};
// Listen to the initialization event
// and get the instance of LazyLoad
window.addEventListener(
"LazyLoad::Initialized",
function (event) {
window.lazyLoadInstance = event.detail.instance;
},
false
);
document.addEventListener('DOMContentLoaded', function () {
lazyLoadInstance.update();
});
document.addEventListener('pjax:complete', function () {
lazyLoadInstance.update();
});
</script>
<!-- 卡片滚动动画 -->
<!-- 评论所需js -->
<script type="text/javascript">
var utteranceCommon = {};
function check_utterance() {
let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
if (isDark) {
utteranceCommon.Theme = 'github-dark';
} else {
utteranceCommon.Theme = 'github-light';
}
return document.getElementById("gitment-container");
}
comment_el = '#gitment-container';
load_utterance = function () {
if ($(comment_el).length) {
// 匿名函数,防止污染全局变量
const HEAD = check_utterance();
var utterances = document.createElement('script');
utterances.type = 'text/javascript';
utterances.async = true;
utterances.setAttribute('issue-term', 'pathname')
utterances.setAttribute('theme', utteranceCommon.Theme)
utterances.setAttribute('repo', '')
utterances.crossorigin = 'anonymous';
utterances.src = 'https://utteranc.es/client.js';
// content 是要插入评论的地方
document.getElementById('gitment-container').appendChild(utterances);
}
}
function dark_utterance() {
const HEAD = check_utterance();
if (!HEAD) return;
const message = {
type: 'set-theme',
theme: utteranceCommon.Theme
};
const utteranceIframe = document.querySelector('iframe');
utteranceIframe.contentWindow.postMessage(message, 'https://utteranc.es');
}
$(document).ready(load_utterance);
document.addEventListener('pjax:complete', function () {
load_utterance();
});
$('.dark').click(function () {
setTimeout(() => {
dark_utterance();
});
})
</script>
<style>
.utterances {
max-width: inherit !important;
}
</style>
<!-- 鼠标点击特效 -->
<!-- 爱心点击 -->
<canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 999; pointer-events: none;" ></canvas>
<script src="//cdn.bootcss.com/animejs/2.2.0/anime.min.js"></script>
<script src="/js/cursor/explosion.min.js"></script>
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" data-pjax></script>
<!-- 轮播图标签 -->
<script>
var bambooSwiperTag = {};
function load_swiper() {
if (!document.querySelectorAll(".post-swiper-container")[0]) return;
loadCSS("https://unpkg.com/swiper@6/swiper-bundle.min.css")
loadScript("https://unpkg.com/swiper@6/swiper-bundle.min.js").then(() => {
pjax_swiper();
});
}
load_swiper();
function pjax_swiper() {
bambooSwiperTag.swiper = new Swiper('.post-swiper-container', {
slidesPerView: 'auto',
spaceBetween: 8,
centeredSlides: true,
loop: true,
autoplay: true ? {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false,
} : false,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on:{
init: function(){
swiperAnimateCache(this); //隐藏动画元素
swiperAnimate(this); //初始化完成开始动画
},
slideChangeTransitionEnd: function(){
swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
//this.slides.eq(this.activeIndex).find('.ani').removeClass('ani'); 动画只展现一次,去除ani类名
}
}
});
}
document.addEventListener('pjax:complete', function () {
if (!document.querySelectorAll(".post-swiper-container")[0]) return;
if (typeof bambooSwiperTag.swiper === "undefined") {
load_swiper();
} else {
pjax_swiper();
}
});
</script>
<!-- pjax -->
<!-- pjax -->
<script src="/js/pjax@0.2.8/index.js"></script>
<!-- 样式位于:source/css/_third-party/pjaxanimate.styl -->
<div class="pjax-animate">
<div class="loading-circle"><div id="loader-circle"></div></div>
<script>
window.ShowLoading = function() {
$(".loading-circle").css("display", "block");
};
window.HideLoading = function() {
$(".loading-circle").css("display", "none");
}
</script>
<script>
document.addEventListener('pjax:complete', function () {
window.HideLoading();
})
document.addEventListener('pjax:send', function () {
window.ShowLoading();
})
document.addEventListener('pjax:error', function () {
window.HideLoading();
})
</script>
</div>
<script>
var pjax = new Pjax({
elements: 'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([no-pjax])', // 拦截正常带链接的 a 标签
selectors: ["#pjax-container","title"], // 根据实际需要确认重载区域
cacheBust: false, // url 地址追加时间戳,用以避免浏览器缓存
timeout: 5000
});
document.addEventListener('pjax:send', function (e) {
try {
var currentUrl = window.location.pathname;
var targetUrl = e.triggerElement.href;
var banUrl = [""];
if (banUrl[0] != "") {
banUrl.forEach(item => {
if(currentUrl.indexOf(item) != -1 || targetUrl.indexOf(item) != -1) {
window.location.href = targetUrl;
}
});
}
} catch (error) {}
$(window).unbind('resize');
$(window).unbind('scroll');
$(document).unbind('scroll');
$(document).unbind('click');
$('body').unbind('click');
})
document.addEventListener('pjax:complete', function () {
$('script[data-pjax], .pjax-reload script').each(function () {
$(this).parent().append($(this).remove());
});
});
document.addEventListener('pjax:error', function (e) {
window.location.href = e.triggerElement.href;
})
// 刷新不从顶部开始
document.addEventListener("DOMContentLoaded", function () {
history.scrollRestoration = 'auto';
})
</script>
</body>
</html>
1
https://gitee.com/panyunfeng123/panyunfeng.gitee.com.git
git@gitee.com:panyunfeng123/panyunfeng.gitee.com.git
panyunfeng123
panyunfeng.gitee.com
panyunfeng.gitee.com
master

搜索帮助