├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README_CN.md ├── _config.yml ├── languages ├── default.yml ├── jp.yml ├── zh-CN.yml └── zh-HK.yml ├── layout ├── 404.ejs ├── _partial │ ├── back-top.ejs │ ├── background.ejs │ ├── baidu-analytics.ejs │ ├── baidu-push.ejs │ ├── bg-cover-content.ejs │ ├── bg-cover.ejs │ ├── bg-video.ejs │ ├── changyan.ejs │ ├── codeblock.ejs │ ├── cover-style.ejs │ ├── disqus.ejs │ ├── footer.ejs │ ├── gitalk.ejs │ ├── github-link.ejs │ ├── gitment.ejs │ ├── google-analytics.ejs │ ├── head.ejs │ ├── header.ejs │ ├── index-cover.ejs │ ├── livere.ejs │ ├── main-style.ejs │ ├── mobile-nav.ejs │ ├── navigation.ejs │ ├── paging.ejs │ ├── post-cover.ejs │ ├── post-detail-toc.ejs │ ├── post-detail.ejs │ ├── post-statis.ejs │ ├── post-style.ejs │ ├── prev-next.ejs │ ├── reprint-statement.ejs │ ├── reward-style.ejs │ ├── reward.ejs │ ├── search.ejs │ ├── share.ejs │ ├── social-link.ejs │ ├── twikoo.ejs │ ├── valine.ejs │ └── waline.ejs ├── _widget │ ├── artitalk.ejs │ ├── category-cloud.ejs │ ├── category-radar.ejs │ ├── day-night.ejs │ ├── dream.ejs │ ├── music.ejs │ ├── musics.ejs │ ├── my-gallery.ejs │ ├── my-projects.ejs │ ├── my-skills.ejs │ ├── post-calendar.ejs │ ├── post-charts.ejs │ ├── recommend.ejs │ ├── tag-cloud.ejs │ ├── tag-wordcloud.ejs │ └── video.ejs ├── about.ejs ├── archive.ejs ├── bb.ejs ├── categories.ejs ├── category.ejs ├── contact.ejs ├── friends.ejs ├── galleries.ejs ├── gallery.ejs ├── index.ejs ├── layout.ejs ├── movies.ejs ├── musics.ejs ├── post.ejs ├── tag.ejs └── tags.ejs ├── scripts └── tags │ ├── button.js │ ├── index.js │ └── note.js └── source ├── css ├── barrager.css ├── bb.css ├── dark.css ├── gallery.css ├── gitment.css ├── indexcover.css ├── matery.css ├── my-gitalk.css ├── my.css ├── post.css └── reward.css ├── favicon.png ├── js ├── crypto-js.js ├── gallery-encrypt.js ├── jquery.barrager.js ├── jquery.pjax.js ├── matery.js ├── search.js └── tw_cn.js ├── libs ├── animate │ └── animate.min.css ├── aos │ ├── aos.css │ └── aos.js ├── aplayer │ ├── APlayer.min.css │ ├── APlayer.min.js │ └── Meting.min.js ├── awesome │ ├── css │ │ ├── all.css │ │ └── all.min.css │ └── webfonts │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff2 │ │ ├── fa-v4compatibility.ttf │ │ └── fa-v4compatibility.woff2 ├── background │ ├── canvas-nest.js │ ├── ribbon-dynamic.js │ ├── ribbon-refresh.min.js │ └── ribbon.min.js ├── codeBlock │ ├── codeBlockFuction.js │ ├── codeCopy.js │ ├── codeLang.js │ └── codeShrink.js ├── cryptojs │ └── crypto-js.min.js ├── dplayer │ ├── DPlayer.min.css │ └── DPlayer.min.js ├── echarts │ └── echarts.min.js ├── fancybox │ ├── fancybox.js │ └── jquery.fancybox.css ├── gitalk │ ├── gitalk.css │ └── gitalk.min.js ├── gitment │ ├── gitment-default.css │ └── gitment.js ├── instantpage │ └── instantpage.js ├── jqcloud │ ├── jqcloud-1.0.4.min.js │ └── jqcloud.css ├── jquery │ └── jquery-3.6.0.min.js ├── justifiedGallery │ ├── justifiedGallery.min.css │ └── justifiedGallery.min.js ├── lightGallery │ ├── css │ │ └── lightgallery.min.css │ ├── fonts │ │ ├── lg.svg │ │ ├── lg.ttf │ │ └── lg.woff │ ├── img │ │ ├── loading.gif │ │ ├── video-play.png │ │ ├── vimeo-play.png │ │ └── youtube-play.png │ └── js │ │ └── lightgallery-all.min.js ├── masonry │ └── masonry.pkgd.min.js ├── materialize │ ├── materialize.min.css │ └── materialize.min.js ├── mermaid │ ├── mermaid.js │ ├── mermaid.min.css │ └── mermaid.min.js ├── minivaline │ └── MiniValine.js ├── others │ ├── TencentCaptcha.js │ ├── busuanzi.pure.mini.js │ ├── clicklove.js │ ├── sakura-half.js │ ├── sakura-reduce.js │ ├── sakura-small.js │ ├── sakura.js │ ├── snow.js │ └── star.js ├── prism │ ├── prism.min.css │ └── prism.min.js ├── scrollprogress │ └── scrollProgress.min.js ├── share │ ├── css │ │ └── share.min.css │ ├── fonts │ │ ├── iconfont.eot │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ └── iconfont.woff │ └── js │ │ ├── jquery.share.min.js │ │ └── social-share.min.js ├── tocbot │ ├── tocbot.css │ └── tocbot.min.js ├── twikoo │ ├── twikoo.all.min.js │ └── twikoo.all.min.js.LICENSE.txt ├── typed │ └── typed.js ├── valine │ ├── Valine.min.js │ └── av-min.js └── waline │ └── Waline.min.js └── medias ├── avatar.jpg ├── banner ├── 0.jpg ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg └── 6.jpg ├── barrager ├── 0.png ├── 1.png ├── 2.png └── close.png ├── comment_bg.png ├── cover.jpg ├── featureimages ├── 0.jpg ├── 1.jpg ├── 10.jpg ├── 11.jpg ├── 12.jpg ├── 13.jpg ├── 14.jpg ├── 15.jpg ├── 16.jpg ├── 17.jpg ├── 18.jpg ├── 19.jpg ├── 2.jpg ├── 20.jpg ├── 21.jpg ├── 22.jpg ├── 23.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg ├── 6.jpg ├── 7.jpg ├── 8.jpg └── 9.jpg ├── icp.png ├── images ├── 01.jpg ├── 02.jpg └── 03.jpg ├── logo.png └── reward ├── alipay.jpg └── wechat.png /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea -------------------------------------------------------------------------------- /languages/default.yml: -------------------------------------------------------------------------------- 1 | posts: Posts 2 | category: Category 3 | categories: Categories 4 | tag: Tag 5 | tags: Tags 6 | archives: Archives 7 | about: About 8 | contact: Contact 9 | friends: Friends 10 | galleries: galleries 11 | startRead: Start 12 | recommendedPosts: Recommended Posts 13 | publishDate: Publish Date 14 | updateDate: Update Date 15 | readCount: Read Count 16 | wordCount: Word Count 17 | readTimes: Read Times 18 | Minutes: Min 19 | readMore: Read more 20 | toc: TOC 21 | curr: Current 22 | prev: Previous 23 | next: Next 24 | search: Search 25 | searchTip: Please enter a search keyword 26 | postTagTitle: Post Tags 27 | postCategoryTitle: Post Categories 28 | categoryRadarTitle: Post Categories Radar Chart 29 | categoryNumber: Number of Categories 30 | categoryEmptyTip: Your posts has no categories information yet. 31 | postCharts: Post Charts 32 | postPublishChart: Post Publish Chart 33 | categoriesChart: Categories Chart 34 | top10TagsChart: TOP10 Tags Chart 35 | postsNumberName: Number of posts 36 | maximum: Maximum 37 | minimum: Minimum 38 | average: Average 39 | myProjects: My Projects 40 | mySkills: My Skills 41 | otherSkills: Other Skills 42 | gallery: Gallery 43 | notag: No tag 44 | from: From 45 | reprint: Reprint policy 46 | author: Author 47 | link: Link 48 | use: All articles in this blog are used except for special statements 49 | licensed: reprint policy. If reproduced, please indicate source 50 | cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.zh 51 | cc_by_name: CC BY 4.0 52 | cc_by_nd_url: https://creativecommons.org/licenses/by-nd/4.0/deed.zh 53 | cc_by_nd_name: CC BY-ND 4.0 54 | cc_by_sa_url: https://creativecommons.org/licenses/by-sa/4.0/deed.zh 55 | cc_by_sa_name: CC BY-SA 4.0 56 | cc_by_nc_url: https://creativecommons.org/licenses/by-nc/4.0/deed.zh 57 | cc_by_nc_name: CC BY-NC 4.0 58 | cc_by_nc_nd_url: https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh 59 | cc_by_nc_nd_name: CC BY-NC-ND 4.0 60 | cc_by_nc_sa_url: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh 61 | cc_by_nc_sa_name: CC BY-NC-SA 4.0 62 | cc_0_url: https://creativecommons.org/publicdomain/zero/1.0/ 63 | toTheExtentPossibleUnderLaw: To the extent possible under law, 64 | hasWaivedAllCopyrightAndRelatedOrNeighboringRightsTo: has waived all copyright and related or neighboring rights to 65 | workPublishedFrom: ". This work is published from:" 66 | cc_0_country: United States. 67 | cc_0_content: US 68 | noreprint: This article is not allowed to reprint. 69 | paycontact: Please contact the author 70 | payreprint: to pay for reprinting. 71 | pleaseFollowReprintPolicy: Copied successfully, please follow the reprint policy of this article 72 | checkPolicy: more 73 | siteTotalWords: Total Words 74 | siteTotalVisits: Total visits 75 | siteTotalVisitors: Total visitors 76 | Index: Index 77 | Tags: Tags 78 | Categories: Categories 79 | Archives: Archives 80 | About: About 81 | Contact: Contact 82 | Friends: Friends 83 | -------------------------------------------------------------------------------- /languages/jp.yml: -------------------------------------------------------------------------------- 1 | posts: 文章 2 | category: 分類 3 | categories: 分類 4 | tag: タグ 5 | tags: タグ 6 | archives: アーカイブ 7 | about: 自己紹介 8 | galleries: 写真 9 | contact: 問合せ 10 | friends: 友達 11 | startRead: 読み始める 12 | recommendedPosts: お勧め 13 | publishDate: 初回発表日 14 | updateDate: 更新日 15 | readCount: 閲覧回数 16 | wordCount: 文章文字数 17 | readTimes: 閲覧所要時間 18 | Minutes: 分 19 | readMore: さらに読む 20 | toc: 目次 21 | curr: 本ページ 22 | prev: 前へ 23 | next: 次へ 24 | search: 検索 25 | searchTip: キーワードを入力してください。 26 | postTagTitle: 文章タグ 27 | postCategoryTitle: 文章分類 28 | categoryRadarTitle: 文章分類 29 | categoryNumber: 文章分類数量 30 | categoryEmptyTip: まだ分類されてなさそうです。 31 | postCharts: 文章統計データ 32 | postPublishChart: 文章発表統計データ 33 | categoriesChart: 文章分類統計データ 34 | top10TagsChart: TOP10 タグ統計データ 35 | postsNumberName: 文章の数 36 | maximum: 最大値 37 | minimum: 最小値 38 | average: 平均値 39 | myProjects: 私のプロジェクト 40 | mySkills: 私のスキル 41 | otherSkills: そのスキル 42 | gallery: アルバム 43 | notag: タグ無 44 | from: 著作権 45 | reprint: CopyRight宣言 46 | author: WriteBy 47 | link: 文章リンク 48 | use: 本サイトに掲載された内容は下記に従う 49 | licensed: 著作権。 50 | cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.zh 51 | cc_by_name: CC BY 4.0 52 | cc_by_nd_url: https://creativecommons.org/licenses/by-nd/4.0/deed.zh 53 | cc_by_nd_name: CC BY-ND 4.0 54 | cc_by_sa_url: https://creativecommons.org/licenses/by-sa/4.0/deed.zh 55 | cc_by_sa_name: CC BY-SA 4.0 56 | cc_by_nc_url: https://creativecommons.org/licenses/by-nc/4.0/deed.zh 57 | cc_by_nc_name: CC BY-NC 4.0 58 | cc_by_nc_nd_url: https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh 59 | cc_by_nc_nd_name: CC BY-NC-ND 4.0 60 | cc_by_nc_sa_url: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh 61 | cc_by_nc_sa_name: CC BY-NC-SA 4.0 62 | cc_0_url: https://creativecommons.org/publicdomain/zero/1.0/deed.zh 63 | toTheExtentPossibleUnderLaw: 法律禁止されない限り 64 | hasWaivedAllCopyrightAndRelatedOrNeighboringRightsTo: 一切の権利を放棄すること 65 | workPublishedFrom: 。発表: 66 | cc_0_country: 日本。 67 | cc_0_content: JP 68 | noreprint: 転載禁止 69 | paycontact: 著者を連絡 70 | payreprint: 有料転載 71 | pleaseFollowReprintPolicy: コピー成功 72 | checkPolicy: 査読 73 | siteTotalWords: トータル文字数 74 | siteTotalVisits: アクセス回数 75 | siteTotalVisitors: アクセス人数 76 | Index: ホーム 77 | Tags: タグ 78 | Categories: 分類 79 | Archives: アーカイブ 80 | About: 自己紹介 81 | Contact: 問合せ 82 | Friends: 友達 83 | -------------------------------------------------------------------------------- /languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | posts: 文章 2 | category: 分类 3 | categories: 分类 4 | tag: 标签 5 | tags: 标签 6 | archives: 归档 7 | about: 关于 8 | galleries: 相册 9 | contact: 留言板 10 | friends: 友情链接 11 | startRead: 开始阅读 12 | recommendedPosts: 推荐文章 13 | publishDate: 发布日期 14 | updateDate: 更新日期 15 | readCount: 阅读次数 16 | wordCount: 文章字数 17 | readTimes: 阅读时长 18 | Minutes: 分 19 | readMore: 阅读更多 20 | toc: 目录 21 | curr: 本篇 22 | prev: 上一篇 23 | next: 下一篇 24 | search: 搜索 25 | searchTip: 请输入搜索的关键字 26 | postTagTitle: 文章标签 27 | postCategoryTitle: 文章分类 28 | categoryRadarTitle: 文章分类雷达图 29 | categoryNumber: 文章分类数量 30 | categoryEmptyTip: 你目前还没有对文章进行分类. 31 | postCharts: 文章统计图 32 | postPublishChart: 文章发布统计图 33 | categoriesChart: 文章分类统计图 34 | top10TagsChart: TOP10 标签统计图 35 | postsNumberName: 文章篇数 36 | maximum: 最大值 37 | minimum: 最小值 38 | average: 平均值 39 | myProjects: 我的项目 40 | mySkills: 我的技能 41 | otherSkills: 其他技能 42 | gallery: 相册 43 | notag: 无标签 44 | from: 来源 45 | reprint: 版权声明 46 | author: 文章作者 47 | link: 文章链接 48 | use: 本博客所有文章除特別声明外,均采用 49 | licensed: 许可协议。转载请注明来源 50 | cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.zh 51 | cc_by_name: CC BY 4.0 52 | cc_by_nd_url: https://creativecommons.org/licenses/by-nd/4.0/deed.zh 53 | cc_by_nd_name: CC BY-ND 4.0 54 | cc_by_sa_url: https://creativecommons.org/licenses/by-sa/4.0/deed.zh 55 | cc_by_sa_name: CC BY-SA 4.0 56 | cc_by_nc_url: https://creativecommons.org/licenses/by-nc/4.0/deed.zh 57 | cc_by_nc_name: CC BY-NC 4.0 58 | cc_by_nc_nd_url: https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh 59 | cc_by_nc_nd_name: CC BY-NC-ND 4.0 60 | cc_by_nc_sa_url: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh 61 | cc_by_nc_sa_name: CC BY-NC-SA 4.0 62 | cc_0_url: https://creativecommons.org/publicdomain/zero/1.0/deed.zh 63 | toTheExtentPossibleUnderLaw: 在法律允许的范围内, 64 | hasWaivedAllCopyrightAndRelatedOrNeighboringRightsTo: 已放弃此作品的所有版权、相关或相邻的权利 65 | workPublishedFrom: 。此作品发布在: 66 | cc_0_country: 中国大陆。 67 | cc_0_content: CN 68 | noreprint: 本文不允许转载。 69 | paycontact: 请联系作者 70 | payreprint: 付费转载。 71 | pleaseFollowReprintPolicy: 复制成功,请遵循本文的转载规则 72 | checkPolicy: 查看 73 | siteTotalWords: 站点总字数 74 | siteTotalVisits: 总访问量 75 | siteTotalVisitors: 总访问人数 76 | Index: 首页 77 | Tags: 标签 78 | Categories: 分类 79 | Archives: 归档 80 | About: 关于 81 | Contact: 留言板 82 | Friends: 友情链接 83 | -------------------------------------------------------------------------------- /languages/zh-HK.yml: -------------------------------------------------------------------------------- 1 | posts: 文章 2 | category: 分類 3 | categories: 分類 4 | tag: 標籤 5 | tags: 標籤 6 | archives: 歸檔 7 | about: 關於 8 | contact: 留言板 9 | friends: 友情連結 10 | startRead: 開始閱讀 11 | recommendedPosts: 推薦文章 12 | publishDate: 發布日期 13 | updateDate: 更新日期 14 | readCount: 閱讀次數 15 | wordCount: 文章字數 16 | readTimes: 閱讀時長 17 | Minutes: 分 18 | readMore: 閱讀更多 19 | toc: 目錄 20 | curr: 本篇 21 | prev: 上一篇 22 | next: 下一篇 23 | search: 搜索 24 | searchTip: 請輸入搜索的關鍵字 25 | postTagTitle: 文章標籤 26 | postCategoryTitle: 文章分類 27 | categoryRadarTitle: 文章分類雷達圖 28 | categoryNumber: 文章分類數量 29 | categoryEmptyTip: 你目前還沒有對文章進行分類. 30 | postCharts: 文章統計圖 31 | postPublishChart: 文章發布統計圖 32 | categoriesChart: 文章分類統計圖 33 | top10TagsChart: TOP10 標籤統計圖 34 | postsNumberName: 文章篇數 35 | maximum: 最大值 36 | minimum: 最小值 37 | average: 平均值 38 | myProjects: 我的項目 39 | mySkills: 我的技能 40 | otherSkills: 其他技能 41 | gallery: 相冊 42 | notag: 無標籤 43 | from: 來源 44 | reprint: 版權聲明 45 | author: 文章作者 46 | link: 文章連結 47 | use: 本部落格所有文章除特別聲明外,均採用 48 | licensed: 許可協議。轉載請註明來源 49 | cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.zh 50 | cc_by_name: CC BY 4.0 51 | cc_by_nd_url: https://creativecommons.org/licenses/by-nd/4.0/deed.zh 52 | cc_by_nd_name: CC BY-ND 4.0 53 | cc_by_sa_url: https://creativecommons.org/licenses/by-sa/4.0/deed.zh 54 | cc_by_sa_name: CC BY-SA 4.0 55 | cc_by_nc_url: https://creativecommons.org/licenses/by-nc/4.0/deed.zh 56 | cc_by_nc_name: CC BY-NC 4.0 57 | cc_by_nc_nd_url: https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh 58 | cc_by_nc_nd_name: CC BY-NC-ND 4.0 59 | cc_by_nc_sa_url: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh 60 | cc_by_nc_sa_name: CC BY-NC-SA 4.0 61 | cc_0_url: https://creativecommons.org/publicdomain/zero/1.0/deed.zh 62 | toTheExtentPossibleUnderLaw: 在法律允許的範圍內, 63 | hasWaivedAllCopyrightAndRelatedOrNeighboringRightsTo: 已放棄此作品的所有版權、相關或相鄰的權利 64 | workPublishedFrom: 。此作品發布在: 65 | cc_0_country: 香港。 66 | cc_0_content: HK 67 | noreprint: 本文不允許轉載。 68 | paycontact: 請聯絡作者 69 | payreprint: 付費轉載。 70 | pleaseFollowReprintPolicy: 複製成功,請遵循本文的轉載規則 71 | checkPolicy: 查看 72 | siteTotalWords: 站點總字數 73 | siteTotalVisits: 總訪問量 74 | siteTotalVisitors: 總訪問人數 75 | Index: 首页 76 | Tags: 标签 77 | Categories: 分类 78 | Archives: 归档 79 | About: 关于 80 | Contact: 留言板 81 | Friends: 友情链接 82 | -------------------------------------------------------------------------------- /layout/404.ejs: -------------------------------------------------------------------------------- 1 | 7 |
8 |
9 |
10 |
11 |
12 |
13 | 404 Sorry 您找的页面不存在! 14 |
15 |
16 | 试试右上角的搜索功能? 17 |
18 |
19 | 返回首页 20 |
21 |
22 | <%= page.description %> 23 |
24 |
25 |
26 |
27 |
28 |
29 | 30 | <% if (theme.banner.enable) { %> 31 | 36 | <% } else { %> 37 | 40 | <% } %> 41 | -------------------------------------------------------------------------------- /layout/_partial/back-top.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /layout/_partial/background.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.background.enable) { %> 2 | 10 | <% } %> 11 | -------------------------------------------------------------------------------- /layout/_partial/baidu-analytics.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.baiduAnalytics.enable) { %> 3 | 12 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/baidu-push.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.baiduPush) { %> 3 | 16 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/bg-cover-content.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | <% if (config.subtitle && config.subtitle.length > 0) { %> 6 | <%= config.subtitle %> 7 | <% } else { %> 8 | subtitle 9 | <% } %> 10 |
11 | 12 |
13 | <% if (theme.subtitle.enable) { %> 14 | 15 | 16 | 30 | <% } else { %> 31 | <%= config.description %> 32 | <% } %> 33 |
34 |
35 |
36 |
37 | 38 | <% if (theme.banner.enable) { %> 39 | 44 | 54 | <% } else { %> 55 | 58 | <% } %> 59 | -------------------------------------------------------------------------------- /layout/_partial/bg-cover.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%- partial('_partial/bg-cover-content') %> 4 |
5 |
-------------------------------------------------------------------------------- /layout/_partial/bg-video.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.cover.video.enable){ %> 2 | <% 3 | var videos=theme.cover.video.src 4 | %> 5 | 10 | 15 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/changyan.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.changyan.appId && theme.changyan.conf) { %> 2 |
3 | 52 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/codeblock.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <% if (config.prismjs && config.prismjs.enable) { %> 5 | 6 | 7 | <% } %> 8 | 9 | 10 | <% if (theme.code.lang) { %> 11 | 12 | <% } %> 13 | 14 | 15 | <% if (theme.code.copy) { %> 16 | 17 | <% } %> 18 | 19 | 20 | <% if (theme.code.shrink) { %> 21 | 22 | <% } %> 23 | -------------------------------------------------------------------------------- /layout/_partial/cover-style.ejs: -------------------------------------------------------------------------------- 1 | <% if (is_home() && page.current === 1) { %> 2 | 3 | 4 | 44 | <% } else { %> 45 | 46 | <% } %> 47 | -------------------------------------------------------------------------------- /layout/_partial/disqus.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |
8 | 9 | 25 | -------------------------------------------------------------------------------- /layout/_partial/gitalk.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 | 评论 8 |
9 |
10 |
11 | 12 | 13 | 26 | -------------------------------------------------------------------------------- /layout/_partial/github-link.ejs: -------------------------------------------------------------------------------- 1 | 45 | 46 | 48 | 55 | -------------------------------------------------------------------------------- /layout/_partial/gitment.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 | 评论 8 |
9 |
10 |
11 | 12 | 13 | 26 | -------------------------------------------------------------------------------- /layout/_partial/google-analytics.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.googleAnalytics.enable) { %> 3 | 4 | 13 | <% } %> 14 | -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var title = page.title; 3 | 4 | // tags, categories, about pages title 5 | if (title == 'tags') { 6 | title = __('tags'); 7 | } else if (title == 'categories') { 8 | title = __('categories'); 9 | } else if (title == 'about') { 10 | title = __('about'); 11 | } 12 | 13 | // archives, category, tag pages title 14 | if (is_archive()) { 15 | title = __('archives'); 16 | if (is_month()) { 17 | title += ': ' + page.year + '/' + page.month; 18 | } else if (is_year()) { 19 | title += ': ' + page.year; 20 | } 21 | } else if (is_category()) { 22 | title = __('category') + ': ' + page.category; 23 | } else if (is_tag()) { 24 | title = __('tag') + ': ' + page.tag; 25 | } 26 | 27 | // final page title. 28 | var pageTitle = title ? title + ' | ' + config.title : config.title; 29 | 30 | // keywords. 31 | var keyWords = config.keywords ? config.keywords : config.title; 32 | if (page.keywords) { 33 | keyWords = page.keywords; 34 | } else { 35 | keyWords = title ? title + ', ' + keyWords : keyWords; 36 | } 37 | 38 | // description. 39 | var description = config.description ? config.description : config.title; 40 | if (page.summary) { 41 | description = page.summary; 42 | } else if (page.hasOwnProperty('__post') && page.__post) { 43 | description = strip_html(page.content).substring(0, 120); 44 | } 45 | 46 | let iconType = 'image/png' 47 | let faviconExt = theme.favicon.substr(theme.favicon.lastIndexOf('.') + 1, theme.favicon.length) 48 | if (faviconExt === 'png') { 49 | iconType = 'image/png' 50 | } else if (faviconExt === 'svg') { 51 | iconType = 'image/svg+xml' 52 | } else if (faviconExt === 'gif') { 53 | iconType = 'image/gif' 54 | } else if (faviconExt === 'jpeg') { 55 | iconType = 'image/jpeg' 56 | } else if (faviconExt === 'jpg') { 57 | iconType = 'image/jpeg' 58 | } else if (faviconExt === 'ico') { 59 | iconType = 'image/x-icon, image/vnd.microsoft.icon' 60 | } 61 | %> 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | <%- partial('_partial/google-analytics') %> 76 | <%= pageTitle %> 77 | 78 | <%- partial('_partial/main-style') %> 79 | 80 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /layout/_partial/header.ejs: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /layout/_partial/livere.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 18 | 19 |
20 | 21 |
-------------------------------------------------------------------------------- /layout/_partial/main-style.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/background') %> 2 | <%- partial('_partial/cover-style') %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | <%- partial('_partial/post-style') %> 14 | <%- partial('_partial/reward-style') %> 15 | -------------------------------------------------------------------------------- /layout/_partial/mobile-nav.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var configRoot = config.root 3 | configRoot = (configRoot === null || configRoot === undefined || configRoot === '/') ? '' : configRoot; 4 | %> 5 |
6 | 7 |
8 | <% if (theme.logo !== undefined && theme.logo.length > 0) { %> 9 | 10 | <% } %> 11 |
<%= config.title %>
12 |
13 | <% if (config.description && config.description.length > 0) { %> 14 | <%= config.description %> 15 | <% } else { %> 16 | Never really desperate, only the lost of the soul. 17 | <% } %> 18 |
19 |
20 | 21 | 68 |
69 | -------------------------------------------------------------------------------- /layout/_partial/navigation.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var configRoot = config.root 3 | configRoot = (configRoot === null || configRoot === undefined || configRoot === '/') ? '' : configRoot; 4 | %> 5 | 6 | 7 | 52 | 53 | <%- partial('_partial/mobile-nav') %> 54 | -------------------------------------------------------------------------------- /layout/_partial/paging.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | <% if (page.prev) { %> 5 | 7 | 8 | 9 | <% } else { %> 10 | 11 | 12 | 13 | <% } %> 14 |
15 |
16 |
<%- page.current %> / <%- page.total %>
17 |
18 |
19 | <% if (page.next) { %> 20 | 22 | 23 | 24 | <% } else { %> 25 | 26 | 27 | 28 | <% } %> 29 |
30 |
31 |
32 | -------------------------------------------------------------------------------- /layout/_partial/post-cover.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var featureimg = url_for('/medias/bg.jpg'); 3 | if (page.img) { 4 | featureimg = url_for(page.img); 5 | } else { 6 | var hashCode = function (str) { 7 | if (!str && str.length === 0) { 8 | return 0; 9 | } 10 | 11 | var hash = 0; 12 | for (var i = 0, len = str.length; i < len; i++) { 13 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 14 | hash |= 0; 15 | } 16 | return hash; 17 | }; 18 | 19 | var len = theme.featureImages.length; 20 | var num = Math.abs(hashCode(page.title) % len); 21 | 22 | featureimg = theme.jsDelivr.url 23 | ? theme.jsDelivr.url + url_for(theme.featureImages[num]) 24 | : url_for(theme.featureImages[num]); 25 | } 26 | %> 27 | 28 |
29 |
30 |
31 |
32 |
33 |

<%= page.title %>

34 |
35 |
36 |
37 |
38 |
39 | -------------------------------------------------------------------------------- /layout/_partial/post-detail-toc.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%- partial('_partial/post-detail.ejs') %> 4 |
5 |
6 |
7 |
  <%- __('toc') %>
8 |
9 |
10 |
11 |
12 | 13 | 14 | <% if (theme.toc.enable && theme.toc.showToggleBtn) { %> 15 |
16 | 17 | 18 | 19 |
20 | <% } %> 21 | 22 | 23 | 84 | -------------------------------------------------------------------------------- /layout/_partial/post-statis.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.posts && site.posts.length > 0) { %> 2 |
3 | <%- site.posts.length %> 4 | <%- __('posts') %> 5 |
6 | <% } %> 7 | 8 | <% if (site.categories && site.categories.length > 0) { %> 9 |
10 | <%- site.categories.length %> 11 | <%- __('categories') %> 12 |
13 | <% } %> 14 | 15 | <% if (site.tags && site.tags.length > 0) { %> 16 |
17 | <%- site.tags.length %> 18 | <%- __('tags') %> 19 |
20 | <% } %> 21 | -------------------------------------------------------------------------------- /layout/_partial/post-style.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var isTocEnable = theme.toc.enable && String(page.toc) !== 'false'; 3 | %> 4 | 5 | <% if (isTocEnable) { %> 6 | 7 | 8 | 9 | <% } else { %> 10 | 11 | <% } %> 12 | -------------------------------------------------------------------------------- /layout/_partial/reward-style.ejs: -------------------------------------------------------------------------------- 1 | <% if (!is_home()) { %> 2 | <% if (theme.reward.enable) { %> 3 | 4 | <% } %> 5 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/reward.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 25 |
26 | 27 | 32 | -------------------------------------------------------------------------------- /layout/_partial/search.ejs: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 104 | -------------------------------------------------------------------------------- /layout/_partial/share.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | <% if (theme.sharejs.enable) { %> 5 |
6 | 7 | <% } %> 8 | 9 | <% if (theme.addthis.enable) { %> 10 | 11 |
12 | <% } %> 13 | 14 |
15 | -------------------------------------------------------------------------------- /layout/_partial/social-link.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.socialLink.github) { %> 2 | 3 | 4 | 5 | <% } %> 6 | 7 | <% if (theme.socialLink.email) { %> 8 | 9 | 10 | 11 | <% } %> 12 | 13 | <% if (theme.socialLink.facebook) { %> 14 | 15 | 16 | 17 | <% } %> 18 | 19 | <% if (theme.socialLink.twitter) { %> 20 | 21 | 22 | 23 | <% } %> 24 | 25 | <% if (theme.socialLink.qq) { %> 26 | 27 | 28 | 29 | <% } %> 30 | 31 | <% if (theme.socialLink.weibo) { %> 32 | 33 | 34 | 35 | <% } %> 36 | 37 | <% if (theme.socialLink.zhihu) { %> 38 | 39 | 40 | 41 | <% } %> 42 | 43 | <% if (theme.socialLink.rss) { %> 44 | 45 | 46 | 47 | <% } %> 48 | -------------------------------------------------------------------------------- /layout/_partial/waline.ejs: -------------------------------------------------------------------------------- 1 | 191 | 192 |
193 |
194 | 195 | 评论 196 |
197 |
198 |
199 |
200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /layout/_widget/artitalk.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /layout/_widget/category-cloud.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var colorArr = ['#F9EBEA', '#F5EEF8', '#D5F5E3', '#E8F8F5', '#FEF9E7', 3 | '#F8F9F9', '#82E0AA', '#D7BDE2', '#A3E4D7', '#85C1E9', '#F8C471', '#F9E79F', '#FFF']; 4 | var colorCount = colorArr.length; 5 | var hashCode = function (str) { 6 | if (!str && str.length === 0) { 7 | return 0; 8 | } 9 | 10 | var hash = 0; 11 | for (var i = 0, len = str.length; i < len; i++) { 12 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 13 | hash |= 0; 14 | } 15 | return hash; 16 | }; 17 | var i = 0; 18 | var isCategory = is_category(); 19 | %> 20 | 21 |
22 |
23 |
24 |
25 |   <%= __('postCategoryTitle') %> 26 |
27 |
28 | <% if (site.categories && site.categories.length > 0) { %> 29 | <% site.categories.map(function(category) { %> 30 | <% 31 | i++; 32 | var color = i >= colorCount 33 | ? colorArr[Math.abs(hashCode(category.name) % colorCount)] 34 | : colorArr[i - 1]; 35 | %> 36 | 37 | <%- category.name %> 40 | <%- category.length %> 41 | 42 | 43 | <% }); %> 44 | <% } else { %> 45 | <%= __('categoryEmptyTip') %> 46 | <% } %> 47 |
48 |
49 |
50 |
51 | -------------------------------------------------------------------------------- /layout/_widget/category-radar.ejs: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 75 | -------------------------------------------------------------------------------- /layout/_widget/day-night.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 | 8 | 24 | -------------------------------------------------------------------------------- /layout/_widget/dream.ejs: -------------------------------------------------------------------------------- 1 |
2 | <% if (theme.dream.showTitle) { %> 3 |
4 |   <%= theme.dream.title %> 5 |
6 | <% } %> 7 |
8 |
9 | <%= theme.dream.text %> 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /layout/_widget/music.ejs: -------------------------------------------------------------------------------- 1 | 2 | 31 |
32 | <% if (!theme.music.fixed && theme.music.title.enable) { %> 33 |
34 |   <%- theme.music.title.show %> 35 |
36 | <% } %> 37 |
38 | ' 43 | autoplay='<%- theme.music.autoplay === true %>' 44 | theme='<%- theme.music.theme %>' 45 | loop='<%- theme.music.loop %>' 46 | order='<%- theme.music.order %>' 47 | preload='<%- theme.music.preload %>' 48 | volume='<%- Number(theme.music.volume) %>' 49 | list-folded='<%- theme.music.listFolded ? 'true' : 'false' %>' 50 | > 51 | 52 |
53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /layout/_widget/musics.ejs: -------------------------------------------------------------------------------- 1 | 2 | 31 |
32 | <% if (!theme.musics.fixed && theme.musics.title.enable) { %> 33 |
34 |   <%- theme.musics.title.show %> 35 |
36 | <% } %> 37 |
38 | ' 43 | autoplay='<%- theme.musics.autoplay === true %>' 44 | theme='<%- theme.musics.theme %>' 45 | loop='<%- theme.musics.loop %>' 46 | order='<%- theme.musics.order %>' 47 | preload='<%- theme.musics.preload %>' 48 | volume='<%- Number(theme.musics.volume) %>' 49 | listMaxHeight='<%- theme.musics.listMaxHeight %>' 50 | list-folded='<%- theme.musics.listFolded ? 'true' : 'false' %>' 51 | > 52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /layout/_widget/my-gallery.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | // the gallery photos of theme _config.yml. 3 | var gallery = theme.myGallery.data; 4 | %> 5 | 21 | 22 | 32 | -------------------------------------------------------------------------------- /layout/_widget/my-projects.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | // the projects information of theme _config.yml. 3 | var myprojects = theme.myProjects.data; 4 | %> 5 |
6 |
7 |   <%- __('myProjects') %> 8 |
9 |
10 | <% if (myprojects) { %> 11 | <% Object.keys(myprojects).forEach(function(project) { %> 12 |
13 |
14 | 16 | 17 | 18 |
19 | <%- project %> 20 |
21 |
<%= myprojects[project].desc %>
22 |
23 |
24 | <% }); %> 25 | <% } %> 26 |
27 |
28 | -------------------------------------------------------------------------------- /layout/_widget/my-skills.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | // the skills information of theme _config.yml. 3 | var mySkills = theme.mySkills.data; 4 | var topSkillArr = []; 5 | %> 6 |
7 |
8 |   <%- __('mySkills') %> 9 |
10 |
11 | <% if (mySkills) { %> 12 | <% Object.keys(mySkills).forEach(function(skill) { %> 13 | <% topSkillArr.push(skill); %> 14 |
15 |
16 |
18 | <%- skill %> 19 |
20 |
<%- mySkills[skill].percent %>
21 |
22 |
23 | <% }); %> 24 | <% } %> 25 |
26 | 27 | <% 28 | /** 29 | * Determine if an element is included in the array. 30 | * 31 | * @param arr array 32 | * @param value value 33 | */ 34 | var isInArray = function (arr, value) { 35 | for (var i = 0; i < arr.length; i++) { 36 | if (value == arr[i]) { 37 | return true; 38 | } 39 | } 40 | return false; 41 | } 42 | %> 43 | 44 | <% if (site.tags) { %> 45 |
46 |
  <%- __('otherSkills') %>
47 |
48 | <% site.tags.map(function(tag) { %> 49 | <% if (!isInArray(topSkillArr, tag.name)) { %> 50 | 51 | <%- tag.name %> 52 | 53 | <% } %> 54 | <% }); %> 55 |
56 |
57 | <% } %> 58 | 59 |
60 | -------------------------------------------------------------------------------- /layout/_widget/post-calendar.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | 7 | 8 | 111 | -------------------------------------------------------------------------------- /layout/_widget/recommend.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | // get all top posts. 3 | var topPosts = []; 4 | if (theme.recommend.useConfig) { 5 | topPosts = site.data.recommends; 6 | } else { 7 | site.posts.forEach(function (post) { 8 | if (post.top) { 9 | topPosts.push(post); 10 | } 11 | }); 12 | } 13 | var topPostsCount = topPosts.length; 14 | %> 15 | 16 | <% if (topPostsCount > 0) { %> 17 | <% 18 | var hashCode = function (str) { 19 | if (!str && str.length === 0) { 20 | return 0; 21 | } 22 | 23 | var hash = 0; 24 | for (var i = 0, len = str.length; i < len; i++) { 25 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 26 | hash |= 0; 27 | } 28 | return hash; 29 | }; 30 | 31 | var featureImages = theme.featureImages; 32 | var imgCount = featureImages.length; 33 | var bgColorArr = [ 34 | 'linear-gradient(to right, #FF5E3A 0%, #FF2A68 100%)', 35 | 'linear-gradient(to right, #EF4DB6 0%, #C643FC 100%)', 36 | 'linear-gradient(to right, #1AD6FD 0%, #1D62F0 100%)', 37 | 'linear-gradient(to right, #FFCC00 0%, #FF9500 100%)', 38 | 'linear-gradient(to right, #4cbf30 0%, #0f9d58 100%)', 39 | 'linear-gradient(to right, #C644FC 0%, #5856D6 100%)', 40 | 'linear-gradient(to right, #55EFCB 0%, #5BCAFF 100%)']; 41 | var colorCount = bgColorArr.length; 42 | %> 43 | 44 | <% if (theme.recommend.showTitle) { %> 45 |
  <%- __('recommendedPosts') %>
46 | <% } %> 47 |
48 | <% if (topPostsCount % 2 === 0) { %> 49 | <% for (var i = 0; i < topPostsCount; i++) { %> 50 | <% 51 | var post = topPosts[i]; 52 | var featureImg = post.img ? url_for(post.img) : url_for(featureImages[Math.abs(hashCode(post.title) % imgCount)]); 53 | var bgColor = bgColorArr[i % colorCount]; 54 | %> 55 |
1) { %>data-aos="zoom-in-up"<% } %>> 56 | <% if (post.img) {%> 57 |
58 | <%}else{%> 59 |
60 | <% } %> 61 |
62 |
63 | <% if (theme.recommend.useConfig) { %> 64 | <%= post.categoryName %> 65 | <% } else { %> 66 | <% post.categories.forEach(category => { %> 67 | <%= category.name %> 68 | <% }); %> 69 | <% } %> 70 |
71 | 72 |

<%= post.title %>

73 |
74 |

75 | <% if (post.summary && post.summary.length > 0) { %> 76 | <%- post.summary %> 77 | <% } else { %> 78 | <%- strip_html(post.content).substring(0, 70) %> 79 | <% } %> 80 |

81 | 82 | <%- __('readMore') %> 83 | 84 |
85 |
86 |
87 | <% } %> 88 | <% } else { %> 89 | <% for (var i = 0; i < topPostsCount; i++) { %> 90 | <% 91 | var post = topPosts[i]; 92 | var grid = (i % 3 === 0) ? 's12' : 's12 m6'; 93 | var description = (i % 3 === 0) ? strip_html(post.content).substring(0, 85) 94 | : strip_html(post.content).substring(0, 70); 95 | if (post.summary && post.summary.length > 0) { 96 | description = post.summary; 97 | } 98 | 99 | var featureImg = post.img ? url_for(post.img) : url_for(featureImages[Math.abs(hashCode(post.title) % imgCount)]); 100 | var bgColor = bgColorArr[i % colorCount]; 101 | %> 102 |
0) { %>data-aos="zoom-in-up"<% } %>> 103 | <% if (post.img) {%> 104 |
105 | <%}else{%> 106 |
107 | <% } %> 108 |
109 |
110 | <% if (theme.recommend.useConfig) { %> 111 | <%= post.categoryName %> 112 | <% } else { %> 113 | <% post.categories.forEach(category => { %> 114 | <%= category.name %> 115 | <% }); %> 116 | <% } %> 117 |
118 | 119 |

<%= post.title %>

120 |
121 |

<%= description %>

122 | 123 | <%- __('readMore') %> 124 | 125 |
126 |
127 |
128 | <% } %> 129 | <% } %> 130 |
131 | <% } %> 132 | -------------------------------------------------------------------------------- /layout/_widget/tag-cloud.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var colorArr = ['#F9EBEA', '#F5EEF8', '#D5F5E3', '#E8F8F5', '#FEF9E7', 3 | '#F8F9F9', '#82E0AA', '#D7BDE2', '#A3E4D7', '#85C1E9', '#F8C471', '#F9E79F', '#FFF']; 4 | var colorCount = colorArr.length; 5 | var hashCode = function (str) { 6 | if (!str && str.length === 0) { 7 | return 0; 8 | } 9 | 10 | var hash = 0; 11 | for (var i = 0, len = str.length; i < len; i++) { 12 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 13 | hash |= 0; 14 | } 15 | return hash; 16 | }; 17 | var i = 0; 18 | var isTag = is_tag(); 19 | %> 20 | 21 |
22 |
23 |
24 |
25 |   <%= __('postTagTitle') %> 26 |
27 |
28 | <% site.tags.map(function(tag) { %> 29 | <% 30 | i++; 31 | var color = i >= colorCount ? colorArr[Math.abs(hashCode(tag.name) % colorCount)] 32 | : colorArr[i - 1]; 33 | %> 34 | 35 | <%- tag.name %> 38 | <%- tag.length %> 39 | 40 | 41 | <% }); %> 42 |
43 |
44 |
45 |
-------------------------------------------------------------------------------- /layout/_widget/tag-wordcloud.ejs: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |
10 |
11 |
12 |
13 |
14 | 15 | 16 | 30 | -------------------------------------------------------------------------------- /layout/_widget/video.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | <% if (theme.video.showTitle) { %> 4 |
5 |   <%= theme.video.title %> 6 |
7 | <% } %> 8 |
9 | <% if (theme.video.url) { %> 10 |
11 |
style="height: <%- theme.video.height %>px;"<% } %>>
13 |
14 | <% }else{ %> 15 | 16 | <% } %> 17 |
18 |
19 | 20 | 21 | 39 | -------------------------------------------------------------------------------- /layout/about.ejs: -------------------------------------------------------------------------------- 1 | 7 | 8 | <%- partial('_partial/bg-cover') %> 9 | 10 |
11 | 12 |
13 |
14 |
15 |
16 |
17 | <%- partial('_partial/post-statis') %> 18 |
19 |
20 |
21 |
22 | <%- config.author %> 24 |
25 |
26 |
27 | <%- partial('_partial/post-statis') %> 28 |
29 |
<%- config.author %>
30 |
<%- theme.profile.career %>
31 | 34 |
35 |
36 |
37 |
38 | 41 |
42 |
43 | 44 |
<%= theme.profile.introduction %>
45 | 46 | <%- partial('_widget/post-charts') %> 47 | 48 | <% if (theme.myProjects && theme.myProjects.enable) { %> 49 | <%- partial('_widget/my-projects') %> 50 | <% } %> 51 | 52 | <% if (theme.mySkills && theme.mySkills.enable) { %> 53 | <%- partial('_widget/my-skills') %> 54 | <% } %> 55 | 56 | <% if (theme.myGallery && theme.myGallery.enable) { %> 57 | <%- partial('_widget/my-gallery') %> 58 | <% } %> 59 | 60 | <% if (theme.artitalk && theme.artitalk.enable) { %> 61 | <%- partial('_widget/artitalk') %> 62 | <% } %> 63 | 64 |
65 |
66 |
67 |
68 | -------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 |
4 | 5 | <% if (theme.postCalendar) { %> 6 | <%- partial('_widget/post-calendar') %> 7 | <% } %> 8 | 9 | <% 10 | /** 11 | * hashCode function. 12 | * 13 | * @param str str 14 | * @returns {number} 15 | */ 16 | var hashCode = function (str) { 17 | if (!str && str.length === 0) { 18 | return 0; 19 | } 20 | 21 | var hash = 0; 22 | for (var i = 0, len = str.length; i < len; i++) { 23 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 24 | hash |= 0; 25 | } 26 | return hash; 27 | }; 28 | 29 | // init year and month variable. 30 | var year = '1970'; 31 | var month = '1970-01'; 32 | 33 | // post feature image. 34 | var featureimg = '/medias/featureimages/0.jpg'; 35 | var featureImages = theme.featureImages; 36 | %> 37 | 38 |
39 | <% page.posts.each(function(post) { %> 40 |
41 | 42 | <%# year. %> 43 | <% if (date(post.date, 'YYYY') != year) { %> 44 | <% year = date(post.date, 'YYYY'); %> 45 |
46 | <%- year %> 47 |
48 | <% } %> 49 | 50 | <%# month. %> 51 | <% if (date(post.date, 'YYYY-MM') != month) { %> 52 | <% 53 | month = date(post.date, 'YYYY-MM'); 54 | var m = date(post.date, 'MM') 55 | %> 56 |
57 | <%- m %> 58 |
59 | <% } %> 60 | 61 | <%# every day posts. %> 62 |
63 | <%- date(post.date, 'YYYY-MM-DD').substring(8, 10) %> 64 |
65 |
66 |
67 |
68 | 69 |
70 | <% if (post.img) { %> 71 | <%= post.title %> 72 | <% } else { %> 73 | <% 74 | featureimg = featureImages[Math.abs(hashCode(post.title) % featureImages.length)]; 75 | %> 76 | <%= post.title %> 77 | <% } %> 78 | <%= post.title %> 79 |
80 |
81 |
82 |
83 | <% if (post.summary && post.summary.length > 0) { %> 84 | <%- post.summary %> 85 | <% } else { %> 86 | <%- strip_html(post.content).substring(0, 120) %> 87 | <% } %> 88 |
89 |
90 | 91 | <%= date(post.date, config.date_format) %> 92 | 93 | 94 | <% if (post.categories && post.categories.length > 0) { %> 95 | 96 | <% post.categories.forEach(category => { %> 97 | 100 | <% }); %> 101 | <% } else if (post.author && post.author.length > 0) { %> 102 | 103 | <%- post.author %> 104 | <% } else { %> 105 | 106 | <%- config.author %> 107 | <% } %> 108 | 109 |
110 |
111 | 112 | <% if (post.tags && post.tags.length) { %> 113 | 118 | <% } %> 119 |
120 |
121 |
122 |
123 | <% }); %> 124 |
125 | 126 |
127 | 128 | <% if (page.total > 1) { %> 129 | <%- partial('_partial/paging') %> 130 | <% } %> 131 | -------------------------------------------------------------------------------- /layout/bb.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.bbtime.enable) { %> 2 | <% if (theme.verifyPassword.enable) { %> 3 | 4 | 15 | <% } %> 16 | 17 | <%- partial('_partial/post-cover') %> 18 | 19 | <% 20 | var isTocEnable = theme.toc.enable && String(page.toc) !== 'false'; 21 | var containerClass = isTocEnable ? 'post-container' : 'container'; 22 | %> 23 | 24 |
25 | <%- partial('_partial/post-detail.ejs') %> 26 |
27 | 28 | 29 | 30 | 133 | 134 | <% if (theme.mathjax.enable && page.mathjax) { %> 135 | 136 | 141 | <% } %> 142 | <% } %> 143 | -------------------------------------------------------------------------------- /layout/categories.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 |
4 | 5 | <%- partial('_widget/category-cloud') %> 6 | 7 | <% if (site.categories && site.categories.length > 0) { %> 8 | <%- partial('_widget/category-radar') %> 9 | <% } %> 10 | 11 |
12 | -------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 |
4 | 5 | <%- partial('_widget/category-cloud') %> 6 | 7 | <% 8 | var hashCode = function (str) { 9 | if (!str && str.length === 0) { 10 | return 0; 11 | } 12 | 13 | var hash = 0; 14 | for (var i = 0, len = str.length; i < len; i++) { 15 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 16 | hash |= 0; 17 | } 18 | return hash; 19 | }; 20 | %> 21 | 22 |
23 |
24 | <% page.posts.sort('date').reverse().forEach(post => { %> 25 |
26 |
27 | 28 |
29 | <% if (post.img) { %> 30 | <%= post.title %> 31 | <% } else { %> 32 | <% 33 | var featureimg = theme.featureImages[Math.abs(hashCode(post.title) % theme.featureImages.length)]; 34 | %> 35 | <%= post.title %> 36 | <% } %> 37 | <%= post.title %> 38 |
39 |
40 |
41 |
42 | <% if (post.summary && post.summary.length > 0) { %> 43 | <%- post.summary %> 44 | <% } else { %> 45 | <%- strip_html(post.content).substring(0, 120) %> 46 | <% } %> 47 |
48 |
49 | 50 | <%= date(post.date, config.date_format) %> 51 | 52 | 53 | <% if (post.categories && post.categories.length > 0) { %> 54 | 55 | <% post.categories.forEach(category => { %> 56 | 59 | <% }); %> 60 | <% } else if (post.author && post.author.length > 0) { %> 61 | 62 | <%- post.author %> 63 | <% } else { %> 64 | 65 | <%- config.author %> 66 | <% } %> 67 | 68 |
69 |
70 | 71 | <% if (post.tags && post.tags.length) { %> 72 | 79 | <% } %> 80 |
81 |
82 | <% }); %> 83 |
84 |
85 |
86 | 87 | <% if (page.total > 1) { %> 88 | <%- partial('_partial/paging') %> 89 | <% } %> 90 | -------------------------------------------------------------------------------- /layout/galleries.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('_partial/bg-cover') %> 4 | 5 |
6 |
7 | <% if (site.data && site.data.galleries) { %> 8 | <% var galleries = site.data.galleries; %> 9 | 23 | <% } %> 24 |
25 |
-------------------------------------------------------------------------------- /layout/gallery.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <%- partial('_partial/post-cover') %> 7 | <% 8 | let galleries = []; 9 | if (site.data && site.data.galleries) { 10 | galleries = site.data.galleries; 11 | } 12 | var pageTitle = page.title; 13 | function getCurrentGallery(galleries, pageTitle) { 14 | for (let i = 0; i < galleries.length; i++) { 15 | if (galleries[i]['name'] == pageTitle) { 16 | return galleries[i]; 17 | } 18 | } 19 | } 20 | var currentGallery = getCurrentGallery(galleries, pageTitle) 21 | 22 | var photos = currentGallery.photos; 23 | var galleryImageStr = theme.jsDelivr.url ? theme.jsDelivr.url : ''; 24 | 25 | let imageStr = '' 26 | 27 | for (var i = 0, len = photos.length; i < len; i++) { 28 | var photo = photos[i]; 29 | 30 | imageStr += "" + 33 | "  + photo + \n" + 35 | " " 36 | 37 | } 38 | %> 39 | 40 |
41 |
42 | <% if (page.password ) { %> 43 | 44 | 45 | 46 |
47 |
48 | 49 | 解密 50 |
51 |
52 |
53 | 56 |
57 | <% } else { %> 58 |
59 | <%- imageStr %> 60 |
61 | <% } %> 62 |
63 |
64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /layout/movies.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 | 4 | 41 | 42 |
43 |
44 |
45 |
46 |
47 |

48 | 📺 49 | 50 | 51 | 52 | 53 |

54 |
55 |
56 | 66 | 67 |
68 |
69 |
70 |
71 |
72 |
-------------------------------------------------------------------------------- /layout/musics.ejs: -------------------------------------------------------------------------------- 1 | 7 | 8 | <%- partial('_partial/bg-cover') %> 9 | 10 |
11 |
12 |
13 |
14 |
15 | <% if (theme.musics && theme.musics.enable) { %> 16 | <%- partial('_widget/musics') %> 17 | 18 | 19 | 46 | 47 |
48 | 49 | 50 | 51 |
52 | 53 | 71 | 72 | <% } %> 73 |
74 |
75 |
76 |
77 |
-------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.verifyPassword.enable) { %> 2 | 3 | 14 | <% } %> 15 | 16 | <%- partial('_partial/post-cover') %> 17 | 18 | <% 19 | var isTocEnable = theme.toc.enable && String(page.toc) !== 'false'; 20 | var containerClass = isTocEnable ? 'post-container' : 'container'; 21 | %> 22 | 23 |
24 | 25 | <% if (isTocEnable) { %> 26 | <%- partial('_partial/post-detail-toc.ejs') %> 27 | <% } else { %> 28 | <%- partial('_partial/post-detail.ejs') %> 29 | <% } %> 30 | 31 |
32 | 33 | <% if (theme.mathjax.enable && page.mathjax) { %> 34 | 35 | 40 | <% } %> 41 | -------------------------------------------------------------------------------- /layout/tag.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 |
4 | 5 | <%- partial('_widget/tag-cloud') %> 6 | 7 | <% 8 | var hashCode = function (str) { 9 | if (!str && str.length === 0) { 10 | return 0; 11 | } 12 | 13 | var hash = 0; 14 | for (var i = 0, len = str.length; i < len; i++) { 15 | hash = ((hash << 5) - hash) + str.charCodeAt(i); 16 | hash |= 0; 17 | } 18 | return hash; 19 | }; 20 | %> 21 | 22 |
23 |
24 | <% page.posts.sort('date').reverse().forEach(post => { %> 25 | <% 26 | var tagArr = []; 27 | if (post.tags && post.tags.length > 0) { 28 | post.tags.forEach(tag => { 29 | tagArr.push(tag.name); 30 | }); 31 | } 32 | var tags = tagArr.join(', '); 33 | %> 34 |
35 |
36 | 37 |
38 | <% if (post.img) { %> 39 | <%= post.title %> 40 | <% } else { %> 41 | <% 42 | var featureimg = theme.featureImages[Math.abs(hashCode(post.title) % theme.featureImages.length)]; 43 | %> 44 | <%= post.title %> 45 | <% } %> 46 | <%= post.title %> 47 |
48 |
49 |
50 |
51 | 52 | <%= date(post.date, config.date_format) %> 53 | 54 | 55 | <% if (post.categories && post.categories.length > 0) { %> 56 | 57 | <% post.categories.forEach(category => { %> 58 | 61 | <% }); %> 62 | <% } else if (post.author && post.author.length > 0) { %> 63 | 64 | <%- post.author %> 65 | <% } else { %> 66 | 67 | <%- config.author %> 68 | <% } %> 69 | 70 |
71 |
72 |
73 |
74 | <% }); %> 75 |
76 |
77 |
78 | 79 | <% if (page.total > 1) { %> 80 | <%- partial('_partial/paging') %> 81 | <% } %> 82 | -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/bg-cover') %> 2 | 3 |
4 | 5 | <%- partial('_widget/tag-cloud') %> 6 | 7 | <% if (site.tags && site.tags.length > 0) { %> 8 | <%- partial('_widget/tag-wordcloud') %> 9 | <% } %> 10 | 11 |
12 | -------------------------------------------------------------------------------- /scripts/tags/button.js: -------------------------------------------------------------------------------- 1 | /** 2 | * button.js | https://theme-next.js.org/docs/tag-plugins/button 3 | */ 4 | 5 | 'use strict'; 6 | 7 | module.exports = ctx => function(args) { 8 | args = args.join(' ').split(','); 9 | const url = args[0]; 10 | const text = (args[1] || '').trim(); 11 | let icon = (args[2] || '').trim(); 12 | const title = (args[3] || '').trim(); 13 | 14 | if (!url) { 15 | ctx.log.warn('URL can NOT be empty.'); 16 | } 17 | if (icon.length > 0) { 18 | if (!icon.startsWith('fa')) icon = 'fa fa-' + icon; 19 | icon = ``; 20 | } 21 | 22 | return ` 0 ? ` title="${title}"` : ''}>${icon}${text}`; 23 | }; 24 | -------------------------------------------------------------------------------- /scripts/tags/index.js: -------------------------------------------------------------------------------- 1 | /* global hexo */ 2 | 3 | 'use strict'; 4 | 5 | const postButton = require('./button')(hexo); 6 | 7 | hexo.extend.tag.register('button', postButton); 8 | hexo.extend.tag.register('btn', postButton); 9 | 10 | const postNote = require('./note')(hexo); 11 | 12 | hexo.extend.tag.register('note', postNote, true); 13 | hexo.extend.tag.register('subnote', postNote, true); 14 | -------------------------------------------------------------------------------- /scripts/tags/note.js: -------------------------------------------------------------------------------- 1 | /** 2 | * note.js | https://theme-next.js.org/docs/tag-plugins/note 3 | */ 4 | 5 | 'use strict'; 6 | 7 | module.exports = ctx => function(args, content) { 8 | const keywords = ['default', 'primary', 'info', 'success', 'warning', 'danger', 'no-icon']; 9 | const className = []; 10 | for (let i = 0; i < 2; i++) { 11 | if (keywords.includes(args[0])) { 12 | className.push(args.shift()); 13 | } else { 14 | break; 15 | } 16 | } 17 | 18 | content = ctx.render.renderSync({ text: content, engine: 'markdown' }); 19 | if (args.length === 0) { 20 | return `
${content}
`; 21 | } 22 | return `
${ctx.render.renderSync({ text: args.join(' '), engine: 'markdown' })} 23 | ${content} 24 |
`; 25 | }; 26 | -------------------------------------------------------------------------------- /source/css/barrager.css: -------------------------------------------------------------------------------- 1 | .barrage { 2 | position: fixed; 3 | bottom: 70px; 4 | right: -500px; 5 | display: inline-block; 6 | width: 500px; 7 | z-index: 99999 8 | } 9 | 10 | .barrage_box { 11 | background-color: rgba(0, 0, 0, .5); 12 | padding-right: 8px; 13 | height: 40px; 14 | display: inline-block; 15 | border-radius: 25px; 16 | transition: all .3s; 17 | } 18 | 19 | .barrage_box .portrait { 20 | display: inline-block; 21 | margin-top: 4px; 22 | margin-left: 4px; 23 | width: 32px; 24 | height: 32px; 25 | border-radius: 50%; 26 | overflow: hidden; 27 | } 28 | 29 | .barrage_box .portrait img { 30 | width: 100%; 31 | height: 100%; 32 | } 33 | 34 | .barrage_box div.p a { 35 | margin-right: 2px; 36 | font-size: 14px; 37 | color: #fff; 38 | line-height: 40px; 39 | margin-left: 18px; 40 | } 41 | 42 | .barrage_box div.p a:hover { 43 | text-decoration: underline; 44 | } 45 | 46 | .barrage_box .close { 47 | visibility: hidden; 48 | opacity: 0; 49 | text-align: center; 50 | width: 25px; 51 | height: 25px; 52 | margin-left: 20px; 53 | border-radius: 50%; 54 | background: rgba(255, 255, 255, .1); 55 | margin-top: 8px; 56 | background-image: url(/medias/barrager/close.png); 57 | } 58 | 59 | .barrage_box:hover .close { 60 | visibility: visible; 61 | opacity: 1; 62 | } 63 | 64 | .barrage_box .close a { 65 | display: block; 66 | } 67 | 68 | .barrage_box .close .icon-close { 69 | font-size: 14px; 70 | color: rgba(255, 255, 255, .5); 71 | display: inline-block; 72 | margin-top: 5px; 73 | } 74 | 75 | .barrage .z { 76 | float: left !important; 77 | } 78 | 79 | .barrage a { 80 | text-decoration: none; 81 | } -------------------------------------------------------------------------------- /source/css/bb.css: -------------------------------------------------------------------------------- 1 | div.timenode { 2 | position: relative; 3 | } 4 | 5 | div.timenode:before, 6 | div.timenode:after { 7 | content: ''; 8 | z-index: 1; 9 | position: absolute; 10 | background: rgba(68, 215, 182, 0.5); 11 | width: 2px; 12 | left: 7px; 13 | } 14 | 15 | div.timenode:before { 16 | top: 0px; 17 | height: 6px; 18 | } 19 | 20 | div.timenode:after { 21 | top: 26px; 22 | height: calc(100% - 26px); 23 | } 24 | 25 | div.timenode:last-child:after { 26 | height: calc(100% - 26px - 16px); 27 | border-bottom-left-radius: 2px; 28 | border-bottom-right-radius: 2px; 29 | } 30 | 31 | div.timenode .meta, 32 | div.timenode .body { 33 | max-width: calc(100% - 24px); 34 | } 35 | 36 | div.timenode .meta { 37 | position: relative; 38 | color: var(--color-meta); 39 | font-size: 0.875rem; 40 | line-height: 32px; 41 | height: 32px; 42 | } 43 | 44 | div.timenode .meta:before, 45 | div.timenode .meta:after { 46 | content: ''; 47 | position: absolute; 48 | top: 8px; 49 | z-index: 2; 50 | } 51 | 52 | div.timenode .meta:before { 53 | background: rgba(68, 215, 182, 0.5); 54 | width: 16px; 55 | height: 16px; 56 | border-radius: 8px; 57 | } 58 | 59 | div.timenode .meta:after { 60 | background: #44d7b6; 61 | margin-left: 2px; 62 | margin-top: 2px; 63 | width: 12px; 64 | height: 12px; 65 | border-radius: 6px; 66 | transform: scale(0.5); 67 | transition: all 0.28s ease; 68 | -moz-transition: all 0.28s ease; 69 | -webkit-transition: all 0.28s ease; 70 | -o-transition: all 0.28s ease; 71 | } 72 | 73 | div.timenode .meta p { 74 | font-weight: bold; 75 | margin: 0 0 0 24px; 76 | } 77 | 78 | div.timenode .body { 79 | margin: 4px 0 16px 24px; 80 | padding: 16px; 81 | border-radius: 8px; 82 | background: var(--color-block); 83 | display: inline-block; 84 | } 85 | 86 | div.timenode .body:empty { 87 | display: none; 88 | } 89 | 90 | div.timenode .body > *:first-child { 91 | margin-top: 0.25em; 92 | } 93 | 94 | div.timenode .body > *:last-child { 95 | margin-bottom: 0.25em; 96 | } 97 | 98 | div.timenode .body .highlight { 99 | border: 1px solid #e4e4e4; 100 | } 101 | 102 | div.timenode:hover .meta { 103 | color: var(--color-text); 104 | } 105 | 106 | div.timenode:hover .meta:before { 107 | background: rgba(255, 87, 34, 0.5); 108 | } 109 | 110 | div.timenode:hover .meta:after { 111 | background: #ff5722; 112 | transform: scale(1); 113 | } 114 | 115 | div.timenode .body { 116 | margin: 0 0 0 24px; 117 | padding: 16px; 118 | border-radius: 8px; 119 | background: #f6f6f6; 120 | display: inline-block; 121 | } 122 | 123 | div.timenode time { 124 | margin-left: 20px; 125 | } 126 | -------------------------------------------------------------------------------- /source/css/gallery.css: -------------------------------------------------------------------------------- 1 | .gallery-wrapper{ 2 | padding-top: 30px; 3 | } 4 | .gallery-wrapper .gallery-box{ 5 | padding: 5px !important; 6 | } 7 | 8 | .gallery-wrapper .gallery-item { 9 | display: block; 10 | overflow: hidden; 11 | background-color: #fff; 12 | padding: 5px; 13 | padding-bottom: 0; 14 | position: relative; 15 | -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 16 | -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 17 | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 18 | } 19 | 20 | .gallery-cover-box{ 21 | width: 100%; 22 | padding-top: 60%; 23 | text-align: center; 24 | overflow: hidden; 25 | position: relative; 26 | background: center center no-repeat; 27 | -webkit-background-size: cover; 28 | background-size: cover; 29 | } 30 | 31 | .gallery-cover-box .gallery-cover-img { 32 | display: inline-block; 33 | width: 100%; 34 | position: absolute; 35 | left: 50%; 36 | top: 50%; 37 | transform: translate(-50%,-50%); 38 | } 39 | .gallery-item .gallery-name{ 40 | font-size: 14px; 41 | line-height: 24px; 42 | text-align: center; 43 | color: #666; 44 | margin: 0; 45 | } 46 | 47 | .waterfall { 48 | column-count: 3; 49 | column-gap: 1em; 50 | } 51 | .photo-wrapper{ 52 | padding-top: 20px; 53 | } 54 | .photo-item { 55 | display: block; 56 | padding: 10px; 57 | padding-bottom: 0; 58 | margin-bottom: 14px; 59 | font-size: 0; 60 | -moz-page-break-inside: avoid; 61 | -webkit-column-break-inside: avoid; 62 | break-inside: avoid; 63 | background: white; 64 | -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 65 | -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 66 | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.22); 67 | } 68 | .photo-item img { 69 | width: 100%; 70 | } 71 | .photo-item .photo-name{ 72 | font-size: 14px; 73 | line-height: 30px; 74 | text-align: center; 75 | margin-top: 10px; 76 | margin-bottom: 10px; 77 | border-top: 1px solid #dddddd; 78 | } 79 | 80 | /*适配移动端布局*/ 81 | @media only screen and (max-width: 601px) { 82 | .waterfall { 83 | column-count: 2; 84 | column-gap: 1em; 85 | } 86 | } -------------------------------------------------------------------------------- /source/css/indexcover.css: -------------------------------------------------------------------------------- 1 | .carousel-control { 2 | width: 45px; 3 | height: 45px; 4 | line-height: 55px; 5 | border-radius: 45px; 6 | background: transparent; 7 | cursor: pointer; 8 | z-index: 100; 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | } 13 | 14 | #prev-cover { 15 | position: absolute; 16 | top: 48%; 17 | left: 8px; 18 | } 19 | 20 | #next-cover { 21 | position: absolute; 22 | top: 48%; 23 | right: 8px;; 24 | } 25 | 26 | #prev-cover i { 27 | margin-right: 3px; 28 | } 29 | 30 | #next-cover i { 31 | margin-left: 3px; 32 | } 33 | 34 | .carousel-control:hover { 35 | background-color: rgba(0, 0, 0, .4); 36 | } 37 | 38 | .carousel-control i { 39 | color: #fff; 40 | font-size: 2.4rem; 41 | } -------------------------------------------------------------------------------- /source/css/my-gitalk.css: -------------------------------------------------------------------------------- 1 | .gitalk-card { 2 | margin: 1.25rem auto; 3 | } 4 | 5 | .gitalk-card .card-content { 6 | padding: 1px 20px 20px 20px; 7 | } 8 | 9 | #gitalk-container .gt-no-init a { 10 | color: #42b983; 11 | text-decoration: underline; 12 | } 13 | 14 | #gitalk-container .gt-container .gt-btn, 15 | #gitalk-container .gt-btn-login, 16 | #gitalk-container .gt-container .gt-header-controls .gt-btn { 17 | border: 1px solid #4caf50; 18 | background-color: #4caf50; 19 | box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12); 20 | } 21 | 22 | #gitalk-container .gt-container .gt-link { 23 | color: #42b983; 24 | text-decoration: underline; 25 | } 26 | 27 | #gitalk-container .gt-container .gt-btn-preview { 28 | color: #4caf50; 29 | background-color: #fff !important; 30 | box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12); 31 | } 32 | 33 | #gitalk-container .gt-container .gt-header-textarea { 34 | background-color: #f6f9fc; 35 | border: 1px solid rgba(0, 0, 0, 0.05); 36 | } 37 | 38 | #gitalk-container .gt-container .gt-svg svg { 39 | fill: #42b983; 40 | } 41 | 42 | #gitalk-container .gt-container .gt-header-controls-tip, 43 | #gitalk-container .gt-container a, 44 | #gitalk-container .gt-container .gt-comment-username { 45 | color: #42b983; 46 | } 47 | 48 | #gitalk-container .gt-container .gt-ico-text { 49 | margin-left: 0.08rem; 50 | } 51 | 52 | #gitalk-container .gt-container .gt-comment-body { 53 | color: #34495e !important; 54 | } 55 | 56 | #gitalk-container .gt-container .gt-header-preview { 57 | border: 1px solid rgba(0, 0, 0, 0.02); 58 | background-color: #f9f9f9; 59 | } 60 | 61 | .markdown-body p { 62 | margin: 2px 2px 10px; 63 | font-size: 1.05rem; 64 | line-height: 1.78rem; 65 | } 66 | 67 | .markdown-body blockquote p { 68 | text-indent: 0.2rem; 69 | } 70 | 71 | .markdown-body a { 72 | padding: 0 2px; 73 | color: #42b983; 74 | font-weight: 500; 75 | text-decoration: underline; 76 | } 77 | 78 | .markdown-body img { 79 | max-width: 100%; 80 | height: auto; 81 | cursor: pointer; 82 | } 83 | 84 | .markdown-body ol li { 85 | list-style-type: decimal; 86 | } 87 | 88 | .markdown-body ol, 89 | ul { 90 | display: block; 91 | padding-left: 2em; 92 | word-spacing: 0.05rem; 93 | } 94 | 95 | .markdown-body ul li, 96 | ol li { 97 | display: list-item; 98 | line-height: 1.8rem; 99 | font-size: 1rem; 100 | } 101 | 102 | .markdown-body ul li { 103 | list-style-type: disc; 104 | } 105 | 106 | .markdown-body ul ul li { 107 | list-style-type: circle; 108 | } 109 | 110 | .markdown-body table, th, td { 111 | padding: 12px 13px; 112 | border: 1px solid #dfe2e5; 113 | } 114 | 115 | .markdown-body table, th, td { 116 | border: 0; 117 | } 118 | 119 | table tr:nth-child(2n), thead { 120 | background-color: #fafafa; 121 | } 122 | 123 | .markdown-body table th { 124 | background-color: #f2f2f2; 125 | min-width: 80px; 126 | } 127 | 128 | .markdown-body table td { 129 | min-width: 80px; 130 | } 131 | 132 | .markdown-body h1 { 133 | font-size: 1.85rem; 134 | font-weight: bold; 135 | line-height: 2.2rem; 136 | } 137 | 138 | .markdown-body h2 { 139 | font-size: 1.65rem; 140 | font-weight: bold; 141 | line-height: 1.9rem; 142 | } 143 | 144 | .markdown-body h3 { 145 | font-size: 1.45rem; 146 | font-weight: bold; 147 | line-height: 1.7rem; 148 | } 149 | 150 | .markdown-body h4 { 151 | font-size: 1.25rem; 152 | font-weight: bold; 153 | line-height: 1.5rem; 154 | } 155 | 156 | .markdown-body h5 { 157 | font-size: 1.1rem; 158 | font-weight: bold; 159 | line-height: 1.4rem; 160 | } 161 | 162 | .markdown-body h6 { 163 | font-size: 1rem; 164 | line-height: 1.3rem; 165 | } 166 | 167 | .markdown-body p { 168 | font-size: 1rem; 169 | line-height: 1.5rem; 170 | } 171 | 172 | .markdown-body hr { 173 | margin: 12px 0; 174 | border: 0; 175 | border-top: 1px solid #ccc; 176 | } 177 | 178 | .markdown-body blockquote { 179 | margin: 15px 0; 180 | border-left: 5px solid #42b983; 181 | padding: 1rem 0.8rem 1rem 0.8rem; 182 | color: #666; 183 | background-color: rgba(66, 185, 131, .1); 184 | } 185 | 186 | .markdown-body pre { 187 | padding: 1.2em; 188 | margin: .5em 0; 189 | background: #272822; 190 | overflow: auto; 191 | border-radius: 0.3em; 192 | tab-size: 4; 193 | } 194 | 195 | .markdown-body code { 196 | padding: 1px 1px; 197 | font-size: 0.92rem; 198 | color: #e96900; 199 | background-color: #f8f8f8; 200 | border-radius: 2px; 201 | } 202 | 203 | .markdown-body pre code { 204 | padding: 0; 205 | color: #e8eaf6; 206 | background-color: #272822; 207 | } 208 | 209 | .markdown-body pre[class*="language-"] { 210 | padding: 1.2em; 211 | margin: .5em 0; 212 | } 213 | 214 | .markdown-body code[class*="language-"], 215 | pre[class*="language-"] { 216 | color: #e8eaf6; 217 | } 218 | 219 | .markdown-body [type="checkbox"]:not(:checked), [type="checkbox"]:checked { 220 | position: inherit; 221 | margin-left: -1.3rem; 222 | margin-right: 0.4rem; 223 | margin-top: -1px; 224 | vertical-align: middle; 225 | left: unset; 226 | visibility: visible; 227 | } 228 | 229 | .markdown-body b, 230 | strong { 231 | font-weight: bold; 232 | } 233 | 234 | .markdown-body dfn { 235 | font-style: italic; 236 | } 237 | 238 | .markdown-body small { 239 | font-size: 85%; 240 | } 241 | 242 | .markdown-body cite { 243 | font-style: normal; 244 | } 245 | 246 | .markdown-body mark { 247 | background-color: #fcf8e3; 248 | padding: .2em; 249 | } 250 | -------------------------------------------------------------------------------- /source/css/my.css: -------------------------------------------------------------------------------- 1 | /* Here is your custom css styles. */ 2 | -------------------------------------------------------------------------------- /source/css/post.css: -------------------------------------------------------------------------------- 1 | #articleContent h1::before, 2 | #articleContent h2::before, 3 | #articleContent h3::before, 4 | #articleContent h4::before, 5 | #articleContent h5::before, 6 | #articleContent h6::before { 7 | display: block; 8 | content: " "; 9 | height: 100px; 10 | margin-top: -100px; 11 | visibility: hidden; 12 | } 13 | 14 | #articleContent :focus { 15 | outline: none; 16 | } 17 | 18 | .toc-fixed { 19 | position: fixed; 20 | top: 64px; 21 | } 22 | 23 | .toc-widget { 24 | width: 345px; 25 | padding-left: 20px; 26 | } 27 | 28 | .toc-widget .toc-title { 29 | padding: 35px 0 15px 17px; 30 | font-size: 1.5rem; 31 | font-weight: bold; 32 | line-height: 1.5rem; 33 | } 34 | 35 | .toc-widget ol { 36 | padding: 0; 37 | list-style: none; 38 | } 39 | 40 | #toc-content { 41 | padding-bottom: 30px; 42 | overflow: auto; 43 | } 44 | 45 | #toc-content ol { 46 | padding-left: 10px; 47 | } 48 | 49 | #toc-content ol li { 50 | padding-left: 10px; 51 | } 52 | 53 | #toc-content .toc-link:hover { 54 | color: #42b983; 55 | font-weight: 700; 56 | text-decoration: underline; 57 | } 58 | 59 | #toc-content .toc-link::before { 60 | background-color: transparent; 61 | max-height: 25px; 62 | 63 | position: absolute; 64 | right: 23.5vw; 65 | display: block; 66 | } 67 | 68 | #toc-content .is-active-link { 69 | color: #42b983; 70 | } 71 | 72 | #floating-toc-btn { 73 | position: fixed; 74 | right: 15px; 75 | bottom: 76px; 76 | padding-top: 15px; 77 | margin-bottom: 0; 78 | z-index: 998; 79 | } 80 | 81 | #floating-toc-btn .btn-floating { 82 | width: 48px; 83 | height: 48px; 84 | } 85 | 86 | #floating-toc-btn .btn-floating i { 87 | line-height: 48px; 88 | font-size: 1.4rem; 89 | } 90 | -------------------------------------------------------------------------------- /source/css/reward.css: -------------------------------------------------------------------------------- 1 | #reward { 2 | margin: 40px 0; 3 | text-align: center; 4 | } 5 | 6 | #reward .reward-link { 7 | font-size: 1.4rem; 8 | line-height: 38px; 9 | } 10 | 11 | #reward .btn-floating:hover { 12 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2); 13 | } 14 | 15 | #rewardModal { 16 | width: 320px; 17 | height: 350px; 18 | } 19 | 20 | #rewardModal .reward-title { 21 | margin: 15px auto; 22 | padding-bottom: 5px; 23 | } 24 | 25 | #rewardModal .modal-content { 26 | padding: 10px; 27 | } 28 | 29 | #rewardModal .close { 30 | position: absolute; 31 | right: 15px; 32 | top: 15px; 33 | color: rgba(0, 0, 0, 0.5); 34 | font-size: 1.3rem; 35 | line-height: 20px; 36 | cursor: pointer; 37 | } 38 | 39 | #rewardModal .close:hover { 40 | color: #ef5350; 41 | transform: scale(1.3); 42 | -moz-transform:scale(1.3); 43 | -webkit-transform:scale(1.3); 44 | -o-transform:scale(1.3); 45 | } 46 | 47 | #rewardModal .reward-tabs { 48 | margin: 0 auto; 49 | width: 210px; 50 | } 51 | 52 | .reward-tabs .tabs { 53 | height: 38px; 54 | margin: 10px auto; 55 | padding-left: 0; 56 | } 57 | 58 | .reward-content ul { 59 | padding-left: 0 !important; 60 | } 61 | 62 | .reward-tabs .tabs .tab { 63 | height: 38px; 64 | line-height: 38px; 65 | } 66 | 67 | .reward-tabs .tab a { 68 | color: #fff; 69 | background-color: #ccc; 70 | } 71 | 72 | .reward-tabs .tab a:hover { 73 | background-color: #ccc; 74 | color: #fff; 75 | } 76 | 77 | .reward-tabs .wechat-tab .active { 78 | color: #fff !important; 79 | background-color: #22AB38 !important; 80 | } 81 | 82 | .reward-tabs .alipay-tab .active { 83 | color: #fff !important; 84 | background-color: #019FE8 !important; 85 | } 86 | 87 | .reward-tabs .reward-img { 88 | width: 210px; 89 | height: 210px; 90 | } 91 | -------------------------------------------------------------------------------- /source/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/favicon.png -------------------------------------------------------------------------------- /source/js/gallery-encrypt.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function decryptAES(password) { 4 | 5 | try { 6 | 7 | var decryptionError = String(document.getElementById('decryptionError').innerHTML); 8 | var noContentError = String(document.getElementById('noContentError').innerHTML); 9 | 10 | } catch (e) { 11 | 12 | decryptionError = 'Incorrect Password!'; 13 | noContentError = 'No content to display!'; 14 | 15 | } 16 | 17 | try { 18 | 19 | let content = CryptoJS.AES.decrypt(document.getElementById('encrypt-blog').innerHTML.trim(), password); 20 | content = content.toString(CryptoJS.enc.Utf8); 21 | content = decodeBase64(content); 22 | content = unescape(content); 23 | if (content === '') { 24 | 25 | throw new Error(noContentError); // ??? 26 | 27 | } else { 28 | 29 | document.getElementById('encrypt-blog').style.display = 'inline'; 30 | document.getElementById('encrypt-blog').innerHTML = ''; 31 | 32 | // Use jquery to load some js code 33 | try { 34 | 35 | $('#encrypt-blog').html(content); 36 | 37 | // NO Style Change here 38 | 39 | // NO Style Change here 40 | 41 | } catch (e) { 42 | 43 | const errorInfo = '

' 44 | + 'Some errors occurred, check the original file please.' 45 | + 'Detailed exceptions are shown in console.' 46 | + '

'; 47 | console.error(e); 48 | $('#encrypt-blog').html(errorInfo); 49 | 50 | } 51 | 52 | document.getElementById('hbe-security').style.display = 'none'; 53 | if (document.getElementById('toc-div')) { 54 | 55 | document.getElementById('toc-div').style.display = 'inline'; 56 | 57 | } 58 | 59 | } 60 | 61 | // Call MathJax to render 62 | if (typeof MathJax !== 'undefined') { 63 | 64 | try { 65 | 66 | MathJax.Hub.Queue( 67 | ['resetEquationNumbers', MathJax.InputJax.TeX,], 68 | ['PreProcess', MathJax.Hub,], 69 | ['Reprocess', MathJax.Hub,] 70 | ); 71 | 72 | } catch (e) { 73 | 74 | console.log('Can\'t render with MathJax'); 75 | 76 | } 77 | 78 | } 79 | 80 | } catch (e) { 81 | 82 | alert(decryptionError); 83 | console.log(e); 84 | return false; 85 | 86 | } 87 | 88 | return true; 89 | 90 | } 91 | 92 | function htmlDecode(str) { 93 | 94 | let s = ''; 95 | if (str.length == 0) { 96 | 97 | return ''; 98 | 99 | } 100 | 101 | s = str.replace(/>/g, '&'); 102 | s = s.replace(/</g, '<'); 103 | s = s.replace(/>/g, '>'); 104 | s = s.replace(/ /g, ' '); // ??? why not ' ' 105 | s = s.replace(/'/g, '\''); 106 | s = s.replace(/"/g, '"'); 107 | s = s.replace(/
/g, '\n'); 108 | return s; 109 | 110 | } 111 | 112 | function decodeBase64(content) { 113 | 114 | content = CryptoJS.enc.Base64.parse(content); 115 | content = CryptoJS.enc.Utf8.stringify(content); 116 | return content; 117 | 118 | } 119 | 120 | function setCookie(cookieName, cookieValue, expireMinutes) { 121 | 122 | const expireTime = new Date(new Date().getTime() + 1000 * 60 * expireMinutes); 123 | document.cookie = `${cookieName}=${escape(cookieValue)}${expireMinutes == null ? '' : `;expires=${expireTime.toGMTString()}`}`; 124 | 125 | } 126 | 127 | function getCookie(cookieName) { 128 | 129 | if (document.cookie.length > 0) { 130 | 131 | let idx = document.cookie.indexOf(`${cookieName}=`); 132 | if (idx != -1) { 133 | 134 | idx = idx + cookieName.length + 1; 135 | let idy = document.cookie.indexOf(';', idx); 136 | if (idy == -1) { 137 | 138 | idy = document.cookie.length; 139 | 140 | } 141 | return unescape(document.cookie.substring(idx, idy)); 142 | 143 | } 144 | 145 | } 146 | return ''; 147 | 148 | } 149 | 150 | function GetUrlRelativePath() { 151 | 152 | const url = document.location.toString(); 153 | const arrUrl = url.split('//'); 154 | 155 | const start = arrUrl[1].indexOf('/'); 156 | let relUrl = arrUrl[1].substring(start); 157 | 158 | if (relUrl.indexOf('?') != -1) { 159 | 160 | relUrl = relUrl.split('?')[0]; 161 | 162 | } 163 | return relUrl; 164 | 165 | } 166 | 167 | function GenerateCookieName() { 168 | 169 | const COOKIE_NAME = 'HBE-PASSWORD'; 170 | return COOKIE_NAME + GetUrlRelativePath(); 171 | 172 | } 173 | 174 | // Since you decided to use jQuery. 175 | $(document).ready( 176 | function () { 177 | let password = String(getCookie(GenerateCookieName())); 178 | console.log(`Get password from Cookie:${password}`); 179 | 180 | if (password != '') { 181 | 182 | if (!decryptAES(password)) { 183 | // Delete cookie 184 | setCookie(COOKIE_NAME, password, -5); 185 | } else { 186 | 187 | document.getElementById('encrypt-blog').removeAttribute('style'); 188 | 189 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150}); 190 | } 191 | } 192 | document.getElementById('pass').onkeypress = function (keyPressEvent) { 193 | 194 | password = String(document.getElementById('pass').value); 195 | if (keyPressEvent.keyCode === 13) { 196 | 197 | const result = decryptAES(password); 198 | 199 | if (result) { 200 | document.getElementById('encrypt-blog').removeAttribute('style'); 201 | 202 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150}); 203 | 204 | setCookie(GenerateCookieName(), password, 30); 205 | } 206 | } 207 | }; 208 | $('#btn_decrypt').on('click', function () { 209 | 210 | password = String(document.getElementById('pass').value); 211 | 212 | const result = decryptAES(password); 213 | 214 | if (result) { 215 | 216 | document.getElementById('encrypt-blog').removeAttribute('style'); 217 | 218 | $("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150}); 219 | 220 | setCookie(GenerateCookieName(), password, 30); 221 | } 222 | }); 223 | } 224 | ); -------------------------------------------------------------------------------- /source/js/jquery.barrager.js: -------------------------------------------------------------------------------- 1 | /** 2 | *@name jquery.barrager.js 3 | *@version 1.1 4 | *@author yaseng@uauc.net 5 | *@url https://github.com/yaseng/jquery.barrager.js 6 | */ 7 | (function($) { 8 | $.fn.barrager = function(barrage) { 9 | barrage = $.extend({ 10 | close: true, 11 | max: 10, 12 | speed: 16, 13 | color: '#ffffff', 14 | }, barrage || {}); 15 | 16 | const time = new Date().getTime(); 17 | const barrager_id = 'barrage_' + time; 18 | const id = '#' + barrager_id; 19 | const div_barrager = $("
").appendTo($(this)); 20 | const this_height = $(window).height() * 0.35; 21 | const this_width = $(window).width() + 100; 22 | const array = [ 23 | (this_height / 5) + $(window).height() * 0.5, 24 | 2*(this_height / 5) + $(window).height() * 0.5, 25 | 3*(this_height / 5) + $(window).height() * 0.5, 26 | 4*(this_height / 5) + $(window).height() * 0.5, 27 | 5*(this_height / 5) + $(window).height() * 0.5 28 | ] 29 | const bottom =array[Math.floor(Math.random()*5)]; 30 | 31 | div_barrager.css("bottom", bottom + "px"); 32 | div_barrager_box = $("
").appendTo(div_barrager); 33 | if(barrage.img){ 34 | div_barrager_box.append(""); 35 | const img = $("").appendTo(id + " .barrage_box .portrait"); 36 | img.attr('src', barrage.img); 37 | } 38 | div_barrager_box.append("
"); 39 | if(barrage.close){ 40 | div_barrager_box.append("
"); 41 | } 42 | 43 | const content = $("").appendTo(id + " .barrage_box .p"); 44 | content.attr({ 45 | 'href': barrage.href, 46 | 'id': barrage.id 47 | }).empty().append(barrage.info); 48 | content.css('color', barrage.color); 49 | 50 | const i = 0; 51 | div_barrager.css('margin-right', 0); 52 | 53 | $(id).animate({right:this_width},barrage.speed*1000,function() 54 | { 55 | $(id).remove(); 56 | }); 57 | 58 | div_barrager_box.mouseover(function() 59 | { 60 | $(id).stop(true); 61 | }); 62 | 63 | div_barrager_box.mouseout(function() 64 | { 65 | $(id).animate({right:this_width},barrage.speed*1000,function() 66 | { 67 | $(id).remove(); 68 | }); 69 | }); 70 | 71 | $(id+'.barrage .barrage_box .close').click(function() 72 | { 73 | $(id).remove(); 74 | }) 75 | } 76 | 77 | 78 | $.fn.barrager.removeAll=function() 79 | { 80 | $('.barrage').remove(); 81 | } 82 | 83 | })(jQuery); 84 | -------------------------------------------------------------------------------- /source/js/search.js: -------------------------------------------------------------------------------- 1 | var searchFunc = function (path, search_id, content_id) { 2 | 'use strict'; 3 | $.ajax({ 4 | url: path, 5 | dataType: "xml", 6 | success: function (xmlResponse) { 7 | // get the contents from search data 8 | var datas = $("entry", xmlResponse).map(function () { 9 | return { 10 | title: $("title", this).text(), 11 | content: $("content", this).text(), 12 | url: $("url", this).text() 13 | }; 14 | }).get(); 15 | var $input = document.getElementById(search_id); 16 | var $resultContent = document.getElementById(content_id); 17 | $input.addEventListener('input', function () { 18 | var str = '"; 77 | str = "

共找到" + String(cnt-1) + "条结果

" + str; 78 | $resultContent.innerHTML = str; 79 | }); 80 | } 81 | }); 82 | } 83 | -------------------------------------------------------------------------------- /source/libs/aplayer/Meting.min.js: -------------------------------------------------------------------------------- 1 | "use strict";function _objectSpread(a){for(var b=1;bb.toUpperCase())}_init(){let a={};for(let b=0;ba.json()).then(a=>this._loadPlayer(a))}_loadPlayer(a){let b={audio:a,mutex:!0,lrcType:this.meta.lrcType||3,storageName:"metingjs"};if(a.length){let a=_objectSpread({},b,this.config);for(let b in a)("true"===a[b]||"false"===a[b])&&(a[b]="true"===a[b]);let c=document.createElement("div");a.container=c,this.appendChild(c),this.aplayer=new APlayer(a)}}}console.log("\n %c MetingJS v2.0.1 %c https://github.com/metowolf/MetingJS \n","color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),window.customElements&&!window.customElements.get("meting-js")&&(window.MetingJSElement=MetingJSElement,window.customElements.define("meting-js",MetingJSElement)); 2 | -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /source/libs/awesome/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/awesome/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /source/libs/background/canvas-nest.js: -------------------------------------------------------------------------------- 1 | ! function () { 2 | var userAgentInfo = navigator.userAgent; 3 | var Agents = ["iPad", "iPhone", "Android", 4 | "SymbianOS", "Windows Phone", 5 | "iPod", "webOS", "BlackBerry", "IEMobile" 6 | ]; 7 | for (var v = 0; v < Agents.length; v++) { 8 | if (userAgentInfo.indexOf(Agents[v]) > 0) { 9 | return; 10 | } 11 | } 12 | 13 | function o(w, v, i) { 14 | return w.getAttribute(v) || i 15 | } 16 | 17 | function j(i) { 18 | return document.getElementsByTagName(i) 19 | } 20 | 21 | function l() { 22 | var i = j("script"), 23 | w = i.length, 24 | v = i[w - 1]; 25 | return { 26 | l: w, 27 | z: o(v, "zIndex", -1), 28 | o: o(v, "opacity", 0.5), 29 | c: o(v, "color", "0,0,0"), 30 | n: o(v, "count", 99) 31 | } 32 | } 33 | 34 | function k() { 35 | r = u.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, n = u.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight 36 | } 37 | 38 | function b() { 39 | e.clearRect(0, 0, r, n); 40 | var w = [f].concat(t); 41 | var x, v, A, B, z, y; 42 | t.forEach(function (i) { 43 | i.x += i.xa, i.y += i.ya, i.xa *= i.x > r || i.x < 0 ? -1 : 1, i.ya *= i.y > n || i.y < 0 ? -1 : 1, e.fillRect(i.x - 0.5, i.y - 0.5, 1, 1); 44 | for (v = 0; v < w.length; v++) { 45 | x = w[v]; 46 | if (i !== x && null !== x.x && null !== x.y) { 47 | B = i.x - x.x, z = i.y - x.y, y = B * B + z * z; 48 | y < x.max && (x === f && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), A = (x.max - y) / x.max, e.beginPath(), e.lineWidth = A / 2, e.strokeStyle = "rgba(" + s.c + "," + (A + 0.2) + ")", e.moveTo(i.x, i.y), e.lineTo(x.x, x.y), e.stroke()) 49 | } 50 | } 51 | w.splice(w.indexOf(i), 1) 52 | }), m(b) 53 | } 54 | var u = document.createElement("canvas"), 55 | s = l(), 56 | c = "c_n" + s.l, 57 | e = u.getContext("2d"), 58 | r, n, m = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (i) { 59 | window.setTimeout(i, 1000 / 45) 60 | }, 61 | a = Math.random, 62 | f = { 63 | x: null, 64 | y: null, 65 | max: 20000 66 | }; 67 | u.id = c; 68 | u.style.cssText = "position:fixed;top:0;left:0;z-index:" + s.z + ";opacity:" + s.o; 69 | j("body")[0].appendChild(u); 70 | k(), window.onresize = k; 71 | window.onmousemove = function (i) { 72 | i = i || window.event, f.x = i.clientX, f.y = i.clientY 73 | }, window.onmouseout = function () { 74 | f.x = null, f.y = null 75 | }; 76 | for (var t = [], p = 0; s.n > p; p++) { 77 | var h = a() * r, 78 | g = a() * n, 79 | q = 2 * a() - 1, 80 | d = 2 * a() - 1; 81 | t.push({ 82 | x: h, 83 | y: g, 84 | xa: q, 85 | ya: d, 86 | max: 6000 87 | }) 88 | } 89 | setTimeout(function () { 90 | b() 91 | }, 100) 92 | }(); 93 | -------------------------------------------------------------------------------- /source/libs/background/ribbon-refresh.min.js: -------------------------------------------------------------------------------- 1 | !function(){function e(e,t,n){return Number(e.getAttribute(t))||n}function t(){for(r.clearRect(0,0,h,s),a=[{x:0,y:0.7*s+f},{x:0,y:0.7*s-f}];a[1].xs||l<0?i(e):l}var o=document.getElementsByTagName("script"),c=o[o.length-1];config={z:e(c,"zIndex",-1),a:e(c,"alpha",0.6),s:e(c,"size",90)};var a,l,d=document.createElement("canvas"),r=d.getContext("2d"),g=window.devicePixelRatio||1,h=window.innerWidth,s=window.innerHeight,f=config.s,u=Math,m=0,x=2*u.PI,y=u.cos,p=u.random;d.width=h*g,d.height=s*g,r.scale(g,g),r.globalAlpha=config.a,d.style.cssText="opacity: "+config.a+";position:fixed;top:0;left:0;z-index: "+config.z+";width:100%;height:100%;pointer-events:none;",document.getElementsByTagName("body")[0].appendChild(d),t()}(); -------------------------------------------------------------------------------- /source/libs/background/ribbon.min.js: -------------------------------------------------------------------------------- 1 | !function(){function e(e,t,n){return Number(e.getAttribute(t))||n}function t(){for(r.clearRect(0,0,h,s),a=[{x:0,y:0.7*s+f},{x:0,y:0.7*s-f}];a[1].xs||l<0?i(e):l}var o=document.getElementsByTagName("script"),c=o[o.length-1];config={z:e(c,"zIndex",-1),a:e(c,"alpha",0.6),s:e(c,"size",90)};var a,l,d=document.createElement("canvas"),r=d.getContext("2d"),g=window.devicePixelRatio||1,h=window.innerWidth,s=window.innerHeight,f=config.s,u=Math,m=0,x=2*u.PI,y=u.cos,p=u.random;d.width=h*g,d.height=s*g,r.scale(g,g),r.globalAlpha=config.a,d.style.cssText="opacity: "+config.a+";position:fixed;top:0;left:0;z-index: "+config.z+";width:100%;height:100%;pointer-events:none;",document.getElementsByTagName("body")[0].appendChild(d),document.onclick=t,document.ontouchstart=t,t()}(); -------------------------------------------------------------------------------- /source/libs/codeBlock/codeBlockFuction.js: -------------------------------------------------------------------------------- 1 | // 代码块功能依赖 2 | 3 | $(function () { 4 | $('pre').wrap('
'); 5 | }); -------------------------------------------------------------------------------- /source/libs/codeBlock/codeCopy.js: -------------------------------------------------------------------------------- 1 | // 代码块一键复制 2 | 3 | $(function () { 4 | var $copyIcon = $('') 5 | var $notice = $('
') 6 | $('.code-area').prepend($copyIcon) 7 | $('.code-area').prepend($notice) 8 | // “复制成功”字出现 9 | function copy(text, ctx) { 10 | if (document.queryCommandSupported && document.queryCommandSupported('copy')) { 11 | try { 12 | document.execCommand('copy') // Security exception may be thrown by some browsers. 13 | $(ctx).prev('.codecopy_notice') 14 | .text("复制成功") 15 | .animate({ 16 | opacity: 1, 17 | top: 30 18 | }, 450, function () { 19 | setTimeout(function () { 20 | $(ctx).prev('.codecopy_notice').animate({ 21 | opacity: 0, 22 | top: 0 23 | }, 650) 24 | }, 400) 25 | }) 26 | } catch (ex) { 27 | $(ctx).prev('.codecopy_notice') 28 | .text("复制失败") 29 | .animate({ 30 | opacity: 1, 31 | top: 30 32 | }, 650, function () { 33 | setTimeout(function () { 34 | $(ctx).prev('.codecopy_notice').animate({ 35 | opacity: 0, 36 | top: 0 37 | }, 650) 38 | }, 400) 39 | }) 40 | return false 41 | } 42 | } else { 43 | $(ctx).prev('.codecopy_notice').text("浏览器不支持复制") 44 | } 45 | } 46 | // 复制 47 | $('.code-area .fa-copy').on('click', function () { 48 | var selection = window.getSelection() 49 | var range = document.createRange() 50 | range.selectNodeContents($(this).siblings('pre').find('code')[0]) 51 | selection.removeAllRanges() 52 | selection.addRange(range) 53 | var text = selection.toString() 54 | copy(text, this) 55 | selection.removeAllRanges() 56 | }) 57 | }); 58 | -------------------------------------------------------------------------------- /source/libs/codeBlock/codeLang.js: -------------------------------------------------------------------------------- 1 | // 代码块语言识别 2 | 3 | $(function () { 4 | var $highlight_lang = $('
'); 5 | 6 | $('pre').before($highlight_lang); 7 | $('pre').each(function () { 8 | var code_language = $(this).attr('class'); 9 | 10 | if (!code_language) { 11 | return true; 12 | }; 13 | var lang_name = code_language.replace("line-numbers", "").trim().replace("language-", "").trim(); 14 | 15 | // 首字母大写 16 | // lang_name = lang_name.slice(0, 1).toUpperCase() + lang_name.slice(1); 17 | 18 | $(this).siblings(".code_lang").text(lang_name); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /source/libs/codeBlock/codeShrink.js: -------------------------------------------------------------------------------- 1 | // 代码块收缩 2 | 3 | $(function () { 4 | var $code_expand = $(''); 5 | 6 | $('.code-area').prepend($code_expand); 7 | $('.code-expand').on('click', function () { 8 | if ($(this).parent().hasClass('code-closed')) { 9 | $(this).siblings('pre').find('code').show(); 10 | $(this).parent().removeClass('code-closed'); 11 | } else { 12 | $(this).siblings('pre').find('code').hide(); 13 | $(this).parent().addClass('code-closed'); 14 | } 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /source/libs/instantpage/instantpage.js: -------------------------------------------------------------------------------- 1 | /*! instant.page v2.0.0 - (C) 2019 Alexandre Dieulot - https://instant.page/license */ 2 | 3 | let urlToPreload 4 | let mouseoverTimer 5 | let lastTouchTimestamp 6 | 7 | const prefetcher = document.createElement('link') 8 | const isSupported = prefetcher.relList && prefetcher.relList.supports && prefetcher.relList.supports('prefetch') 9 | const isDataSaverEnabled = navigator.connection && navigator.connection.saveData 10 | const allowQueryString = 'instantAllowQueryString' in document.body.dataset 11 | const allowExternalLinks = 'instantAllowExternalLinks' in document.body.dataset 12 | const useWhitelist = 'instantWhitelist' in document.body.dataset 13 | 14 | let delayOnHover = 65 15 | let useMousedown = false 16 | let useMousedownOnly = false 17 | if ('instantIntensity' in document.body.dataset) { 18 | if (document.body.dataset.instantIntensity.substr(0, 'mousedown'.length) == 'mousedown') { 19 | useMousedown = true 20 | if (document.body.dataset.instantIntensity == 'mousedown-only') { 21 | useMousedownOnly = true 22 | } 23 | } else { 24 | const milliseconds = parseInt(document.body.dataset.instantIntensity) 25 | if (!isNaN(milliseconds)) { 26 | delayOnHover = milliseconds 27 | } 28 | } 29 | } 30 | 31 | if (isSupported && !isDataSaverEnabled) { 32 | prefetcher.rel = 'prefetch' 33 | document.head.appendChild(prefetcher) 34 | 35 | const eventListenersOptions = { 36 | capture: true, 37 | passive: true, 38 | } 39 | 40 | if (!useMousedownOnly) { 41 | document.addEventListener('touchstart', touchstartListener, eventListenersOptions) 42 | } 43 | 44 | if (!useMousedown) { 45 | document.addEventListener('mouseover', mouseoverListener, eventListenersOptions) 46 | } else { 47 | document.addEventListener('mousedown', mousedownListener, eventListenersOptions) 48 | } 49 | } 50 | 51 | function touchstartListener(event) { 52 | /* Chrome on Android calls mouseover before touchcancel so `lastTouchTimestamp` 53 | * must be assigned on touchstart to be measured on mouseover. */ 54 | lastTouchTimestamp = performance.now() 55 | 56 | const linkElement = event.target.closest('a') 57 | 58 | if (!isPreloadable(linkElement)) { 59 | return 60 | } 61 | 62 | linkElement.addEventListener('touchcancel', touchendAndTouchcancelListener, { 63 | passive: true 64 | }) 65 | linkElement.addEventListener('touchend', touchendAndTouchcancelListener, { 66 | passive: true 67 | }) 68 | 69 | urlToPreload = linkElement.href 70 | preload(linkElement.href) 71 | } 72 | 73 | function touchendAndTouchcancelListener() { 74 | urlToPreload = undefined 75 | stopPreloading() 76 | } 77 | 78 | function mouseoverListener(event) { 79 | if (performance.now() - lastTouchTimestamp < 1100) { 80 | return 81 | } 82 | 83 | const linkElement = event.target.closest('a') 84 | 85 | if (!isPreloadable(linkElement)) { 86 | return 87 | } 88 | 89 | linkElement.addEventListener('mouseout', mouseoutListener, { 90 | passive: true 91 | }) 92 | 93 | urlToPreload = linkElement.href 94 | 95 | mouseoverTimer = setTimeout(() => { 96 | preload(linkElement.href) 97 | mouseoverTimer = undefined 98 | }, delayOnHover) 99 | } 100 | 101 | function mousedownListener(event) { 102 | const linkElement = event.target.closest('a') 103 | 104 | if (!isPreloadable(linkElement)) { 105 | return 106 | } 107 | 108 | linkElement.addEventListener('mouseout', mouseoutListener, { 109 | passive: true 110 | }) 111 | 112 | urlToPreload = linkElement.href 113 | 114 | preload(linkElement.href) 115 | } 116 | 117 | function mouseoutListener(event) { 118 | if (event.relatedTarget && event.target.closest('a') == event.relatedTarget.closest('a')) { 119 | return 120 | } 121 | 122 | if (mouseoverTimer) { 123 | clearTimeout(mouseoverTimer) 124 | mouseoverTimer = undefined 125 | } 126 | 127 | urlToPreload = undefined 128 | 129 | stopPreloading() 130 | } 131 | 132 | function isPreloadable(linkElement) { 133 | if (!linkElement || !linkElement.href) { 134 | return 135 | } 136 | 137 | if (urlToPreload == linkElement.href) { 138 | return 139 | } 140 | 141 | if (useWhitelist && !('instant' in linkElement.dataset)) { 142 | return 143 | } 144 | 145 | if (!allowExternalLinks && linkElement.origin != location.origin && !('instant' in linkElement.dataset)) { 146 | return 147 | } 148 | 149 | if (!['http:', 'https:'].includes(linkElement.protocol)) { 150 | return 151 | } 152 | 153 | if (linkElement.protocol == 'http:' && location.protocol == 'https:') { 154 | return 155 | } 156 | 157 | if (!allowQueryString && linkElement.search && !('instant' in linkElement.dataset)) { 158 | return 159 | } 160 | 161 | if (linkElement.hash && linkElement.pathname + linkElement.search == location.pathname + location.search) { 162 | return 163 | } 164 | 165 | if ('noInstant' in linkElement.dataset) { 166 | return 167 | } 168 | 169 | return true 170 | } 171 | 172 | function preload(url) { 173 | prefetcher.href = url 174 | } 175 | 176 | function stopPreloading() { 177 | prefetcher.removeAttribute('href') 178 | } 179 | -------------------------------------------------------------------------------- /source/libs/jqcloud/jqcloud-1.0.4.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQCloud Plugin for jQuery 3 | * 4 | * Version 1.0.4 5 | * 6 | * Copyright 2011, Luca Ongaro 7 | * Licensed under the MIT license. 8 | * 9 | * Date: 2013-05-09 18:54:22 +0200 10 | */ 11 | (function(e){"use strict";e.fn.jQCloud=function(t,n){var r=this,i=r.attr("id")||Math.floor(Math.random()*1e6).toString(36),s={width:r.width(),height:r.height(),center:{x:(n&&n.width?n.width:r.width())/2,y:(n&&n.height?n.height:r.height())/2},delayedMode:t.length>50,shape:!1,encodeURI:!0,removeOverflowing:!0};n=e.extend(s,n||{}),r.addClass("jqcloud").width(n.width).height(n.height),r.css("position")==="static"&&r.css("position","relative");var o=function(){var s=function(e,t){var n=function(e,t){return Math.abs(2*e.offsetLeft+e.offsetWidth-2*t.offsetLeft-t.offsetWidth)t.weight?-1:0});var u=n.shape==="rectangular"?18:2,a=[],f=n.width/n.height,l=function(o,l){var c=i+"_word_"+o,h="#"+c,p=6.28*Math.random(),d=0,v=0,m=0,g=5,y="",b="",w;l.html=e.extend(l.html,{id:c}),l.html&&l.html["class"]&&(y=l.html["class"],delete l.html["class"]),t[0].weight>t[t.length-1].weight&&(g=Math.round((l.weight-t[t.length-1].weight)/(t[0].weight-t[t.length-1].weight)*9)+1),w=e("").attr(l.html).addClass("w"+g+" "+y),l.link?(typeof l.link=="string"&&(l.link={href:l.link}),n.encodeURI&&(l.link=e.extend(l.link,{href:encodeURI(l.link.href).replace(/'/g,"%27")})),b=e("").attr(l.link).text(l.text)):b=l.text,w.append(b);if(!!l.handlers)for(var E in l.handlers)l.handlers.hasOwnProperty(E)&&typeof l.handlers[E]=="function"&&e(w).bind(E,l.handlers[E]);r.append(w);var S=w.width(),x=w.height(),T=n.center.x-S/2,N=n.center.y-x/2,C=w[0].style;C.position="absolute",C.left=T+"px",C.top=N+"px";while(s(w[0],a)){if(n.shape==="rectangular"){v++,v*u>(1+Math.floor(m/2))*u*(m%4%2===0?1:f)&&(v=0,m++);switch(m%4){case 1:T+=u*f+Math.random()*2;break;case 2:N-=u+Math.random()*2;break;case 3:T-=u*f+Math.random()*2;break;case 0:N+=u+Math.random()*2}}else d+=u,p+=(o%2===0?1:-1)*u,T=n.center.x-S/2+d*Math.cos(p)*f,N=n.center.y+d*Math.sin(p)-x/2;C.left=T+"px",C.top=N+"px"}if(n.removeOverflowing&&(T<0||N<0||T+S>n.width||N+x>n.height)){w.remove();return}a.push(w[0]),e.isFunction(l.afterWordRender)&&l.afterWordRender.call(w)},c=function(i){i=i||0;if(!r.is(":visible")){setTimeout(function(){c(i)},10);return}i a, 13 | .justified-gallery > div, 14 | .justified-gallery > figure { 15 | position: absolute; 16 | display: inline-block; 17 | overflow: hidden; 18 | /* background: #888888; To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */ 19 | filter: "alpha(opacity=10)"; 20 | opacity: 0.1; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | .justified-gallery > a > img, 25 | .justified-gallery > div > img, 26 | .justified-gallery > figure > img, 27 | .justified-gallery > a > a > img, 28 | .justified-gallery > div > a > img, 29 | .justified-gallery > figure > a > img { 30 | position: absolute; 31 | top: 50%; 32 | left: 50%; 33 | margin: 0; 34 | padding: 0; 35 | border: none; 36 | filter: "alpha(opacity=0)"; 37 | opacity: 0; 38 | } 39 | .justified-gallery > a > .caption, 40 | .justified-gallery > div > .caption, 41 | .justified-gallery > figure > .caption { 42 | display: none; 43 | position: absolute; 44 | bottom: 0; 45 | padding: 5px; 46 | background-color: #000000; 47 | left: 0; 48 | right: 0; 49 | margin: 0; 50 | color: white; 51 | font-size: 12px; 52 | font-weight: 300; 53 | font-family: sans-serif; 54 | } 55 | .justified-gallery > a > .caption.caption-visible, 56 | .justified-gallery > div > .caption.caption-visible, 57 | .justified-gallery > figure > .caption.caption-visible { 58 | display: initial; 59 | filter: "alpha(opacity=70)"; 60 | opacity: 0.7; 61 | -webkit-transition: opacity 500ms ease-in; 62 | -moz-transition: opacity 500ms ease-in; 63 | -o-transition: opacity 500ms ease-in; 64 | transition: opacity 500ms ease-in; 65 | } 66 | .justified-gallery > .entry-visible { 67 | filter: "alpha(opacity=100)"; 68 | opacity: 1; 69 | background: none; 70 | } 71 | .justified-gallery > .entry-visible > img, 72 | .justified-gallery > .entry-visible > a > img { 73 | filter: "alpha(opacity=100)"; 74 | opacity: 1; 75 | -webkit-transition: opacity 500ms ease-in; 76 | -moz-transition: opacity 500ms ease-in; 77 | -o-transition: opacity 500ms ease-in; 78 | transition: opacity 500ms ease-in; 79 | } 80 | .justified-gallery > .jg-filtered { 81 | display: none; 82 | } 83 | .justified-gallery > .spinner { 84 | position: absolute; 85 | bottom: 0; 86 | margin-left: -24px; 87 | padding: 10px 0 10px 0; 88 | left: 50%; 89 | filter: "alpha(opacity=100)"; 90 | opacity: 1; 91 | overflow: initial; 92 | } 93 | .justified-gallery > .spinner > span { 94 | display: inline-block; 95 | filter: "alpha(opacity=0)"; 96 | opacity: 0; 97 | width: 8px; 98 | height: 8px; 99 | margin: 0 4px 0 4px; 100 | background-color: #000; 101 | border-radius: 6px; 102 | } -------------------------------------------------------------------------------- /source/libs/lightGallery/fonts/lg.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/fonts/lg.ttf -------------------------------------------------------------------------------- /source/libs/lightGallery/fonts/lg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/fonts/lg.woff -------------------------------------------------------------------------------- /source/libs/lightGallery/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/loading.gif -------------------------------------------------------------------------------- /source/libs/lightGallery/img/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/video-play.png -------------------------------------------------------------------------------- /source/libs/lightGallery/img/vimeo-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/vimeo-play.png -------------------------------------------------------------------------------- /source/libs/lightGallery/img/youtube-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/lightGallery/img/youtube-play.png -------------------------------------------------------------------------------- /source/libs/mermaid/mermaid.min.css: -------------------------------------------------------------------------------- 1 | .loopLine,.messageLine0{marker-end:"url(#arrowhead)"}.node text,.noteText,div.mermaidTooltip{font-family:'trebuchet ms',verdana,arial}.mermaid .label{color:#333}.node circle,.node ellipse,.node polygon,.node rect{fill:#ECECFF;stroke:#CCF;stroke-width:1px}.edgePath .path{stroke:#333}.edgeLabel{background-color:#e8e8e8}.cluster rect{fill:#ffffde!important;rx:4!important;stroke:#aa3!important;stroke-width:1px!important}.cluster text{fill:#333}.actor{stroke:#CCF;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0,.messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#arrowhead{fill:#333}#crosshead path{fill:#333!important;stroke:#333!important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#CCF;fill:#ECECFF}.labelText,.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:"2 2";stroke:#CCF}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:#000;stroke:none;font-size:14px}.section{stroke:none;opacity:.2}.section0{fill:rgba(102,102,255,.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:.2}.sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000!important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000!important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000!important}.titleText{text-anchor:middle;font-size:18px;fill:#000}.node text{font-size:14px}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100} -------------------------------------------------------------------------------- /source/libs/minivaline/MiniValine.js: -------------------------------------------------------------------------------- 1 | function loadScript(src,cb){var HEAD=document.getElementsByTagName('head')[0]||document.documentElement;var script=document.createElement('script');script.setAttribute('type','text/javascript');if(cb)script.onload=cb;script.setAttribute('src',src);HEAD.appendChild(script)};loadScript('https://cdn.jsdelivr.net/npm/minivaline@latest') -------------------------------------------------------------------------------- /source/libs/others/TencentCaptcha.js: -------------------------------------------------------------------------------- 1 | onIsOff = true;//用来控制重复运行的定时器的开关 2 | window.callback = function(res){ 3 | if(res.ret === 0){ 4 | window.clearInterval(t2);//如果验证成功就结束定时器 5 | } 6 | if(res.ret === 2){ 7 | onIsOff = true;//如果验证失败就继续运行定时器 8 | } 9 | } 10 | 11 | var t2 = window.setInterval(function() {//重复运行的定时器,每一秒执行一次函数 12 | if (onIsOff == true){ 13 | act = document.activeElement.id;//获取当前焦点的id 14 | if(act=="veditor")//判断评论输入框是否获得焦点 15 | { 16 | document.getElementById("TencentCaptcha").click();//触发id为TencentCaptcha的按钮 17 | onIsOff = false;//触发过程中暂时关闭定时器 18 | } 19 | } 20 | },1000); -------------------------------------------------------------------------------- /source/libs/others/busuanzi.pure.mini.js: -------------------------------------------------------------------------------- 1 | var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||"interactive"===document.readyState||"complete"===document.readyState?c.call(document):b.push(function(){return c.call(this)}),this},d=function(){for(var a=0,c=b.length;c>a;a++)b[a].apply(document);b=[]},e=function(){a||(a=!0,d.call(window),document.removeEventListener?document.removeEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.detachEvent("onreadystatechange",e),window==window.top&&(clearInterval(c),c=null)))},document.addEventListener?document.addEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){/loaded|complete/.test(document.readyState)&&e()}),window==window.top&&(c=setInterval(function(){try{a||document.documentElement.doScroll("left")}catch(b){return}e()},5)))}(),bszCaller={fetch:function(a,b){var c="BusuanziCallback_"+Math.floor(1099511627776*Math.random());window[c]=this.evalCall(b),a=a.replace("=BusuanziCallback","="+c),scriptTag=document.createElement("SCRIPT"),scriptTag.type="text/javascript",scriptTag.defer=!0,scriptTag.src=a,document.getElementsByTagName("HEAD")[0].appendChild(scriptTag)},evalCall:function(a){return function(b){ready(function(){try{a(b),scriptTag.parentElement.removeChild(scriptTag)}catch(c){bszTag.hides()}})}}},bszCaller.fetch("//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback",function(a){bszTag.texts(a),bszTag.shows()}),bszTag={bszs:["site_pv","page_pv","site_uv"],texts:function(a){this.bszs.map(function(b){var c=document.getElementById("busuanzi_value_"+b);c&&(c.innerHTML=a[b])})},hides:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="none")})},shows:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="inline")})}}; -------------------------------------------------------------------------------- /source/libs/others/clicklove.js: -------------------------------------------------------------------------------- 1 | !function(e,t,a){function r(){for(var e=0;e').css({'position': 'absolute','z-index':'9999', 'top': '-50px'}).html('❄'), 6 | documentHeight = $(document).height(), 7 | documentWidth = $(document).width(), 8 | defaults = { 9 | minSize : 10, 10 | maxSize : 20, 11 | newOn : 1000, 12 | flakeColor : "#AFDAEF" /* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF */ 13 | }, 14 | options = $.extend({}, defaults, options); 15 | var interval= setInterval( function(){ 16 | var startPositionLeft = Math.random() * documentWidth - 100, 17 | startOpacity = 0.5 + Math.random(), 18 | sizeFlake = options.minSize + Math.random() * options.maxSize, 19 | endPositionTop = documentHeight - 200, 20 | endPositionLeft = startPositionLeft - 500 + Math.random() * 500, 21 | durationFall = documentHeight * 10 + Math.random() * 5000; 22 | $flake.clone().appendTo('body').css({ 23 | left: startPositionLeft, 24 | opacity: startOpacity, 25 | 'font-size': sizeFlake, 26 | color: options.flakeColor 27 | }).animate({ 28 | top: endPositionTop, 29 | left: endPositionLeft, 30 | opacity: 0.2 31 | },durationFall,'linear',function(){ 32 | $(this).remove() 33 | }); 34 | }, options.newOn); 35 | }; 36 | })(jQuery); 37 | $(function(){ 38 | $.fn.snow({ 39 | minSize: 5, /* 定义雪花最小尺寸 */ 40 | maxSize: 50,/* 定义雪花最大尺寸 */ 41 | newOn: 500 /* 定义密集程度,数字越小越密集 */ 42 | }); 43 | }); -------------------------------------------------------------------------------- /source/libs/others/star.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Fairy Dust Cursor.js 3 | * - 90's cursors collection 4 | * -- https://github.com/tholman/90s-cursor-effects 5 | * -- http://codepen.io/tholman/full/jWmZxZ/ 6 | */ 7 | 8 | //鼠标点击雪花特效 9 | (function fairyDustCursor() { 10 | 11 | var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"] 12 | var width = window.innerWidth; 13 | var height = window.innerHeight; 14 | var cursor = {x: width/2, y: width/2}; 15 | var particles = []; 16 | 17 | function init() { 18 | bindEvents(); 19 | loop(); 20 | } 21 | 22 | // Bind events that are needed 23 | function bindEvents() { 24 | document.addEventListener('mousemove', onMouseMove); 25 | document.addEventListener('touchmove', onTouchMove); 26 | document.addEventListener('touchstart', onTouchMove); 27 | 28 | window.addEventListener('resize', onWindowResize); 29 | } 30 | 31 | function onWindowResize(e) { 32 | width = window.innerWidth; 33 | height = window.innerHeight; 34 | } 35 | 36 | function onTouchMove(e) { 37 | if( e.touches.length > 0 ) { 38 | for( var i = 0; i < e.touches.length; i++ ) { 39 | addParticle( e.touches[i].clientX, e.touches[i].clientY, possibleColors[Math.floor(Math.random()*possibleColors.length)]); 40 | } 41 | } 42 | } 43 | 44 | function onMouseMove(e) { 45 | cursor.x = e.clientX; 46 | cursor.y = e.clientY; 47 | 48 | addParticle( cursor.x, cursor.y, possibleColors[Math.floor(Math.random()*possibleColors.length)]); 49 | } 50 | 51 | function addParticle(x, y, color) { 52 | var particle = new Particle(); 53 | particle.init(x, y, color); 54 | particles.push(particle); 55 | } 56 | 57 | function updateParticles() { 58 | 59 | // Updated 60 | for( var i = 0; i < particles.length; i++ ) { 61 | particles[i].update(); 62 | } 63 | 64 | // Remove dead particles 65 | for( var i = particles.length -1; i >= 0; i-- ) { 66 | if( particles[i].lifeSpan < 0 ) { 67 | particles[i].die(); 68 | particles.splice(i, 1); 69 | } 70 | } 71 | 72 | } 73 | 74 | function loop() { 75 | requestAnimationFrame(loop); 76 | updateParticles(); 77 | } 78 | 79 | /** 80 | * Particles 81 | */ 82 | 83 | function Particle() { 84 | 85 | this.character = "*"; 86 | this.lifeSpan = 120; //ms 87 | this.initialStyles ={ 88 | "position": "fixed", 89 | "top": "0", //必须加 90 | "display": "block", 91 | "pointerEvents": "none", 92 | "z-index": "10000000", 93 | "fontSize": "20px", 94 | "will-change": "transform" 95 | }; 96 | 97 | // Init, and set properties 98 | this.init = function(x, y, color) { 99 | 100 | this.velocity = { 101 | x: (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2), 102 | y: 1 103 | }; 104 | 105 | this.position = {x: x - 10, y: y - 20}; 106 | this.initialStyles.color = color; 107 | console.log(color); 108 | 109 | this.element = document.createElement('span'); 110 | this.element.innerHTML = this.character; 111 | applyProperties(this.element, this.initialStyles); 112 | this.update(); 113 | 114 | document.body.appendChild(this.element); 115 | }; 116 | 117 | this.update = function() { 118 | this.position.x += this.velocity.x; 119 | this.position.y += this.velocity.y; 120 | this.lifeSpan--; 121 | 122 | this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px,0) scale(" + (this.lifeSpan / 120) + ")"; 123 | } 124 | 125 | this.die = function() { 126 | this.element.parentNode.removeChild(this.element); 127 | } 128 | 129 | } 130 | 131 | /** 132 | * Utils 133 | */ 134 | 135 | // Applies css `properties` to an element. 136 | function applyProperties( target, properties ) { 137 | for( var key in properties ) { 138 | target.style[ key ] = properties[ key ]; 139 | } 140 | } 141 | 142 | init(); 143 | })(); -------------------------------------------------------------------------------- /source/libs/scrollprogress/scrollProgress.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ScrollProgress=e()}(this,function(){"use strict";function t(){}var e=function(e){this._handleUpdate="function"==typeof e?e:t,this._viewportHeight=this._getViewportHeight(),this._viewportWidth=this._getViewportWidth(),this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y),this._onScroll=this._onScroll.bind(this),this._onResize=this._onResize.bind(this),window.addEventListener("scroll",this._onScroll),window.addEventListener("resize",this._onResize)};return e.prototype._getViewportHeight=function(){return document.body.scrollHeight-window.innerHeight},e.prototype._getViewportWidth=function(){return document.body.scrollWidth-window.innerWidth},e.prototype._getProgress=function(){var t=void 0===window.scrollX?window.pageXOffset:window.scrollX,e=void 0===window.scrollY?window.pageYOffset:window.scrollY;return{x:0===this._viewportWidth?0:t/this._viewportWidth,y:0===this._viewportHeight?0:e/this._viewportHeight}},e.prototype._onScroll=function(){this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y)},e.prototype._onResize=function(){this._viewportHeight=this._getViewportHeight(),this._viewportWidth=this._getViewportWidth(),this._progress=this._getProgress(),this._handleUpdate(this._progress.x,this._progress.y)},e.prototype.trigger=function(){this._handleUpdate(this._progress.x,this._progress.y)},e.prototype.destroy=function(){window.removeEventListener("scroll",this._onScroll),window.removeEventListener("resize",this._onResize),this._handleUpdate=null},e}); -------------------------------------------------------------------------------- /source/libs/share/css/share.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:"socialshare";src:url("../fonts/iconfont.eot");src:url("../fonts/iconfont.eot?#iefix") format("embedded-opentype"),url("../fonts/iconfont.woff") format("woff"),url("../fonts/iconfont.ttf") format("truetype"),url("../fonts/iconfont.svg#iconfont") format("svg")}.social-share{font-family:"socialshare" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale}.social-share *{font-family:"socialshare" !important}.social-share .icon-tencent:before{content:"\f07a"}.social-share .icon-qq:before{content:"\f11a"}.social-share .icon-weibo:before{content:"\f12a"}.social-share .icon-wechat:before{content:"\f09a"}.social-share .icon-douban:before{content:"\f10a"}.social-share .icon-heart:before{content:"\f20a"}.social-share .icon-like:before{content:"\f00a"}.social-share .icon-qzone:before{content:"\f08a"}.social-share .icon-linkedin:before{content:"\f01a"}.social-share .icon-diandian:before{content:"\f05a"}.social-share .icon-facebook:before{content:"\f03a"}.social-share .icon-google:before{content:"\f04a"}.social-share .icon-twitter:before{content:"\f06a"}.social-share a{position:relative;text-decoration:none;margin:4px;display:inline-block;outline:none}.social-share .social-share-icon{position:relative;display:inline-block;width:32px;height:32px;font-size:20px;border-radius:50%;line-height:32px;border:1px solid #666;color:#666;text-align:center;vertical-align:middle;transition:background 0.6s ease-out 0s}.social-share .social-share-icon:hover{background:#666;color:#fff}.social-share .icon-weibo{color:#ff763b;border-color:#ff763b}.social-share .icon-weibo:hover{background:#ff763b}.social-share .icon-tencent{color:#56b6e7;border-color:#56b6e7}.social-share .icon-tencent:hover{background:#56b6e7}.social-share .icon-qq{color:#56b6e7;border-color:#56b6e7}.social-share .icon-qq:hover{background:#56b6e7}.social-share .icon-qzone{color:#FDBE3D;border-color:#FDBE3D}.social-share .icon-qzone:hover{background:#FDBE3D}.social-share .icon-douban{color:#33b045;border-color:#33b045}.social-share .icon-douban:hover{background:#33b045}.social-share .icon-linkedin{color:#0077B5;border-color:#0077B5}.social-share .icon-linkedin:hover{background:#0077B5}.social-share .icon-facebook{color:#44619D;border-color:#44619D}.social-share .icon-facebook:hover{background:#44619D}.social-share .icon-google{color:#db4437;border-color:#db4437}.social-share .icon-google:hover{background:#db4437}.social-share .icon-twitter{color:#55acee;border-color:#55acee}.social-share .icon-twitter:hover{background:#55acee}.social-share .icon-diandian{color:#307DCA;border-color:#307DCA}.social-share .icon-diandian:hover{background:#307DCA}.social-share .icon-wechat{position:relative;color:#7bc549;border-color:#7bc549}.social-share .icon-wechat:hover{background:#7bc549}.social-share .icon-wechat .wechat-qrcode{display:none;border:1px solid #eee;position:absolute;z-index:9;top:-205px;left:-84px;width:200px;height:192px;color:#666;font-size:12px;text-align:center;background-color:#fff;box-shadow:0 2px 10px #aaa;transition:all 200ms;-webkit-tansition:all 350ms;-moz-transition:all 350ms}.social-share .icon-wechat .wechat-qrcode.bottom{top:40px;left:-84px}.social-share .icon-wechat .wechat-qrcode.bottom:after{display:none}.social-share .icon-wechat .wechat-qrcode h4{font-weight:normal;height:26px;line-height:26px;font-size:12px;background-color:#f3f3f3;margin:0;padding:0;color:#777}.social-share .icon-wechat .wechat-qrcode .qrcode{width:105px;margin:10px auto}.social-share .icon-wechat .wechat-qrcode .qrcode table{margin:0 !important}.social-share .icon-wechat .wechat-qrcode .help p{font-weight:normal;line-height:16px;padding:0;margin:0}.social-share .icon-wechat .wechat-qrcode:after{content:'';position:absolute;left:50%;margin-left:-6px;bottom:-13px;width:0;height:0;border-width:8px 6px 6px 6px;border-style:solid;border-color:#fff transparent transparent transparent}.social-share .icon-wechat:hover .wechat-qrcode{display:block} 2 | -------------------------------------------------------------------------------- /source/libs/share/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.eot -------------------------------------------------------------------------------- /source/libs/share/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.ttf -------------------------------------------------------------------------------- /source/libs/share/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/libs/share/fonts/iconfont.woff -------------------------------------------------------------------------------- /source/libs/tocbot/tocbot.css: -------------------------------------------------------------------------------- 1 | .toc{overflow-y:auto}.toc>.toc-list{overflow:hidden;position:relative}.toc>.toc-list li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B} 2 | -------------------------------------------------------------------------------- /source/libs/twikoo/twikoo.all.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Twikoo v0.6.0 3 | * (c) 2020-2021 iMaeGoo 4 | * Released under the MIT License. 5 | * Last Update: 1/7/2021, 7:44:19 AM 6 | */ 7 | 8 | /*! 9 | * Vue.js v2.6.12 10 | * (c) 2014-2020 Evan You 11 | * Released under the MIT License. 12 | */ 13 | 14 | /** 15 | * Prism: Lightweight, robust, elegant syntax highlighting 16 | * 17 | * @license MIT 18 | * @author Lea Verou 19 | * @namespace 20 | * @public 21 | */ 22 | -------------------------------------------------------------------------------- /source/medias/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/avatar.jpg -------------------------------------------------------------------------------- /source/medias/banner/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/0.jpg -------------------------------------------------------------------------------- /source/medias/banner/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/1.jpg -------------------------------------------------------------------------------- /source/medias/banner/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/2.jpg -------------------------------------------------------------------------------- /source/medias/banner/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/3.jpg -------------------------------------------------------------------------------- /source/medias/banner/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/4.jpg -------------------------------------------------------------------------------- /source/medias/banner/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/5.jpg -------------------------------------------------------------------------------- /source/medias/banner/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/banner/6.jpg -------------------------------------------------------------------------------- /source/medias/barrager/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/0.png -------------------------------------------------------------------------------- /source/medias/barrager/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/1.png -------------------------------------------------------------------------------- /source/medias/barrager/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/2.png -------------------------------------------------------------------------------- /source/medias/barrager/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/barrager/close.png -------------------------------------------------------------------------------- /source/medias/comment_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/comment_bg.png -------------------------------------------------------------------------------- /source/medias/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/cover.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/0.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/1.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/10.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/11.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/12.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/13.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/14.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/15.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/16.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/17.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/18.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/19.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/2.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/20.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/21.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/22.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/23.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/3.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/4.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/5.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/6.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/7.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/8.jpg -------------------------------------------------------------------------------- /source/medias/featureimages/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/featureimages/9.jpg -------------------------------------------------------------------------------- /source/medias/icp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/icp.png -------------------------------------------------------------------------------- /source/medias/images/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/01.jpg -------------------------------------------------------------------------------- /source/medias/images/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/02.jpg -------------------------------------------------------------------------------- /source/medias/images/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/images/03.jpg -------------------------------------------------------------------------------- /source/medias/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/logo.png -------------------------------------------------------------------------------- /source/medias/reward/alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/reward/alipay.jpg -------------------------------------------------------------------------------- /source/medias/reward/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aloeJun/hexo-themes-islu/bb8485cca47f97819d31ff075784229b0382f1b1/source/medias/reward/wechat.png --------------------------------------------------------------------------------