├── .gitignore ├── Changelog.md ├── LICENSE ├── README.md ├── README_en.md ├── _config.yml ├── _static_prefix.yml ├── fluid_mod_logo.jpg ├── languages ├── en.yml ├── ja.yml └── zh-CN.yml ├── layout ├── 404.ejs ├── _partial │ ├── analytics.ejs │ ├── comments │ │ ├── changyan.ejs │ │ ├── disqus.ejs │ │ ├── gitalk.ejs │ │ ├── livere.ejs │ │ ├── utterances.ejs │ │ ├── valine.ejs │ │ └── waline.ejs │ ├── css.ejs │ ├── footer.ejs │ ├── head.ejs │ ├── nav.ejs │ ├── paginator.ejs │ ├── plugins │ │ ├── anchor.ejs │ │ ├── busuanzi.ejs │ │ ├── daovoice.ejs │ │ ├── fancybox.ejs │ │ ├── hitokoto.ejs │ │ ├── local-search.ejs │ │ ├── math.ejs │ │ ├── mouse-click.ejs │ │ ├── prettify.ejs │ │ ├── random_img.ejs │ │ ├── smooth_scroll.ejs │ │ └── typed.ejs │ ├── scripts.ejs │ ├── search.ejs │ ├── sidebar.ejs │ └── toc.ejs ├── about.ejs ├── archive.ejs ├── categories.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── links.ejs ├── page.ejs ├── post.ejs ├── tag.ejs └── tags.ejs ├── pages ├── about.md └── local-search.xml ├── scripts ├── helpers.js ├── lazyload.js ├── local-search.js ├── merge-configs.js ├── pages.js └── utils │ └── join-path.js ├── snipaste_fluid_mod.png └── source ├── css ├── _custom │ └── custom.styl ├── _functions │ ├── base.styl │ └── custom.styl ├── _mixins │ ├── base.styl │ └── custom.styl ├── _pages │ ├── _about │ │ └── about.styl │ ├── _archive │ │ └── archive.styl │ ├── _base │ │ └── base.styl │ ├── _category │ │ ├── categories.styl │ │ └── category.styl │ ├── _index │ │ └── index.styl │ ├── _post │ │ └── post.styl │ ├── _tag │ │ ├── tag.styl │ │ └── tags.styl │ └── pages.styl ├── _variables │ ├── base.styl │ └── custom.styl └── main.styl ├── img ├── apple-touch-icon.png ├── avatar.png ├── default.png ├── favicon.png ├── loading.gif ├── loading.svg └── police_beian.png ├── js ├── lazyload.js ├── local-search.js ├── main.js └── post.js └── lib ├── anchor └── anchor.min.js ├── backstretch └── jquery.backstretch.min.js ├── bootstrap ├── css │ └── bootstrap.min.css └── js │ └── bootstrap.min.js ├── fancybox ├── jquery.fancybox.min.css └── jquery.fancybox.min.js ├── font-awesome ├── css │ └── all.min.css └── webfonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── github-markdown └── github-markdown.min.css ├── jquery └── jquery.min.js ├── katex └── katex.min.css ├── mathjax └── MathJax.js ├── mdbootstrap ├── css │ └── mdb.min.css ├── font │ └── roboto │ │ ├── Roboto-Bold.eot │ │ ├── Roboto-Bold.ttf │ │ ├── Roboto-Bold.woff │ │ ├── Roboto-Bold.woff2 │ │ ├── Roboto-Light.eot │ │ ├── Roboto-Light.ttf │ │ ├── Roboto-Light.woff │ │ ├── Roboto-Light.woff2 │ │ ├── Roboto-Medium.eot │ │ ├── Roboto-Medium.ttf │ │ ├── Roboto-Medium.woff │ │ ├── Roboto-Medium.woff2 │ │ ├── Roboto-Regular.eot │ │ ├── Roboto-Regular.ttf │ │ ├── Roboto-Regular.woff │ │ ├── Roboto-Regular.woff2 │ │ ├── Roboto-Thin.eot │ │ ├── Roboto-Thin.ttf │ │ ├── Roboto-Thin.woff │ │ └── Roboto-Thin.woff2 └── js │ └── mdb.min.js ├── popper └── popper.min.js ├── prettify ├── github-v2.min.css ├── prettify.min.js ├── tomorrow-night-eighties.min.css ├── tomorrow-night.min.css ├── tomorrow.min.css └── tranquil-heart.min.css ├── smooth-scroll └── SmoothScroll.min.js ├── tocbot └── tocbot.min.js └── typed └── typed.min.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .DS_Store 3 | *.log 4 | *.iml 5 | yarn.lock 6 | package-lock.json 7 | node_modules/ -------------------------------------------------------------------------------- /Changelog.md: -------------------------------------------------------------------------------- 1 | ### 2020/5/15 2 | 3 | - 更新 valine 版本 4 | 5 | ### 2020/4/15 6 | 7 | - 更新一言接口 8 | 9 | ### 2020/1/12 10 | 11 | - 增加内页友链 12 | - 关于页和友链页自定义开启 13 | - 关于页和友链页自定义开启评论 14 | 15 | ### 2020/1/11 16 | 17 | - 优化 SEO 18 | 19 | ### 2019/12/30 20 | 21 | - 增加 toc 标题自定义文本颜色 22 | 23 | ### 2019/12/26 24 | 25 | - 增加 toc 自定义文本颜色 26 | 27 | ### 2019/12/19 28 | 29 | - 同步原主题更新如下内容 30 | - 增加强制 HTTPS 功能 31 | - 修复搜索功能 BUG 32 | 33 | - 主题日语配置 34 | - 公安备案图标 35 | 36 | - 增加畅言评论插件 37 | - 增加来必力(Livere)评论插件 38 | - 增加 daovoice 在线聊天功能 39 | - 增加鼠标点击动效 40 | 41 | ### 2019/11/14 42 | 43 | - 修复侧边栏滚动样式 44 | - 允许博客侧边导航条滚动 45 | 46 | ### 2019/11/12 47 | 48 | - 修复部分资源引用链接为 full_url_for 和 url_for 49 | - 修复 local-search 相关 bug 50 | 51 | ### 2019/11/07 52 | 53 | - lazyload 可自定义图片 54 | 55 | ### 2019/11/03 56 | 57 | - 文章页前后文章按钮 58 | - 版权声明样式优化 59 | 60 | ### 2019/11/02 61 | 62 | - 随机背景图片 63 | 64 | ### 2019/10/31 65 | 66 | - 更多的主题颜色自定义 67 | - 更全面的网页统计 68 | - 侧边栏功能,显示基本信息和友链 69 | - 背景图可选全屏,背景飘雪效果 70 | - 首页文章列表可开关图片显示,可选显示随机图片 71 | - 文章显示字数统计,显示访问统计 72 | - 文章页图片灯箱效果 73 | - 分页按钮增加页码显示,分类页面、标签页面增加分页按钮 74 | - 页脚可选显示博客版权、运行时间、网站访问量、一言等 75 | - 关于页面增加评论框显示 76 | - 窗口监视效果 77 | - 优化 disqus 加载 78 | 79 | ### 2019/10/29 80 | 81 | - 增加 LaTeX 语法公式的支持 82 | 83 | ### 2019/10/26 84 | 85 | - 增加页面平滑滚动效果 86 | - 增加 PV 与 UV 统计 87 | 88 | ### 2019/10/20 89 | 90 | - 增加谷歌统计配置 91 | - 代码行号可以通过 Hexo 配置关闭 92 | 93 | ### 2019/10/14 94 | 95 | - 固定 Banner 在 iOS 和 Safari 环境下不再生效 96 | - 调整文章标题与日期的间隔 97 | 98 | ### 2019/9/17 99 | 100 | - 替换新的 favicon 101 | 102 | ### 2019/9/16 103 | 104 | - 新增图片懒加载功能 105 | - 优化首页摘要问题 106 | 107 | ### 2019/9/13 108 | 109 | - 修复 valine 加载问题 110 | - 移除顶部进度条 111 | - 统一默认 banner_img 112 | - 增加英文 README 113 | 114 | ### 2019/9/11 115 | 116 | - 增加 `_static_prefix.yml` 作为资源 URL 独立配置 117 | - 移除 `source_base_path` 配置项 118 | - 增加配置项 `about.md_path` 用于指定 about.md 的路径 119 | 120 | ### 2019/9/10 121 | 122 | - 增加向下滚屏与向顶部滚屏的按钮 123 | - 优化导航栏配置 124 | 125 | ### 2019/9/9 126 | 127 | - 更名为 Fluid 并迁移至 Fluid-dev organization 128 | - 增加一组配置项 `post_meta`,可配置首页一些元素的可见性 129 | 130 | ### 2019/9/3 131 | 132 | - 增加一个配置项 `source_base_path` ,可配置资源文件的父级路径 133 | - 增加覆盖配置功能,彻底解决升级时的配置冲突 134 | - zh_CN.yml 修改为 zh-CN.yml 135 | - 修复 about.md 路径引用问题 136 | 137 | ### 2019/8/30 138 | 139 | - 支持 i18n (zh-Hans,en) 140 | - 修复 #63 141 | 142 | ### 2019/8/22 143 | 144 | - 新增 Utterances、Gitalk 评论系统 145 | 146 | ### 2019/8/21 147 | 148 | - 新增本地搜索功能 149 | 150 | ### 2019/8/17 151 | 152 | - 新增页面右上角的加载进度条 153 | - 新增配置项用于调整主题颜色 154 | - 优化一些样式 155 | 156 | ### 2019/8/15 157 | 158 | - 使用 stylus 重构所有自定义 css 159 | - 新增标签归档、分类归档,重构归档页 160 | 161 | ### 2019/8/9 162 | 163 | - 移动端适配,调整文章和 TOC 左右边 164 | 165 | ### 2019/8/8 166 | 167 | - 文章图片增加阴影效果 168 | - 拆分 page 属性 169 | - 新增 404 页面 170 | 171 | ### 2019/8/2 172 | 173 | - 新增 about 页自定义功能 174 | - 调整 about 页 icon 的配置写法 175 | - 增加百度统计 176 | - 调整 slogan 和标题 177 | - 调整代码高亮样式的优先级 178 | - 移动端优化 179 | 180 | ### 2019/8/1 181 | 182 | - 新增 subtitle 打字机效果 183 | - 优化文章页中锚的效果 184 | - 文章页底部新增支持 HTML 的 custom 区域,可自定义展示赞赏码等内容 185 | - 优化配置文件和目录结构 186 | - package 升级并移至本地 187 | 188 | ### 2019/7/31 189 | 190 | 结合 @zkqiang 的优化建议: 191 | 192 | - 文章页样式更换为 Github 风格 193 | - 增加页脚备案信息 194 | - 优化配置文件结构 195 | - 页面细节优化 196 | 197 | ### 2019/6/6 198 | 199 | - 完善 archive 渲染逻辑 200 | 201 | ### 2019/3/15 202 | 203 | - 重新设计基本完成,特别感谢 @zhugaoqi 同学的设计指导; 204 | - 将所有第三方库、图片替换为 CDN 引用,极大精简仓库大小; 205 | - 重新设计 archive 渲染逻辑; 206 | - 统一文章页布局,新增文章版权声明; 207 | - 精简页面,配置项; 208 | - 老版本逐渐放弃维护,代码归档在 `v0.9` 分支; 209 | 210 | ### 2019/1/28 211 | 212 | 1. _config.yml结构大改,图片路径统一为相对于根目录 213 | 2. 可自定义index、archive、post、about页面的顶部图像高度(0 - 100) 214 | 3. 文章页顶部图像可统一设置,也可文章内单独设置。优先级:文章内banner_img属性 > 主题配置 215 | 4. 新增一种文章页布局,在配置文件中可选(post.layout) 216 | 5. 新增默认摘要功能,可配置是否开启、默认字数。优先级:文章内设置 > 主题配置 217 | 6. 可自定义首页文章date、tags是否显示 (@喜欢首页只罗列文章标题的同学) 218 | 7. 优化toc、字体尺寸,修复断行错误、图片超宽等问题 219 | 8. 优化渲染逻辑,去除冗余js 220 | 9. 新增多个bug 221 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Fluid-dev organization 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README_en.md: -------------------------------------------------------------------------------- 1 |

English | 中文简体

2 | 3 |

4 | Fluid Logo 5 |

6 | 7 |

An elegant Material-Design theme for Hexo

8 | 9 |

10 | GitHub release (latest by date) 11 | Hexo version 12 | Contributors 13 | License 14 |

15 | 16 | ![ScreenShot](https://cdn.jsdelivr.net/gh/fluid-dev/static@master/hexo-theme-fluid/screenshots/1.png) 17 | 18 | 19 | ## Live Preview 20 | 21 | [Rook1e's blog](https://0x2e.github.io) 22 | 23 | [zkqiang's blog](http://zkqiang.cn) 24 | 25 | ## Docs 26 | 27 | [Detailed configuration](https://fluid-dev.github.io/hexo-fluid-docs/) 28 | 29 | [Changelog](https://github.com/fluid-dev/hexo-theme-fluid/blob/master/Changelog.md) 30 | 31 | [Article configuration](https://hexo.io/docs/front-matter) 32 | 33 | ## Notice 34 | 35 | :warning: This announcement is for older users and new users can ignore it. 36 | 37 | Starting with the `v1.4.0` version, the project was officially renamed to **Fluid** (original project name: Material-T), and the repository and ownership were transferred to the **Fluid-dev** organization, so git remote url, theme directory name and related code will change. 38 | 39 | If you plan to upgrade `v1.4.0`, it is recommended to do the following: 40 | 1. Unzip the release package and rename it to `fluid` (It is recommended that the user using the master branch re-clone the repository) 41 | 2. Modify the blog root `_config.yml` configuration `theme: fluid` 42 | 3. Copy the modified part of `_config.yml` of the original Material-T, or follow [Smooth upgrade](#Smooth-upgrade) to use the configuration override feature. 43 | 44 | We apologize for the inconvenience caused by the change. 45 | 46 | ## Quick Start 47 | 48 | #### 1. Get the latest version 49 | 50 | Please download the [latest release version](https://github.com/fluid-dev/hexo-theme-fluid/releases) first, and the master branch cannot guarantee stability. 51 | 52 | After downloading, extract it to the themes directory and rename it to `fluid`. 53 | 54 | #### 2. Necessary configuration 55 | 56 | Modify `_config.yml` in the root directory as follows: 57 | 58 | ```yaml 59 | # Set the language, you need to correspond to the file name in the following directory, you can customize the file content. 60 | # https://github.com/fluid-dev/hexo-theme-fluid/tree/master/languages 61 | language: en 62 | 63 | # Turn off default highlighting 64 | highlight: 65 | enable: false 66 | ``` 67 | 68 | #### 3. Enable theme 69 | 70 | Still the `_config.yml` in the root directory, modified as follows: 71 | ```yaml 72 | # Extensions 73 | theme: fluid 74 | ``` 75 | 76 | ## Smooth upgrade 77 | 78 | Starting with v1.4.0, you can use Hexo [data files](https://hexo.io/docs/data-files.html) to host theme configurations: 79 | 80 | 1. Go to the site's `/source/_data/` directory (note: not the `source` directory of the theme), create `_data` directory if it did not exist. 81 | 2. Create `fluid_config.yml` and copy the modified or all configuration items from the theme configuration file into it. In this way, configuration item in `fluid_config.yml` will automatically override the theme's `_config.yml` when `hexo g` and will not be lost after updating the theme. 82 | 3. Move your custom resource files (head_img, about.md, etc.) to site's `source` folder (don't forget to change the reference address for the resource in the configuration file) 83 | 4. (v1.5.0 version and above) If you need to use a CDN or other means to store static resources: Copy theme's `_static_prefix.yml` to site's `/source/_data/`, rename it to `fluid_static_prefix.yml` and modify its configuration. If `_data/fluid_static_prefix.yml` exists, it will automatically overwrite theme's `_static_prefix.yml`. 84 | 85 | After completing the above steps, in the future update, you only need to overwrite the `theme/fluid` folder with the new release. 86 | 87 | ## FAQ 88 | 89 | #### Code highlighting exception 90 | 91 | - Please confirm that the above "Turn off default highlighting" step has been completed. 92 | - Try "clean" command: `hexo clean && hexo g` `hexo clean && hexo g` 93 | 94 | #### Configuration cannot take effect 95 | 96 | - Please check if the configuration file conforms to the yml syntax, such as spaces after the colon, 2 spaces for indentation, etc. 97 | 98 | ## Contributing 99 | 100 | If you are contributing for the first time, you can first claim a smaller task in the [help wanted](https://github.com/fluid-dev/hexo-theme-fluid/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) to quickly participate in community contributions. You can respond to the willingness to participate directly in the issue, then follow the GitHub workflow guidelines below to resolve the issue and submit the PR according to the specification, and after reviewing it will be merged into the master branch. 101 | 102 | The following workflows are recommended to participate in the contribution: 103 | 104 | 1. Fork the repo to your own GitHub and clone it to your local development 105 | 2. Create a new branch and develop on the new branch 106 | 3. Keep the branch consistent with the remote develop branch (via fetch and rebase operations) 107 | 4. Submit changes locally (please keep the commit log simple and standardized) 108 | 5. Push the local submit to the repo of fork on GitHub 109 | 6. Create a pull request to the develop branch of fluid-dev/hexo-theme-fluid 110 | 111 | ## Contributors 112 | 113 | [![contributors](https://opencollective.com/hexo-theme-fluid/contributors.svg?width=890&button=false)](https://github.com/fluid-dev/hexo-theme-fluid/graphs/contributors) 114 | 115 | Contributors outside the code:@zhugaoqi 116 | 117 | ## License 118 | 119 | [MIT](https://github.com/fluid-dev/hexo-theme-fluid/blob/master/LICENSE) 120 | -------------------------------------------------------------------------------- /_static_prefix.yml: -------------------------------------------------------------------------------- 1 | #--------------------------- 2 | # Fluid 3 | # Author: Fluid-dev organization 4 | # Github: https://github.com/fluid-dev/hexo-theme-fluid 5 | #--------------------------- 6 | 7 | #--------------------------- 8 | # 这里是配置 JS CSS 静态资源的 URL 前缀,可以自定义成 CDN 地址, 9 | # 请注意,您最好使用与内部版本相同的版本,以避免潜在的问题, 10 | # 在站点上启用 https 时,请使用 CDN 地址的 https 协议, 11 | # 同样,这里的配置也支持覆盖功能 12 | # ** 如果你不知道如何设置,请不要做任何改动 ** 13 | # 14 | # Here is the url prefix to configure JS and CSS static assets. Set CDN addresses you want to customize. 15 | # Be aware that you would better use the same version as internal ones to avoid potential problems. 16 | # Please use the https protocol of CDN files when you enable https on your site. 17 | # the configuration here supports overwrite 18 | # DO NOT EDIT THE FOLLOWING SETTINGS UNLESS YOU KNOW WHAT YOU ARE DOING 19 | #--------------------------- 20 | 21 | #--------------------------- 22 | # 内部静态 23 | # Internal static 24 | #--------------------------- 25 | 26 | internal_js: /js 27 | internal_css: /css 28 | internal_img: /img 29 | 30 | 31 | #--------------------------- 32 | # 第三方库 33 | # Third-party library 34 | #--------------------------- 35 | 36 | anchor: /lib/anchor # 推荐 https://cdn.staticfile.org/anchor-js/4.2.0/ 37 | 38 | font_awesome: /lib/font-awesome # 推荐 https://cdn.staticfile.org/font-awesome/5.10.0/ 39 | 40 | github_markdown: /lib/github-markdown # 推荐 https://cdn.staticfile.org/github-markdown-css/3.0.1/ 41 | 42 | jquery: /lib/jquery # 推荐 https://cdn.staticfile.org/jquery/3.4.1/ 43 | 44 | bootstrap: /lib/bootstrap # 推荐 https://cdn.staticfile.org/twitter-bootstrap/4.3.1/ 45 | 46 | mdbootstrap: /lib/mdbootstrap # 推荐 https://cdn.staticfile.org/mdbootstrap/4.8.7/ 47 | 48 | # umd 49 | popper: /lib/popper 50 | 51 | prettify: /lib/prettify 52 | # 高亮主题的路径,只支持 min.css,文件名需要与 _config.highlight.theme 对应 53 | # the path of highlight theme, only support `min.css` file,filename need to be the same as _config.highlight.theme 54 | prettify_theme: /lib/prettify 55 | 56 | tocbot: /lib/tocbot # 推荐 https://cdn.staticfile.org/tocbot/4.8.1/ 57 | 58 | typed: /lib/typed # 推荐 https://cdn.staticfile.org/typed.js/2.0.9/ 59 | 60 | fancybox: /lib/fancybox # 推荐 https://cdn.staticfile.org/fancybox/3.5.7/ 61 | 62 | smooth_scroll: /lib/smooth-scroll # 推荐 https://cdn.jsdelivr.net/npm/smoothscroll-for-websites@1.4.10/ 63 | 64 | mathjax: https://cdn.staticfile.org/mathjax/2.7.6/ # /lib/mathjax 65 | 66 | katex: /lib/katex # 推荐 https://cdn.staticfile.org/KaTeX/0.11.1/ 67 | 68 | backstretch: /lib/backstretch # 推荐 https://cdn.staticfile.org/danielgindi-jquery-backstretch/2.1.15/ -------------------------------------------------------------------------------- /fluid_mod_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/fluid_mod_logo.jpg -------------------------------------------------------------------------------- /languages/en.yml: -------------------------------------------------------------------------------- 1 | search: 2 | title: Search 3 | keyword: keyword 4 | status: 5 | success: v 6 | error: x 7 | 8 | postTotal: "%d posts in total." 9 | 10 | pageTotal: "%d posts in page." 11 | 12 | paginator: 13 | pre: Previous 14 | next: Next 15 | 16 | post: 17 | toc: TOC 18 | 19 | home: 20 | title: Home 21 | 22 | archive: 23 | title: Archives 24 | subtitle: Archive 25 | 26 | tag: 27 | title: Tags 28 | subtitle: Tag 29 | 30 | category: 31 | title: Categories 32 | subtitle: Category 33 | 34 | about: 35 | title: About 36 | subtitle: About 37 | 38 | page404: 39 | title: Page not found 40 | subtitle: Oops, Page not found... 41 | 42 | links: 43 | title: Links 44 | subtitle: Links -------------------------------------------------------------------------------- /languages/ja.yml: -------------------------------------------------------------------------------- 1 | search: 2 | title: 検索 3 | keyword: キーワード 4 | status: 5 | success: v 6 | error: x 7 | 8 | postTotal: 合計 %d 件のポスト 9 | 10 | pageTotal: 本ページの合計 %d 件のポスト 11 | 12 | paginator: 13 | pre: 前のページ 14 | next: 次のページ 15 | 16 | post: 17 | toc: ディレクトリ 18 | 19 | home: 20 | title: ホーム 21 | 22 | archive: 23 | title: アーカイブ 24 | subtitle: アーカイブ 25 | 26 | tag: 27 | title: タグ 28 | subtitle: タグ 29 | 30 | category: 31 | title: カテゴリー 32 | subtitle: カテゴリー 33 | 34 | about: 35 | title: 本ブログ情報  36 | subtitle: 本ブログ情報 37 | 38 | page404: 39 | title: ページが見つかりませんでした 40 | subtitle: ページが見つかりませんでした 41 | 42 | links: 43 | title: 相互リンク 44 | subtitle: 相互リンク -------------------------------------------------------------------------------- /languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | search: 2 | title: 搜索 3 | keyword: 关键词 4 | status: 5 | success: v 6 | error: x 7 | 8 | postTotal: 共计 %d 篇文章 9 | 10 | pageTotal: 本页 %d 篇文章 11 | 12 | paginator: 13 | pre: 上一页 14 | next: 下一页 15 | 16 | post: 17 | toc: 目录 18 | 19 | home: 20 | title: 首页 21 | 22 | archive: 23 | title: 归档 24 | subtitle: 归档 25 | 26 | tag: 27 | title: 标签 28 | subtitle: 标签 29 | 30 | category: 31 | title: 分类 32 | subtitle: 分类 33 | 34 | about: 35 | title: 关于 36 | subtitle: 关于 37 | 38 | page404: 39 | title: 页面走丢啦~ 40 | subtitle: 页面走丢啦~ 41 | 42 | links: 43 | title: 友链 44 | subtitle: 友情链接 -------------------------------------------------------------------------------- /layout/404.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "404" 3 | page.title = __('page404.title') 4 | page.subtitle = theme.page404.subtitle || __('page404.subtitle') 5 | page.banner_img = theme.page404.banner_img 6 | page.banner_img_height = theme.page404.banner_img_height 7 | %> 8 | 9 | -------------------------------------------------------------------------------- /layout/_partial/analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.web_analytics.enable) { %> 2 | <% if(theme.web_analytics.baidu) { %> 3 | 4 | 13 | <% } %> 14 | <% if(theme.web_analytics.tencent) { %> 15 | 16 | 27 | <% } %> 28 | <% if(theme.web_analytics.woyaola) { %> 29 | 30 | 31 | <% } %> 32 | <% if(theme.web_analytics.cnzz) { %> 33 | 34 | 35 | 36 | <% } %> 37 | <% if(theme.web_analytics.google) { %> 38 | 39 | 40 | 46 | <% } %> 47 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/comments/changyan.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.changyan.appid){ %> 2 | 3 |
4 | 44 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/comments/disqus.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 67 | 69 |
-------------------------------------------------------------------------------- /layout/_partial/comments/gitalk.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.gitalk.clientID && theme.gitalk.clientSecret && theme.gitalk.repo){ %> 2 |
3 | 4 | 5 | 6 | 23 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/comments/livere.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.livere.uid){ %> 2 | 3 |
4 | 14 | 15 |
16 | 17 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/comments/utterances.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.utterances.repo && theme.utterances.issue_term){ %> 2 | 12 | <% } %> 13 | -------------------------------------------------------------------------------- /layout/_partial/comments/valine.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.valine.appid && theme.valine.appkey){ %> 2 |
3 | 4 | 21 | 23 | <% } %> 24 | -------------------------------------------------------------------------------- /layout/_partial/comments/waline.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.waline.serverurl){ %> 2 | 3 | 9 |
10 | 11 | 85 | 87 | <% } %> 88 | -------------------------------------------------------------------------------- /layout/_partial/css.ejs: -------------------------------------------------------------------------------- 1 | <%- css_ex(theme.static_prefix.font_awesome, "css/all.min.css") %> 2 | <%- css_ex(theme.static_prefix.bootstrap, "css/bootstrap.min.css") %> 3 | <%- css_ex(theme.static_prefix.mdbootstrap, "css/mdb.min.css") %> 4 | <%- css_ex(theme.static_prefix.github_markdown, "github-markdown.min.css") %> 5 | <%- css("//at.alicdn.com/t/font_1067060_qzomjdt8bmp.css") %> 6 | <% if(theme.highlight.enable){ %> 7 | <%- css_ex(theme.static_prefix.prettify_theme, theme.highlight.theme + '.min.css') %> 8 | <% } %> 9 | <% if(is_post && theme.fancybox.enable){ %> 10 | <%- css_ex(theme.static_prefix.fancybox, "jquery.fancybox.min.css") %> 11 | <% } %> 12 | <%- css_ex(theme.static_prefix.internal_css, "main.css") %> 13 | <%- js_ex(theme.static_prefix.jquery, "jquery.min.js") %> -------------------------------------------------------------------------------- /layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 |
2 | 73 |
74 | <%- partial('_partial/scripts.ejs') %> 75 | <%- partial('_partial/analytics.ejs') %> -------------------------------------------------------------------------------- /layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | var joinStr = theme.title_join_string 3 | var title = config.title 4 | if (page.title) { 5 | title = [page.title, title].join(joinStr) 6 | } 7 | %> 8 | 9 | 10 | 11 | 12 | 14 | 15 | <% if (theme.force_https) { %> 16 | 17 | <% } %> 18 | 19 | <% if (page.description) { %> 20 | 21 | <% } else if (page.excerpt) { %> 22 | 23 | <% } else if (config.description) { %> 24 | 25 | <% } %> 26 | <% if (page.keywords) { %> 27 | 28 | <% } else if (page.tags && page.tags.length) { %> 29 | 30 | <% } else if (config.keywords) { %> 31 | 32 | <% } %> 33 | 34 | 35 | <%= title %> 36 | <%- partial('_partial/css.ejs') %> 37 | 48 | 49 | -------------------------------------------------------------------------------- /layout/_partial/nav.ejs: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /layout/_partial/paginator.ejs: -------------------------------------------------------------------------------- 1 | <% if (page.total > 1){ %> 2 | 12 | <% if(theme.scroll_down_arrow.scroll_after_turning_page){ %> 13 | 14 | <% } %> 15 | <% } %> 16 | -------------------------------------------------------------------------------- /layout/_partial/plugins/anchor.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.fun_features.anchorjs.enable){ %> 2 | <%- js_ex(theme.static_prefix.anchor, "/anchor.min.js") %> 3 | 18 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/busuanzi.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.post.pageview || theme.footer.site_pv.enable || theme.footer.site_uv.enable) { %> 2 | <%- js_async("//cdn.jsdelivr.net/npm/busuanzi@2.3.0/bsz.pure.mini.js") %> 3 | <% if(theme.footer.site_pv.offset || theme.footer.site_uv.offset) { %> 4 | 31 | <% } %> 32 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/daovoice.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.daovoice.enable && theme.daovoice.appid){ %> 2 | 21 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/fancybox.ejs: -------------------------------------------------------------------------------- 1 | <% if(is_post() && theme.fancybox.enable){ %> 2 | <%- js_ex(theme.static_prefix.fancybox, "jquery.fancybox.min.js") %> 3 | 15 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/hitokoto.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.footer.hitokoto) { %> 2 | 33 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/local-search.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.search.enable){ %> 2 | <%- js_ex(theme.static_prefix.internal_js, "local-search.js") %> 3 | 11 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/math.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.post.math.enable && (!theme.post.math.specific || (theme.post.math.specific && page.math))) { %> 2 | <% var engine = theme.post.math.engine; %> 3 | 4 | <% if(engine === 'mathjax') { %> 5 | 6 | 23 | 24 | <%- js_ex(theme.static_prefix.mathjax, "MathJax.js?config=TeX-MML-AM_CHTML") %> 25 | 26 | <% } else if (engine === 'katex') { %> 27 | 28 | <%- css_ex(theme.static_prefix.katex, "katex.min.css") %> 29 | <% } %> 30 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/mouse-click.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.fun_features.mouse_click && theme.fun_features.mouse_click.enable) { %> 2 | <% var style = theme.fun_features.mouse_click.style %> 3 | <% if (style === 'values') { %> 4 | 50 | <% } else if (style === 'love') { %> 51 | 98 | <% } %> 99 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/prettify.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.highlight.enable){ %> 2 | <%- js_ex(theme.static_prefix.prettify, "/prettify.min.js") %> 3 | 9 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/random_img.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.index.post_img.enable && theme.index.post_img.random) { %> 2 | 3 | 29 | <% } %> 30 | <% if(theme.random_bg.enable) { %> 31 | 32 | <%- js_ex(theme.static_prefix.backstretch, "/jquery.backstretch.min.js") %> 33 | <% if(theme.random_bg.type === "online") { %> 34 | 35 | 110 | <% } %> 111 | <% if(theme.random_bg.type === "local") { %> 112 | 113 | 132 | <% } %> 133 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/smooth_scroll.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.smooth_scroll.enable) { %> 2 | <%- js_ex(theme.static_prefix.smooth_scroll, "SmoothScroll.min.js") %> 3 | 13 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/plugins/typed.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.fun_features.typing.enable){ %> 2 | <%- js_ex(theme.static_prefix.typed, "/typed.min.js") %> 3 | 19 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/scripts.ejs: -------------------------------------------------------------------------------- 1 | 2 | <%- js_ex(theme.static_prefix.popper, "popper.min.js") %> 3 | <%- js_ex(theme.static_prefix.bootstrap, "js/bootstrap.min.js") %> 4 | <%- js_ex(theme.static_prefix.mdbootstrap, "js/mdb.min.js") %> 5 | <%- js_ex(theme.static_prefix.internal_js, "main.js") %> 6 | <% if(theme.lazyload.enable){ %> 7 | <%- js_ex(theme.static_prefix.internal_js, "lazyload.js") %> 8 | <% } %> 9 | <% if(is_post()){ %> 10 | <% if(theme.post.toc.enable){ %> 11 | <%- js_ex(theme.static_prefix.tocbot, "/tocbot.min.js") %> 12 | <% } %> 13 | <%- js_ex(theme.static_prefix.internal_js, "post.js") %> 14 | <% } %> 15 | 16 | <%- partial('_partial/plugins/prettify.ejs') %> 17 | <%- partial('_partial/plugins/typed.ejs') %> 18 | <%- partial('_partial/plugins/anchor.ejs') %> 19 | <%- partial('_partial/plugins/local-search.ejs') %> 20 | <%- partial('_partial/plugins/fancybox.ejs') %> 21 | <%- partial('_partial/plugins/math.ejs') %> 22 | <%- partial('_partial/plugins/smooth_scroll.ejs') %> 23 | <%- partial('_partial/plugins/random_img.ejs') %> 24 | <%- partial('_partial/plugins/hitokoto.ejs') %> 25 | <%- partial('_partial/plugins/busuanzi.ejs') %> 26 | <%- partial('_partial/plugins/mouse-click.ejs') %> 27 | <%- partial('_partial/plugins/daovoice.ejs') %> 28 | 29 | 59 | <% if(theme.footer.date.enable) { %> 60 | 75 | <% } %> 76 | <% if(theme.fun_features.monitortext.enable) { %> 77 | 83 | <% } %> 84 | <% if(theme.fun_features.snow.enable) { %> 85 | 140 | <% } %> 141 | <% if(theme.post.comments.autojump) { %> 142 | 163 | <% } %> -------------------------------------------------------------------------------- /layout/_partial/search.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/_partial/sidebar.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.sidebar.enable){ %> 2 | 39 | <% } %> 40 | -------------------------------------------------------------------------------- /layout/_partial/toc.ejs: -------------------------------------------------------------------------------- 1 | <% if(theme.post.toc.enable){ %> 2 |
3 |

 <%= __('post.toc')%>

4 |
5 |
6 | <% } %> 7 | -------------------------------------------------------------------------------- /layout/about.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "about" 3 | page.title = __('about.title') 4 | page.subtitle = __('about.subtitle') 5 | page.banner_img = theme.about.banner_img 6 | page.banner_img_height = theme.about.banner_img_height 7 | %> 8 | 9 | <% if(theme.about.enable) { %> 10 |
11 |

<%= theme.about.name %>

12 |

<%- theme.about.introduce %>

13 | <% for(var i in theme.about.icons) { %> 14 | 15 |    16 | <% } %> 17 |
18 |
19 | <%- about_body() %> 20 |
21 | 22 | 23 |
24 |
25 | <% if(theme.about.comments) { %> 26 |

27 | <% var type = '_partial/comments/' + theme.post.comments.type %> 28 | <%- partial(type) %> 29 | <% } %> 30 |
31 |
32 | <% } %> -------------------------------------------------------------------------------- /layout/archive.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "archive" 3 | page.title = __('archive.title') 4 | page.subtitle = __('archive.subtitle') 5 | page.banner_img = theme.archive.banner_img 6 | page.banner_img_height = theme.archive.banner_img_height 7 | var date_cursor = 'xxx' 8 | %> 9 | 10 |
11 |

<%= __('postTotal', site.posts.length) %>

12 |
13 | <% page.posts.each(function (post) { %> 14 | <% if(date(post.date, "YYYY") != date_cursor) { %> 15 | <% date_cursor = date(post.date, "YYYY") %> 16 |

<%= date_cursor %>

17 | <% } %> 18 | 19 | <%= post.title %> 20 | <%- date(post.date, "MM-DD") %> 21 | 22 | <% }) %> 23 |
24 | <%- partial('_partial/paginator') %> -------------------------------------------------------------------------------- /layout/categories.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "categories" 3 | page.title = __('category.title') 4 | page.subtitle = __('category.subtitle') 5 | page.banner_img = theme.category.banner_img 6 | page.banner_img_height = theme.category.banner_img_height 7 | %> 8 | 9 | <%- list_categories({ class: "category-tree" }) %> -------------------------------------------------------------------------------- /layout/category.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "category" 3 | page.title = [__('category.title'), page.category].join(" - ") 4 | page.subtitle = [__('category.subtitle'), page.category].join(" - ") 5 | page.banner_img = theme.category.banner_img 6 | page.banner_img_height = theme.category.banner_img_height 7 | 8 | var date_cursor = 'xxx' 9 | %> 10 | 11 |
12 |

<%= __('pageTotal', page.posts.length) %>

13 |
14 | <% page.posts.each(function (post) { %> 15 | <% if(date(post.date, "YYYY") != date_cursor) { %> 16 | <% date_cursor = date(post.date, "YYYY") %> 17 |

<%= date_cursor %>

18 | <% } %> 19 | 20 | <%= post.title %> 21 | <%- date(post.date, "MM-DD") %> 22 | 23 | <% }) %> 24 |
25 | <%- partial('_partial/paginator') %> -------------------------------------------------------------------------------- /layout/index.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | if (theme.index.slogan.enable) { 3 | page.subtitle = theme.index.slogan.text || config.subtitle || '' 4 | } 5 | page.banner_img = theme.index.banner_img 6 | page.banner_img_height = theme.index.banner_img_height 7 | %> 8 | <% page.posts.each(function (post) { %> 9 |
10 | <% var post_url = url_for(post.path) %> 11 | <% if(theme.index.post_img.enable) { %> 12 | <% if(post.index_img != null) { %> 13 |
14 | 15 | <%= post.title %> 16 | 17 |
18 | <% } else { %> 19 |
20 | 21 | <%= post.title %> 22 | 23 |
24 | <% } %> 25 |
26 | <% } else { %> 27 |
28 | <% } %> 29 | 30 |

<%= post.title %>

31 | <% var height_limit = '' %> 32 | <% if(post.excerpt.length > 0) { %> 33 | <% var excerpt = strip_html(post.excerpt) + "..." %> 34 | <% var height_limit = 'style="max-height: none;"' %> 35 | <% } else if(theme.index.auto_excerpt.enable){ %> 36 | <% var excerpt = strip_html(post.content).substr(0, 500) %> 37 | <% } else { %> 38 | <% var excerpt = strip_html(post.content) %> 39 | <% } %> 40 |
> 41 |
<%- excerpt %>
42 |
43 |
44 |
45 | <% if(theme.index.post_meta.date ) { %> 46 |  <%- date(post.date, config.date_format) %>   47 | <% } %> 48 | <% if(theme.index.post_meta.wordcount ) { %> 49 |  <%= wordcount(post.content) %>字   50 |  <%= min2read(post.content) %>分钟   51 | <% } %> 52 | <% if(theme.index.post_meta.category && post.categories.length) { %> 53 | 54 | <% post.categories.each(function(cate){ %> 55 | <%= cate.name %>  56 | <% }) %>  57 | <% } %> 58 | <% if(theme.index.post_meta.tag && post.tags.length) { %> 59 | 60 | <% post.tags.each(function(tag){ %> 61 | <%= tag.name %>  62 | <% }) %> 63 | <% } %> 64 |
65 |
66 |
67 | <% }) %> 68 | <%- partial('_partial/paginator') %> -------------------------------------------------------------------------------- /layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <% 4 | var subtitle = page.subtitle || page.title 5 | var banner_img = page.banner_img || theme.index.banner_img 6 | var banner_img_height = page.banner_img_height || theme.index.banner_img_height 7 | %> 8 | <%- partial('_partial/head', {banner_img: banner_img}) %> 9 | 10 |
11 | <%- partial('_partial/nav') %> 12 |
13 |
14 |
15 |
16 | 17 | <% if(theme.fun_features.typing.enable == false) { %> 18 | <%- subtitle %> 19 | <% } %> 20 | 21 | <% if(is_post()) { %> 22 |
23 |

24 | 25 | 26 | 27 | <%= wordcount(page.content) %>字 |  28 | 29 | <%= min2read(page.content) %>分钟 30 | <% if(theme.post.pageview) { %> 31 | 36 | <% } %> 37 |

38 | <% } %> 39 |
40 | <% if (theme.scroll_down_arrow.enable && theme.scroll_down_arrow.banner_height_limit <= banner_img_height) { %> 41 |
42 | 43 |
44 | <% } %> 45 |
46 |
47 |
48 |
49 |
50 | <% if(is_post() || page.layout == '404') { %> 51 | <%- body %> 52 | <% } else { %> 53 |
54 |
55 | <% if(page.layout == 'about') { %> 56 |
57 | avatar 60 |
61 | <% } %> 62 |
63 |
64 |
65 | <%- body %> 66 |
67 |
68 |
69 |
70 |
71 | <% } %> 72 |
73 | <%- partial('_partial/sidebar') %> 74 | <% if (theme.scroll_top_arrow.enable) { %> 75 | 76 | 77 | 78 | <% } %> 79 | <% if(theme.search.enable) { %> 80 | <%- partial('_partial/search') %> 81 | <% } %> 82 | <%- partial('_partial/footer', { data: { 'subtitle': subtitle } }) %> 83 | <% if(banner_img_height === 100 && theme.full_banner) { %> 84 | 89 | <% } %> 90 | 91 | -------------------------------------------------------------------------------- /layout/links.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "links" 3 | page.title = __('links.title') 4 | page.subtitle = theme.links.subtitle || __('links.subtitle') 5 | page.banner_img = theme.links.banner_img 6 | page.banner_img_height = theme.links.banner_img_height 7 | %> 8 | 9 | <% if(theme.links.enable) { %> 10 | 24 | 25 | 26 |
27 |
28 | <% if(theme.links.comments) { %> 29 |

30 | <% var type = '_partial/comments/' + theme.post.comments.type %> 31 | <%- partial(type) %> 32 | <% } %> 33 |
34 |
35 | <% } %> -------------------------------------------------------------------------------- /layout/page.ejs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/layout/page.ejs -------------------------------------------------------------------------------- /layout/post.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | if (!page.banner_img) { 3 | page.banner_img = theme.post.banner_img 4 | } 5 | page.banner_img_height = theme.post.banner_img_height 6 | %> 7 | 8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | <%- page.content %> 16 |
17 |
18 |
19 |
20 |
21 | <% if (page.categories.length != 0) { %> 22 | 23 | 24 | <% page.categories.each(function(cate) { %> 25 | <%= cate.name %> 26 |   27 | <% }) %> 28 | 29 | <% } %> 30 | 31 | 32 | <% page.tags.each(function(tag) { %> 33 | <%= tag.name %> 34 | <% }) %> 35 | 36 |
37 | <% if(theme.post.copyright.enable) { %> 38 |
39 | 40 | 41 |
版权声明:<%- theme.post.copyright.content %>
42 |
43 | <% } %> 44 | <% if (page.prev || page.next){ %> 45 |
46 |
47 | <% if (page.prev){ %> 48 | 49 | 50 | <%= page.prev.title %> 51 | 52 | <% } %> 53 | <% if (page.next){ %> 54 | 55 | <%= page.next.title %> 56 | 57 | 58 | <% } %> 59 |
60 |
61 | <% } %> 62 |
63 |
64 | 65 | 66 | <% if(theme.post.custom.enable) { %> 67 |
68 |
69 | <%- theme.post.custom.content %> 70 |
71 |
72 | <% } %> 73 | 74 | 75 |
76 |
77 | <% if(page.comments && theme.post.comments.enable) { %> 78 |

79 | <% var type = '_partial/comments/' + theme.post.comments.type %> 80 | <%- partial(type) %> 81 | <% } %> 82 |
83 |
84 | 85 |
86 |
87 |
88 | <%- partial('_partial/toc') %> 89 |
90 |
91 |
92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /layout/tag.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "tag" 3 | page.title = [__('tag.title'), page.tag].join(" - ") 4 | page.subtitle = [__('tag.subtitle'), page.tag].join(" - ") 5 | page.banner_img = theme.tag.banner_img 6 | page.banner_img_height = theme.tag.banner_img_height 7 | 8 | var date_cursor = 'xxx' 9 | %> 10 | 11 |
12 |

<%= __('pageTotal', page.posts.length) %>

13 |
14 | <% page.posts.each(function (post) { %> 15 | <% if(date(post.date, "YYYY") != date_cursor) { %> 16 | <% date_cursor = date(post.date, "YYYY") %> 17 |

<%= date_cursor %>

18 | <% } %> 19 | 20 | <%= post.title %> 21 | <%- date(post.date, "MM-DD") %> 22 | 23 | <% }) %> 24 |
25 | <%- partial('_partial/paginator') %> -------------------------------------------------------------------------------- /layout/tags.ejs: -------------------------------------------------------------------------------- 1 | <% 2 | page.layout = "tags" 3 | page.title = __('tag.title') 4 | page.subtitle = __('tag.subtitle') 5 | page.banner_img = theme.tag.banner_img 6 | page.banner_img_height = theme.tag.banner_img_height 7 | 8 | var min_font = theme.tag.tagcloud.min_font || 15 9 | var max_font = theme.tag.tagcloud.max_font || 30 10 | var unit = theme.tag.tagcloud.unit || 'px' 11 | var start_color = theme.tag.tagcloud.start_color || '#BBBBEE' 12 | var end_color = theme.tag.tagcloud.end_color || '#337ab7' 13 | %> 14 | 15 |
16 | <%- tagcloud({ 17 | min_font: min_font, 18 | max_font: max_font, 19 | amount: 999, 20 | unit: unit, 21 | color: true, 22 | start_color, 23 | end_color 24 | }) %> 25 |
-------------------------------------------------------------------------------- /pages/about.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/pages/about.md -------------------------------------------------------------------------------- /pages/local-search.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if posts %} 4 | {% for post in posts.toArray() %} 5 | {% if post.indexing == undefined or post.indexing %} 6 | 7 | {{ post.title }} 8 | 9 | {{ (url + post.path) | uriencode }} 10 | {% if content %} 11 | 12 | {% endif %} 13 | {% if post.categories and post.categories.length>0 %} 14 | 15 | {% for cate in post.categories.toArray() %} 16 | {{ cate.name }} 17 | {% endfor %} 18 | 19 | {% endif %} 20 | {% if post.tags and post.tags.length>0 %} 21 | 22 | {% for tag in post.tags.toArray() %} 23 | {{ tag.name }} 24 | {% endfor %} 25 | 26 | {% endif %} 27 | 28 | {% endif %} 29 | {% endfor %} 30 | {% endif %} 31 | {% if pages %} 32 | {% for page in pages.toArray() %} 33 | {% if post.indexing == undefined or post.indexing %} 34 | 35 | {{ page.title }} 36 | 37 | {{ (url + page.path) | uriencode }} 38 | {% if content %} 39 | 40 | {% endif %} 41 | 42 | {% endif %} 43 | {% endfor %} 44 | {% endif %} 45 | -------------------------------------------------------------------------------- /scripts/helpers.js: -------------------------------------------------------------------------------- 1 | const joinPath = require('./utils/join-path'); 2 | 3 | hexo.extend.helper.register('css_ex', function (base, relative, ex = "") { 4 | return ''; 5 | }); 6 | 7 | hexo.extend.helper.register('js_ex', function (base, relative, ex = "") { 8 | return ''; 9 | }); 10 | 11 | hexo.extend.helper.register('js_async', function (base, relative, ex = "") { 12 | return ''; 13 | }); -------------------------------------------------------------------------------- /scripts/lazyload.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports.lazyload = function (hexo) { 3 | var config = hexo.theme.config; 4 | var loadingImage = config.lazyload.loadingimg; 5 | if (!config.lazyload || !config.lazyload.enable) { 6 | return; 7 | } 8 | if (config.lazyload.onlypost) { 9 | hexo.extend.filter.register('after_post_render', function (data) { 10 | data.content = lazyProcess.call(this, data.content, loadingImage); 11 | return data; 12 | }); 13 | } else { 14 | hexo.extend.filter.register('after_render:html', function (str, data) { 15 | return lazyProcess.call(this, str, loadingImage); 16 | }); 17 | } 18 | }; 19 | 20 | function lazyProcess(htmlContent, loadingImage) { 21 | return htmlContent.replace(//gi, (str, p1, p2) => { 22 | if (/srcset=/gi.test(str)) { 23 | return str; 24 | } 25 | return str.replace(p2, `${p2}" srcset="${loadingImage}`); 26 | }); 27 | } -------------------------------------------------------------------------------- /scripts/local-search.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | hexo.extend.generator.register('_hexo_generator_search', function (locals) { 3 | var config = this.theme.config; 4 | if (!config.search.enable) { 5 | return; 6 | } 7 | 8 | var nunjucks = require('nunjucks'); 9 | var env = new nunjucks.Environment(); 10 | var pathFn = require('path'); 11 | var fs = require('fs'); 12 | 13 | env.addFilter('uriencode', function (str) { 14 | return encodeURI(str); 15 | }); 16 | 17 | env.addFilter('noControlChars', function (str) { 18 | return str && str.replace(/[\x00-\x1F\x7F]/g, ''); 19 | }); 20 | 21 | var searchTmplSrc = pathFn.join(__dirname, '../pages/local-search.xml'); 22 | var searchTmpl = nunjucks.compile(fs.readFileSync(searchTmplSrc, 'utf8'), env); 23 | 24 | var searchConfig = config.search; 25 | var template = searchTmpl; 26 | var searchField = searchConfig.field; 27 | var content = searchConfig.content || true; 28 | 29 | var posts, pages; 30 | 31 | if (searchField.trim() != '') { 32 | searchField = searchField.trim(); 33 | if (searchField == 'post') { 34 | posts = locals.posts.sort('-date'); 35 | } else if (searchField == 'page') { 36 | pages = locals.pages; 37 | } else { 38 | posts = locals.posts.sort('-date'); 39 | pages = locals.pages; 40 | } 41 | } else { 42 | posts = locals.posts.sort('-date'); 43 | } 44 | 45 | var xml = template.render({ 46 | config: config, 47 | posts: posts, 48 | pages: pages, 49 | content: content, 50 | url: hexo.config.root 51 | }); 52 | 53 | return { 54 | path: searchConfig.generatePath, 55 | data: xml 56 | }; 57 | }); -------------------------------------------------------------------------------- /scripts/merge-configs.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | const yaml = require('js-yaml'); 4 | 5 | hexo.on('generateBefore', function () { 6 | if (hexo.locals.get) { 7 | var data = hexo.locals.get('data'); 8 | sourceConfig = {}; 9 | if (data && data.fluid_config) { 10 | sourceConfig = data.fluid_config; 11 | } 12 | staticPrefix = {}; 13 | if (data && data.fluid_static_prefix) { 14 | staticPrefix = data.fluid_static_prefix; 15 | } 16 | } 17 | 18 | /** 19 | * Merge configs in /source/_data/fluid_static_prefix.yml into hexo.theme.config. 20 | */ 21 | const configPath = path.join(__dirname, '../_static_prefix.yml'); 22 | const yamlDoc = yaml.safeLoad(fs.readFileSync(configPath, 'utf8')); 23 | hexo.theme.config.static_prefix = Object.assign({}, yamlDoc, staticPrefix); 24 | this.log.debug("Fluid: theme static_prefix config merged"); 25 | 26 | /** 27 | * Merge configs in hexo.config.theme_config and /source/_data/fluid_config.yml into hexo.theme.config. 28 | */ 29 | hexo.theme.config = Object.assign({}, hexo.theme.config, sourceConfig, hexo.config.theme_config); 30 | this.log.debug("Fluid: theme config merged"); 31 | 32 | /** 33 | * Trigger action that requires configuration data. 34 | */ 35 | require("./lazyload").lazyload(hexo); 36 | }); -------------------------------------------------------------------------------- /scripts/pages.js: -------------------------------------------------------------------------------- 1 | // generate 404 page 2 | hexo.extend.generator.register('_404', function (locals) { 3 | return { 4 | path: '404.html', 5 | data: locals.theme, 6 | layout: '404' 7 | }; 8 | }); 9 | 10 | // generate tags Page 11 | hexo.extend.generator.register('_tags', function (locals) { 12 | return { 13 | path: 'tags/index.html', 14 | data: locals.theme, 15 | layout: 'tags' 16 | }; 17 | }); 18 | 19 | // generate categories Page 20 | hexo.extend.generator.register('_categories', function (locals) { 21 | return { 22 | path: 'categories/index.html', 23 | data: locals.theme, 24 | layout: 'categories' 25 | }; 26 | }); 27 | 28 | // generate links page 29 | hexo.extend.generator.register('_links', function (locals) { 30 | return { 31 | path: 'links/index.html', 32 | data: locals.theme, 33 | layout: 'links' 34 | }; 35 | }); 36 | 37 | // generate about page 38 | hexo.extend.generator.register('_about', function (locals) { 39 | return { 40 | path: 'about/index.html', 41 | data: locals.theme, 42 | layout: 'about' 43 | }; 44 | }); 45 | const path = require('path'); 46 | hexo.extend.helper.register('about_body', function () { 47 | var rootPath = path.join(__dirname, '../'); 48 | var mdPath = path.join(rootPath, hexo.theme.config.about.md_path); 49 | return hexo.render.renderSync({ path: mdPath }); 50 | }); 51 | -------------------------------------------------------------------------------- /scripts/utils/join-path.js: -------------------------------------------------------------------------------- 1 | const joinPath = function (base, relative) { 2 | return relative 3 | ? base.replace(/\/+$/, '') + '/' + relative.replace(/^\/+/, '') 4 | : base; 5 | }; 6 | 7 | module.exports = joinPath; 8 | -------------------------------------------------------------------------------- /snipaste_fluid_mod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/snipaste_fluid_mod.png -------------------------------------------------------------------------------- /source/css/_custom/custom.styl: -------------------------------------------------------------------------------- 1 | /* Custom styles */ -------------------------------------------------------------------------------- /source/css/_functions/base.styl: -------------------------------------------------------------------------------- 1 | theme-config(config, predef) 2 | unquote(hexo-config(config) ? hexo-config(config):predef) 3 | 4 | @import "custom" -------------------------------------------------------------------------------- /source/css/_functions/custom.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_functions/custom.styl -------------------------------------------------------------------------------- /source/css/_mixins/base.styl: -------------------------------------------------------------------------------- 1 | @import "custom" -------------------------------------------------------------------------------- /source/css/_mixins/custom.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_mixins/custom.styl -------------------------------------------------------------------------------- /source/css/_pages/_about/about.styl: -------------------------------------------------------------------------------- 1 | .about-avatar 2 | position relative 3 | margin -8rem auto 1rem 4 | max-width 10rem 5 | z-index 3 -------------------------------------------------------------------------------- /source/css/_pages/_archive/archive.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_archive/archive.styl -------------------------------------------------------------------------------- /source/css/_pages/_base/base.styl: -------------------------------------------------------------------------------- 1 | html, body, header, .view 2 | height 100% 3 | overflow-wrap break-word 4 | 5 | body 6 | background-color $body-bg-color 7 | color $text-color 8 | 9 | a 10 | color $link-color 11 | 12 | &:hover 13 | color $link-hover-color 14 | 15 | .hover-with-bg 16 | display inline-block 17 | padding: .45rem 18 | 19 | &:hover 20 | background-color $link-hover-bg!important 21 | 22 | #board 23 | position relative 24 | margin-top -3rem 25 | background-color $board-bg-color 26 | border-radius 0.5rem 27 | z-index 3 28 | 29 | @media (max-width: 768px) 30 | header 31 | .h2 32 | font-size 1.5rem 33 | 34 | .nopadding-md 35 | padding-left 0 !important 36 | padding-right 0 !important 37 | 38 | .row 39 | padding-top 0.5rem 40 | padding-bottom 0.5rem 41 | 42 | #local-search-result 43 | .search-list-title 44 | border-left 3px solid #0d47a1 45 | 46 | .search-list-content 47 | padding 0 1.25rem 48 | 49 | /* Rewrite github-markdown.css */ 50 | 51 | .markdown-body hr 52 | height .2em 53 | margin 2rem 0 54 | 55 | .markdown-body strong 56 | font-weight bold 57 | 58 | /* Rewrite mdb.css */ 59 | 60 | .list-group-item 61 | border 0 62 | 63 | .page-link 64 | font-size 1.1rem 65 | 66 | /* Navbar */ 67 | 68 | .navbar 69 | background-color transparent 70 | font-size 0.875rem 71 | color $navbar-text-color 72 | 73 | a 74 | color $navbar-text-color 75 | 76 | &:hover 77 | background-color rgba(0, 0, 0, 0.1) 78 | 79 | .navbar-custom 80 | color $navbar-text-color 81 | 82 | a 83 | color $navbar-text-color 84 | 85 | .top-nav-collapse 86 | background-color $navbar-bg-color 87 | 88 | .navbar-col-show 89 | background-color $navbar-bg-color 90 | 91 | @media (max-width: 768px) 92 | .navbar 93 | font-size 1rem 94 | line-height 2.5rem 95 | 96 | .scroll-down-bar 97 | position absolute 98 | width 100% 99 | font-size 2rem 100 | height 8rem 101 | text-align center 102 | cursor pointer 103 | bottom 0 104 | 105 | .scroll-down-arrow 106 | position absolute 107 | padding-top 2rem 108 | color #ff 109 | -webkit-transform: translateZ(0); 110 | -moz-transform: translateZ(0); 111 | -ms-transform: translateZ(0); 112 | -o-transform: translateZ(0); 113 | transform: translateZ(0); 114 | -webkit-animation scroll-down 1.5s infinite 115 | animation scroll-down 1.5s infinite 116 | 117 | #scroll-top-button 118 | position fixed 119 | background #fff 120 | border-radius 4px 121 | width 40px 122 | height 40px 123 | bottom -60px 124 | -webkit-transition bottom .3s ease 125 | -moz-transform bottom .3s ease 126 | -ms-transform bottom .3s ease 127 | -o-transform bottom .3s ease 128 | transition bottom .3s ease 129 | outline none 130 | display flex 131 | display -webkit-flex 132 | align-items center 133 | 134 | #scroll-top-button i 135 | -webkit-transform translateZ(0) 136 | -moz-transform translateZ(0) 137 | -ms-transform translateZ(0) 138 | -o-transform translateZ(0) 139 | transform translateZ(0) 140 | 141 | #scroll-top-button:hover i, #scroll-top-button:active i 142 | -webkit-animation-name scroll-top 143 | animation-name scroll-top 144 | -webkit-animation-duration 1s 145 | animation-duration 1s 146 | -webkit-animation-delay .1s 147 | animation-delay .1s 148 | -webkit-animation-timing-function ease-in-out 149 | animation-timing-function ease-in-out 150 | -webkit-animation-iteration-count infinite 151 | animation-iteration-count infinite 152 | -webkit-animation-fill-mode forwards 153 | animation-fill-mode forwards 154 | -webkit-animation-direction alternate 155 | animation-direction alternate 156 | 157 | .scroll-top-arrow 158 | margin auto 159 | font-size 24px 160 | color #8590AB 161 | 162 | .animated-icon 163 | width 30px 164 | height 20px 165 | position relative 166 | margin 0 167 | -webkit-transform rotate(0deg) 168 | -moz-transform rotate(0deg) 169 | -o-transform rotate(0deg) 170 | transform rotate(0deg) 171 | -webkit-transition .5s ease-in-out 172 | -moz-transition .5s ease-in-out 173 | -o-transition .5s ease-in-out 174 | transition .5s ease-in-out 175 | cursor pointer 176 | 177 | span 178 | display block 179 | position absolute 180 | height 3px 181 | width 100% 182 | border-radius 9px 183 | opacity 1 184 | left 0 185 | -webkit-transform rotate(0deg) 186 | -moz-transform rotate(0deg) 187 | -o-transform rotate(0deg) 188 | transform rotate(0deg) 189 | -webkit-transition .25s ease-in-out 190 | -moz-transition .25s ease-in-out 191 | -o-transition .25s ease-in-out 192 | transition .25s ease-in-out 193 | background #ffffff 194 | 195 | &:nth-child(1) 196 | top 0 197 | 198 | &:nth-child(2) 199 | top 10px 200 | 201 | &:nth-child(3) 202 | top 20px 203 | 204 | &.open 205 | span 206 | &:nth-child(1) 207 | top 11px 208 | -webkit-transform rotate(135deg) 209 | -moz-transform rotate(135deg) 210 | -o-transform rotate(135deg) 211 | transform rotate(135deg) 212 | 213 | &:nth-child(2) 214 | opacity 0 215 | left -60px 216 | 217 | &:nth-child(3) 218 | top 11px 219 | -webkit-transform rotate(-135deg) 220 | -moz-transform rotate(-135deg) 221 | -o-transform rotate(-135deg) 222 | transform rotate(-135deg) 223 | 224 | 225 | @keyframes scroll-down 226 | 0% 227 | opacity 0.8 228 | top 0 229 | 50% 230 | opacity 0.4 231 | top -1em 232 | 100% 233 | opacity 0.8 234 | top 0 235 | 236 | @keyframes scroll-top 237 | 0% 238 | -webkit-transform translateY(0) 239 | transform translateY(0) 240 | 50% 241 | -webkit-transform translateY(-0.35rem) 242 | transform translateY(-0.35rem) 243 | 100% 244 | -webkit-transform translateY(0) 245 | transform translateY(0) 246 | 247 | 248 | /* pagination */ 249 | .pagination a, .pagination .current 250 | outline 0 251 | border 0 252 | background-color transparent 253 | font-size .9rem 254 | padding .5rem .75rem 255 | line-height 1.25 256 | -webkit-border-radius .125rem 257 | border-radius .125rem 258 | -webkit-transition all .3s linear 259 | -o-transition all .3s linear 260 | transition all .3s linear 261 | 262 | .pagination a:hover, .pagination .current 263 | background-color #eee 264 | 265 | 266 | /* Footer police 添加备案图标 */ 267 | a.police-beian 268 | position relative 269 | overflow hidden 270 | display inline-flex 271 | align-items center 272 | justify-content center 273 | 274 | img 275 | margin 0 3px 276 | width 18px 277 | height 18px 278 | 279 | @media (max-width: 320px) 280 | a.police-beian 281 | span.police-beian-sep 282 | display none 283 | 284 | 285 | /* 友链页 */ 286 | @media (max-width: 768px) 287 | .links 288 | margin-left .5em 289 | margin-right .5em 290 | 291 | .link-card 292 | box-shadow none 293 | 294 | &:hover 295 | box-shadow: 0 0 25px 0 rgba(0,0,0,0.16); 296 | z-index 1 297 | 298 | &-title 299 | overflow: hidden; 300 | text-overflow: ellipsis; 301 | white-space: nowrap; 302 | 303 | &-text 304 | height: 3em; 305 | display: -webkit-box; 306 | -webkit-box-orient: vertical; 307 | -webkit-line-clamp: 2; 308 | text-overflow: ellipsis; 309 | overflow: hidden; 310 | 311 | 312 | /* 雪花 */ 313 | .snow 314 | position fixed 315 | z-index -1 316 | top 0 317 | left 0 318 | 319 | 320 | /* 侧边栏 */ 321 | #sidebar 322 | position fixed 323 | top 0 324 | left 0 325 | z-index 1040 326 | overflow-y auto 327 | width 300px 328 | height 100% 329 | color $sidebar-text-color 330 | background-color $sidebar-background-color 331 | -webkit-transition all .2s ease-in-out 332 | -o-transition all .2s ease-in-out 333 | transition all .2s ease-in 334 | -webkit-box-shadow 0.25rem 0px 0.25rem 0px rgba(175, 175, 175, 0.6) 335 | box-shadow 0.25rem 0px 0.25rem 0px rgba(175, 175, 175, 0.6) 336 | overflow -moz-scrollbars-none 337 | scrollbar-width none 338 | -ms-overflow-style none 339 | 340 | #sidebar::-webkit-scrollbar 341 | display none 342 | 343 | .sidebar-hide 344 | margin-left -300px 345 | -webkit-box-shadow none !important 346 | box-shadow none !important 347 | 348 | .sidebar-button 349 | position fixed 350 | z-index 3 351 | /* 按钮背景 */ 352 | padding .5rem .7rem .5rem .3rem 353 | margin 2rem 0 2rem 0 354 | border-radius 0 3rem 3rem 0 355 | background-color rgba(255, 255, 255, 0.4) 356 | /* padding 1rem */ 357 | bottom 0 358 | color $sidebar-button-color 359 | cursor pointer 360 | -webkit-transition all .2s ease-in-out 361 | -o-transition all .2s ease-in-out 362 | transition all .2s ease-in-out 363 | 364 | .sidebar-button:hover 365 | color $link-hover-color 366 | -webkit-transition all .2s ease-in-out 367 | -o-transition all .2s ease-in-out 368 | transition all .2s ease-in-out 369 | 370 | .sidebar-button i 371 | transform rotateZ(180deg) 372 | 373 | .sidebar-button-shift 374 | left 0 375 | color $sidebar-button-shift-color 376 | text-shadow $sidebar-button-shift-shadow 377 | 378 | .sidebar-button-shift i 379 | transform rotateZ(0deg) 380 | 381 | .sidebar-overlay 382 | display none 383 | width 100% 384 | height 180px 385 | background-color #fe91b4 386 | position absolute 387 | 388 | .sidebar-intrude 389 | margin 60px auto 0 auto 390 | z-index 3 391 | 392 | .sidebar-avatar 393 | position relative 394 | border $sidebar-avatar-border 395 | border-radius 300px 396 | width 128px 397 | height 128px 398 | margin 0 auto 399 | position relative 400 | overflow hidden 401 | background-color #88acdb 402 | -webkit-transition all .2s ease-in 403 | display -webkit-box 404 | -webkit-box-pack center 405 | -webkit-box-align center 406 | text-align center; 407 | 408 | .sidebar-avatar img 409 | border 0 410 | vertical-align middle 411 | max-width 100% 412 | 413 | .sidebar-about a 414 | color $sidebar-about-link-color 415 | 416 | .sidebar-about a:hover 417 | color $sidebar-about-link-hover-color 418 | 419 | .sidebar-author 420 | margin .67em 0 421 | font-family Roboto,sans-serif 422 | font-size 30px 423 | transition .3s 424 | 425 | .sidebar-subtitle 426 | color $sidebar-subtitle-color 427 | 428 | .sidebar-label-left 429 | height 100% 430 | padding 0 7px 0 7px 431 | background-color $sidebar-about-link-color 432 | float left 433 | 434 | .sidebar-friend 435 | margin 40px auto 436 | padding 0 437 | 438 | .sidebar-friend-title 439 | max-width 120px 440 | margin 20px auto 441 | padding 0 442 | line-height 2rem 443 | color $sidebar-friend-title 444 | background-color $sidebar-friend-title-background 445 | text-align center 446 | 447 | .sidebar-friend a,a:hover 448 | -webkit-transition .1s !important 449 | -o-transition .1s !important 450 | transition .1s !important 451 | 452 | .sidebar-friend a 453 | color $sidebar-friend-link 454 | 455 | .sidebar-friend a:hover 456 | color $sidebar-friend-link-hover 457 | 458 | .sidebar-friend li 459 | width calc(100% - 5rem) 460 | margin 0 auto 461 | background none 462 | border-bottom $sidebar-friend-li-border 463 | -webkit-transition all .2s ease-in-out 464 | -o-transition all .2s ease-in-out 465 | transition all .2s ease-in-out 466 | 467 | .sidebar-friend li:hover 468 | background-color $sidebar-friend-li-hover 469 | -webkit-transition all .2s ease-in-out 470 | -o-transition all .2s ease-in-out 471 | transition all .2s ease-in-out 472 | 473 | .sidebar-friend i.fa-quote-left 474 | color $sidebar-friend-ico 475 | 476 | 477 | /* 底部文字样式修正 */ 478 | footer 479 | color $footer-color 480 | text-shadow $footer-shadow 481 | 482 | footer a 483 | color $footer-a-color 484 | 485 | footer a:hover 486 | color $footer-a-hover-color 487 | 488 | footer .iconfont 489 | color $footer-icon-color 490 | text-shadow $footer-icon-shadow 491 | 492 | .footer-theme a 493 | color $footer-theme-a-color 494 | text-shadow $footer-theme-a-shadow 495 | 496 | .footer-hitokoto 497 | max-width 50rem 498 | margin 0 auto 499 | max-height 3rem 500 | overflow hidden 501 | 502 | @media (max-width: 992px) 503 | .footer-hitokoto 504 | max-width: 80% 505 | 506 | 507 | /* 博客运行时间样式 */ 508 | #runtime, #busuanzi_value_site_pv, #busuanzi_value_site_uv 509 | cursor pointer 510 | -webkit-transition all .2s ease-in-out 511 | -o-transition all .2s ease-in-out 512 | transition all .2s ease-in-out 513 | 514 | #runtime:hover, #busuanzi_value_site_pv:hover, #busuanzi_value_site_uv:hover 515 | color $footer-a-hover-color 516 | text-shadow $footer-shadow 517 | -webkit-transition all .2s ease-in-out 518 | -o-transition all .2s ease-in-out 519 | transition all .2s ease-in-out 520 | 521 | 522 | /* 控制整个滚动条 */ 523 | ::-webkit-scrollbar { 524 | background-color: $scrollbar-color; 525 | width: 10px; 526 | height: 10px; 527 | background-clip: padding-box; 528 | } 529 | /* 滚动条两端方向按钮 */ 530 | ::-webkit-scrollbar-button { 531 | display: none; 532 | } 533 | /* 滚动条中间滑动部分 */ 534 | ::-webkit-scrollbar-thumb { 535 | background-color: $scrollbar-thumb-color; 536 | border-radius: 5px; 537 | background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); 538 | } 539 | /* 滚动条右下角区域 */ 540 | ::-webkit-scrollbar-corner { 541 | background-color: $scrollbar-thumb-color; 542 | } -------------------------------------------------------------------------------- /source/css/_pages/_category/categories.styl: -------------------------------------------------------------------------------- 1 | .category-tree-list 2 | font-size s = 1rem 3 | list-style-type circle 4 | 5 | .category-tree-list-link 6 | display inline-block 7 | padding .1rem .55rem 8 | font-weight 350 9 | 10 | .category-tree-list-count 11 | padding-left .5rem 12 | color #99a9bf 13 | font-size s* (3 / 4) 14 | 15 | &::before 16 | content: "(" 17 | 18 | &::after 19 | content: ")" 20 | 21 | -------------------------------------------------------------------------------- /source/css/_pages/_category/category.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_category/category.styl -------------------------------------------------------------------------------- /source/css/_pages/_index/index.styl: -------------------------------------------------------------------------------- 1 | .index-header 2 | font-weight 700 3 | white-space nowrap 4 | overflow hidden 5 | text-overflow ellipsis 6 | 7 | @media (max-width: 768px) 8 | .index-header 9 | font-size 1.25rem 10 | white-space normal 11 | overflow hidden 12 | margin-top 1.25rem 13 | 14 | .index-thumbnails 15 | display block 16 | width 100% 17 | height 10rem 18 | object-fit cover 19 | 20 | .index-excerpt 21 | margin 0.5rem 0 0.5rem 0 22 | height auto 23 | max-height 5rem 24 | line-height 1.25rem 25 | overflow hidden 26 | 27 | .index-text 28 | float right 29 | margin-left -0.25rem 30 | width 100% 31 | word-break break-word 32 | 33 | &::before 34 | float left 35 | width 0.25rem 36 | content '' 37 | height 2rem 38 | 39 | // .index-excerpt::after { 40 | // float: right; 41 | // content: "..."; 42 | // height: 1rem; 43 | // line-height: 1rem; 44 | // !* 为三个省略号的宽度 *! 45 | // width: 3em; 46 | // !* 使盒子不占位置 *! 47 | // margin-left: -3em; 48 | // !* 移动省略号位置 *! 49 | // position: relative; 50 | // left: 100%; 51 | // top: -1rem; 52 | // padding-right: 0.25rem; 53 | // } -------------------------------------------------------------------------------- /source/css/_pages/_post/post.styl: -------------------------------------------------------------------------------- 1 | .post-content 2 | box-sizing border-box 3 | padding-left 10% 4 | padding-right 10% 5 | max-width 64rem 6 | 7 | img 8 | max-width 90% 9 | margin 1.5rem auto 10 | display block 11 | box-shadow $img-shadow 12 | 13 | @media (max-width: 768px) 14 | .post-content 15 | padding-left 2rem 16 | padding-right 2rem 17 | 18 | @media (max-width: 425px) 19 | .post-content 20 | padding-left 1rem 21 | padding-right 1rem 22 | 23 | .post-content h1::before, h2::before, h3::before, h4::before, h5::before, h6::before 24 | display block 25 | content "" 26 | margin-top -50px 27 | height 50px 28 | width 1px 29 | visibility hidden 30 | 31 | // nav 32 | 33 | #post-note 34 | margin 1rem 0 35 | padding .5rem 0 36 | border-left 3px solid 37 | background-color #f9f9f9 38 | border-color #eeeeee 39 | 40 | #post-note div 41 | padding .2rem .5rem 42 | 43 | #post-nav 44 | padding 0 45 | width 100% 46 | 47 | #post-nav-prev 48 | text-align left 49 | 50 | #post-nav-next 51 | text-align right 52 | 53 | // toc 54 | 55 | #toc 56 | padding 3rem 0 0 0 57 | height calc(100% - 9rem) 58 | 59 | #toc p 60 | color $toc-title-p-color 61 | 62 | #tocbot 63 | max-height 100% 64 | overflow-y scroll 65 | overflow -moz-scrollbars-none 66 | scrollbar-width none 67 | -ms-overflow-style none 68 | &::-webkit-scrollbar 69 | display none 70 | ol 71 | list-style none 72 | padding-inline-start 1rem 73 | 74 | .tocbot-list 75 | ol 76 | list-style none 77 | padding-left 1rem 78 | a 79 | font-size: 15px 80 | 81 | .tocbot-link 82 | color $tocbot-link-color 83 | text-shadow $tocbot-link-shadow 84 | 85 | .tocbot-active-link 86 | font-weight 600 87 | color $tocbot-link-active-color 88 | text-shadow $tocbot-active-link-shadow 89 | 90 | .tocbot-is-collapsible 91 | max-height 1000px 92 | overflow hidden 93 | transition all 300ms ease-in-out 94 | 95 | .tocbot-is-collapsed 96 | max-height 0 97 | 98 | @media (max-width: 1024px) 99 | .toc-container 100 | padding-left 0 101 | padding-right 0 102 | 103 | .custom, .comments 104 | margin-left: 2rem 105 | margin-right: 2rem 106 | 107 | @media (max-width: 425px) 108 | .custom, .comments 109 | margin-left: 1rem 110 | margin-right: 1rem 111 | 112 | @media (min-width: 64rem) 113 | .custom, .comments 114 | max-width: 64rem 115 | 116 | .katex-block 117 | overflow-x auto -------------------------------------------------------------------------------- /source/css/_pages/_tag/tag.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_pages/_tag/tag.styl -------------------------------------------------------------------------------- /source/css/_pages/_tag/tags.styl: -------------------------------------------------------------------------------- 1 | .tagcloud 2 | a 3 | display inline-block 4 | padding .1rem .55rem 5 | font-weight 350 6 | 7 | &:hover 8 | color $link-hover-color!important -------------------------------------------------------------------------------- /source/css/_pages/pages.styl: -------------------------------------------------------------------------------- 1 | @import "_base/base" 2 | @import "_index/index" 3 | @import "_post/post" 4 | @import "_archive/archive" 5 | @import "_about/about" 6 | @import "_category/*" 7 | @import "_tag/*" -------------------------------------------------------------------------------- /source/css/_variables/base.styl: -------------------------------------------------------------------------------- 1 | // Colors 2 | // ----------------------- 3 | 4 | // body 5 | $body-bg-color = theme-config("color.body_bg_color", "#eee") 6 | 7 | // global 8 | $text-color = theme-config("color.text_color", "#3c4858") 9 | $link-color = theme-config("color.link_color", $text-color) 10 | $link-hover-color = theme-config("color.link_hover_color", "#1abc9c") 11 | $link-hover-bg = #f8f9fa 12 | 13 | // navbar 14 | $navbar-bg-color = theme-config("color.navbar_bg_color", "#2f4154") 15 | $navbar-text-color = theme-config("color.navbar_text_color", $text-color) 16 | 17 | // board 18 | $board-bg-color = theme-config("color.board_color", "#fff") 19 | 20 | // Shadow 21 | // ----------------------- 22 | 23 | $img-shadow = 0 5px 11px 0 rgba(0, 0, 0, .18), 0 4px 15px 0 rgba(0, 0, 0, .15) !important 24 | 25 | //toc 26 | $toc-title-p-color = theme-config("color.toc_title_p_color", "#3c4858") 27 | $tocbot-link-color = theme-config("color.tocbot_link_color", "#3c4858") 28 | $tocbot-link-active-color = theme-config("color.tocbot_link_active_color", "#1abc9c") 29 | $tocbot-link-shadow = theme-config("color.tocbot_link_shadow", "0.1em 0.1em 0.2em #ffffff") 30 | $tocbot-active-link-shadow = theme-config("color.tocbot_active_link_shadow", "0.1em 0.1em 0.2em #ffbcbc") 31 | 32 | //sidebar 33 | $sidebar-text-color = theme-config("color.sidebar_text_color", "#3c4858") 34 | $sidebar-background-color = theme-config("color.sidebar_background_color", "#f6f8fad1") 35 | $sidebar-button-color = theme-config("color.sidebar_button_color", "#99a9bf") 36 | $sidebar-button-shift-color = theme-config("color.sidebar_button_shift_color", "#ffffff") 37 | $sidebar-button-shift-shadow = theme-config("color.sidebar_button_shift_shadow", "0.1rem 0.1rem 0.5rem #3e3e3e") 38 | $sidebar-about-link-color = theme-config("color.sidebar_about_link_color", "#3c4858") 39 | $sidebar-about-link-hover-color = theme-config("color.sidebar_about_link_hover_color", "#fe4365") 40 | $sidebar-avatar-border = theme-config("color.sidebar_avatar_border", "5px solid #ffffff") 41 | $sidebar-subtitle-color = theme-config("color.sidebar_subtitle_color", "#999999") 42 | $sidebar-friend-title = theme-config("color.sidebar_friend_title", "#ffffff") 43 | $sidebar-friend-title-background = theme-config("color.sidebar_friend_title_background", "#fe91b4") 44 | $sidebar-friend-link = theme-config("color.sidebar_friend_link", "#3c4858") 45 | $sidebar-friend-link-hover = theme-config("color.sidebar_friend_link_hover", "#ffffff") 46 | $sidebar-friend-li-border = theme-config("color.sidebar_friend_li_border", "1px dashed #bdbdbd") 47 | $sidebar-friend-li-hover = theme-config("color.sidebar_friend_li_hover", "#fe91b4") 48 | $sidebar-friend-ico = theme-config("color.sidebar_friend_ico", "#bfbfbf") 49 | 50 | //footer 51 | $footer-color = theme-config("color.footer_color", "#ffffff") 52 | $footer-shadow = theme-config("color.footer_shadow", "0.1rem 0.1rem 0.5rem white") 53 | $footer-a-color = theme-config("color.footer_a_color", "#ffffff") 54 | $footer-a-hover-color = theme-config("color.footer_a_hover_color", "#fe4365") 55 | $footer-theme-a-color = theme-config("color.footer_theme_a_color", "#fc9d9a") 56 | $footer-theme-a-shadow = theme-config("color.footer_theme_a_shadow", "0.1rem 0.1rem 0.2rem #fe4365") 57 | $footer-icon-color = theme-config("color.footer_icon_color", "#fc9d9a") 58 | $footer-icon-shadow = theme-config("color.footer_icon_shadow", "0.1rem 0.1rem 0.5rem white") 59 | 60 | //scrollbar 61 | $scrollbar-color = theme-config("color.scrollbar_color", "#fec9c9") 62 | $scrollbar-thumb-color = theme-config("color.scrollbar_thumb_color", "#fe4365") 63 | 64 | 65 | // User custom 66 | // ----------------------- 67 | @import "custom" -------------------------------------------------------------------------------- /source/css/_variables/custom.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/css/_variables/custom.styl -------------------------------------------------------------------------------- /source/css/main.styl: -------------------------------------------------------------------------------- 1 | // -------------------------------------- 2 | // Fluid 3 | // https://github.com/fluid-dev/hexo-theme-fluid 4 | // -------------------------------------- 5 | 6 | @import "_variables/base" 7 | 8 | @import "_functions/base" 9 | 10 | @import "_mixins/base" 11 | 12 | @import "_pages/pages" 13 | 14 | @import "_custom/custom" -------------------------------------------------------------------------------- /source/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/apple-touch-icon.png -------------------------------------------------------------------------------- /source/img/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/avatar.png -------------------------------------------------------------------------------- /source/img/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/default.png -------------------------------------------------------------------------------- /source/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/favicon.png -------------------------------------------------------------------------------- /source/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/loading.gif -------------------------------------------------------------------------------- /source/img/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/img/police_beian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/img/police_beian.png -------------------------------------------------------------------------------- /source/js/lazyload.js: -------------------------------------------------------------------------------- 1 | (function (window) { 2 | var images = Array.prototype.slice.call(document.querySelectorAll('img[srcset]')); 3 | 4 | function elementInViewport(el) { 5 | var rect = el.getBoundingClientRect(); 6 | var height = window.innerHeight || document.documentElement.clientHeight; 7 | return ( 8 | rect.top >= 0 9 | && rect.left >= 0 10 | && rect.top <= height * 3 11 | ); 12 | } 13 | function loadImage(el, fn) { 14 | var img = new Image(), src = el.getAttribute('src'); 15 | img.onload = function () { 16 | el.srcset = src; 17 | fn ? fn() : null; 18 | }; 19 | img.srcset = src; 20 | } 21 | 22 | function processImages() { 23 | for (var i = 0; i < images.length; i++) { 24 | if (elementInViewport(images[i])) { 25 | (function(index){ 26 | var loadingImage = images[index]; 27 | loadImage(loadingImage, function () { 28 | images = images.filter(function(t) { 29 | return loadingImage !== t; 30 | }); 31 | }); 32 | })(i); 33 | } 34 | } 35 | } 36 | 37 | function throttle(method, context) { 38 | clearTimeout(method.tId); 39 | method.tId = setTimeout(function () { 40 | method.call(context); 41 | }, 100); 42 | } 43 | 44 | processImages(); 45 | 46 | window.addEventListener('scroll', function () { 47 | throttle(processImages, window); 48 | }); 49 | })(this); 50 | -------------------------------------------------------------------------------- /source/js/local-search.js: -------------------------------------------------------------------------------- 1 | // A local search script with the help of [hexo-generator-search](https://github.com/PaicHyperionDev/hexo-generator-search) 2 | // Copyright (C) 2017 3 | // Liam Huang 4 | // This library is free software; you can redistribute it and/or modify 5 | // it under the terms of the GNU Lesser General Public License as 6 | // published by the Free Software Foundation; either version 2.1 of the 7 | // License, or (at your option) any later version. 8 | // 9 | // This library is distributed in the hope that it will be useful, but 10 | // WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | // Lesser General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU Lesser General Public 15 | // License along with this library; if not, write to the Free Software 16 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 17 | // 02110-1301 USA 18 | // 19 | // Updated by Rook1e 20 | 21 | var searchFunc = function (path, search_id, content_id) { 22 | // 0x00. environment initialization 23 | 'use strict'; 24 | var $input = document.getElementById(search_id); 25 | var $resultContent = document.getElementById(content_id); 26 | $resultContent.innerHTML = "
Loading...

Loading...
"; 27 | $.ajax({ 28 | // 0x01. load xml file 29 | url: path, 30 | dataType: "xml", 31 | success: function (xmlResponse) { 32 | // 0x02. parse xml file 33 | var dataList = $("entry", xmlResponse).map(function () { 34 | return { 35 | title: $("title", this).text(), 36 | content: $("content", this).text(), 37 | url: $("url", this).text() 38 | }; 39 | }).get(); 40 | $resultContent.innerHTML = ""; 41 | 42 | $input.addEventListener('input', function () { 43 | // 0x03. parse query to keywords list 44 | var str = ''; 45 | var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/); 46 | $resultContent.innerHTML = ""; 47 | if (this.value.trim().length <= 0) { 48 | return; 49 | } 50 | // 0x04. perform local searching 51 | dataList.forEach(function (data) { 52 | var isMatch = true; 53 | var content_index = []; 54 | if (!data.title || data.title.trim() === '') { 55 | data.title = "Untitled"; 56 | } 57 | var orig_data_title = data.title.trim(); 58 | var data_title = orig_data_title.toLowerCase(); 59 | var orig_data_content = data.content.trim().replace(/<[^>]+>/g, ""); 60 | var data_content = orig_data_content.toLowerCase(); 61 | var data_url = data.url; 62 | var index_title = -1; 63 | var index_content = -1; 64 | var first_occur = -1; 65 | // only match articles with not empty contents 66 | if (data_content !== '') { 67 | keywords.forEach(function (keyword, i) { 68 | index_title = data_title.indexOf(keyword); 69 | index_content = data_content.indexOf(keyword); 70 | 71 | if (index_title < 0 && index_content < 0) { 72 | isMatch = false; 73 | } else { 74 | if (index_content < 0) { 75 | index_content = 0; 76 | } 77 | if (i === 0) { 78 | first_occur = index_content; 79 | } 80 | //content_index.push({index_content:index_content, keyword_len:keyword_len}); 81 | } 82 | }); 83 | } else { 84 | isMatch = false; 85 | } 86 | // 0x05. show search results 87 | if (isMatch) { 88 | str += "" + orig_data_title + ""; 89 | var content = orig_data_content; 90 | if (first_occur >= 0) { 91 | // cut out 100 characters 92 | var start = first_occur - 20; 93 | var end = first_occur + 80; 94 | 95 | if (start < 0) { 96 | start = 0; 97 | } 98 | 99 | if (start === 0) { 100 | end = 100; 101 | } 102 | 103 | if (end > content.length) { 104 | end = content.length; 105 | } 106 | 107 | var match_content = content.substring(start, end); 108 | 109 | // highlight all keywords 110 | keywords.forEach(function (keyword) { 111 | var regS = new RegExp(keyword, "gi"); 112 | match_content = match_content.replace(regS, "" + keyword + ""); 113 | }); 114 | 115 | str += "

" + match_content + "...

" 116 | } 117 | } 118 | }); 119 | if (str.indexOf('list-group-item') === -1) { 120 | return $('#local-search-input').addClass("invalid").removeClass("valid"); 121 | } 122 | $('#local-search-input').addClass("valid").removeClass("invalid"); 123 | $resultContent.innerHTML = str; 124 | }); 125 | } 126 | }); 127 | $(document).on('click', '#local-search-close', function () { 128 | $('#local-search-input').val('').removeClass("invalid").removeClass("valid"); 129 | $('#local-search-result').html(''); 130 | }); 131 | }; 132 | 133 | var getSearchFile = function (path) { 134 | searchFunc(path, 'local-search-input', 'local-search-result'); 135 | }; -------------------------------------------------------------------------------- /source/js/main.js: -------------------------------------------------------------------------------- 1 | function scrollToElement(target, offset) { 2 | var scroll_offset = $(target).offset(); 3 | $("body,html").animate({ 4 | scrollTop: scroll_offset.top + (offset || 0), 5 | easing: 'swing' 6 | }) 7 | } 8 | 9 | function scrollToBoard() { 10 | scrollToElement('#board', -$("#navbar").height()); 11 | } 12 | 13 | 14 | $(document).ready(function () { 15 | /* 顶部菜单的动效 */ 16 | var navbar = $("#navbar"); 17 | if (navbar.offset().top > 0) { 18 | navbar.addClass("navbar-custom"); 19 | navbar.removeClass("navbar-dark"); 20 | } 21 | $(window).scroll(function () { 22 | if (navbar.offset().top > 0) { 23 | navbar.addClass("navbar-custom"); 24 | navbar.removeClass("navbar-dark"); 25 | } else { 26 | navbar.addClass("navbar-dark"); 27 | } 28 | }); 29 | $('#navbar-toggler-btn').on('click', function () { 30 | $('.animated-icon').toggleClass('open'); 31 | $('#navbar').toggleClass('navbar-col-show'); 32 | }); 33 | 34 | 35 | /* 向下滚动箭头的点击 */ 36 | $(".scroll-down-bar").on("click", scrollToBoard); 37 | 38 | /* 向顶部滚动箭头 */ 39 | var topArrow = $("#scroll-top-button"); 40 | var posDisplay = false; 41 | var scrollDisplay = false; 42 | /* 位置 */ 43 | var setTopArrowPos = function () { 44 | var boardRight = document.getElementById('board').getClientRects()[0].right; 45 | var bodyWidth = document.body.offsetWidth; 46 | var right = bodyWidth - boardRight; 47 | posDisplay = right >= 50; 48 | topArrow.css({ 49 | "bottom": posDisplay && scrollDisplay ? "20px" : "-60px", 50 | "right": right - 64 + "px" 51 | }); 52 | }; 53 | setTopArrowPos(); 54 | $(window).resize(setTopArrowPos); 55 | /* 显示 */ 56 | var headerHeight = $("#board").offset().top; 57 | $(window).scroll(function () { 58 | var scrollHeight = document.body.scrollTop + document.documentElement.scrollTop; 59 | scrollDisplay = scrollHeight >= headerHeight; 60 | topArrow.css({ 61 | "bottom": posDisplay && scrollDisplay ? "20px" : "-60px" 62 | }); 63 | }); 64 | /* 点击 */ 65 | topArrow.on("click", function () { 66 | $("body,html").animate({ 67 | scrollTop: 0, 68 | easing: 'swing' 69 | }) 70 | }); 71 | }); 72 | 73 | /* Sidebar */ 74 | var toggleSidebar = function(){ 75 | $("#sidebar").toggleClass('sidebar-hide'); 76 | $("#toggle-sidebar").toggleClass('sidebar-button-shift'); 77 | } 78 | var hideSidebar = function(){ 79 | $("#sidebar").addClass('sidebar-hide'); 80 | $("#toggle-sidebar").addClass('sidebar-button-shift'); 81 | } 82 | $("#toggle-sidebar").on("click",toggleSidebar); 83 | $("header").on("click",hideSidebar); 84 | $("#mainContent").on("click",hideSidebar); 85 | $("#footerContent").on("click",hideSidebar); -------------------------------------------------------------------------------- /source/js/post.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | var navHeight = $("#navbar").height(); 3 | var toc = $("#toc"); 4 | var main = $("main"); 5 | var tocT = navHeight + (toc.offset().top - main.offset().top); 6 | var tocLimMin = main.offset().top - navHeight; 7 | var tocLimMax = $("#comments").offset().top - navHeight; 8 | var loadToc = function () { 9 | var scroH = document.body.scrollTop + document.documentElement.scrollTop; 10 | if (tocLimMin <= scroH && scroH <= tocLimMax) { 11 | toc.css({ 12 | "display": "block", 13 | "position": "fixed", 14 | "top": tocT 15 | }) 16 | } else if (scroH <= tocLimMin) { 17 | toc.css({ 18 | "position": "", 19 | "top": '' 20 | }) 21 | } else if (scroH > tocLimMax) { 22 | /* 滚动到页面底部时隐藏侧边目录,有bug */ 23 | /* toc.css("display", "none") */ 24 | } 25 | } 26 | loadToc(); 27 | $(window).scroll(loadToc); 28 | tocbot.init({ 29 | tocSelector: '#tocbot', 30 | contentSelector: '.post-content', 31 | headingSelector: 'h1, h2, h3, h4, h5, h6', 32 | linkClass: 'tocbot-link', 33 | activeLinkClass: 'tocbot-active-link', 34 | listClass: 'tocbot-list', 35 | isCollapsedClass: 'tocbot-is-collapsed', 36 | collapsibleClass: 'tocbot-is-collapsible', 37 | scrollSmooth: true, 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /source/lib/anchor/anchor.min.js: -------------------------------------------------------------------------------- 1 | // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat 2 | // 3 | // AnchorJS - v4.2.0 - 2019-01-01 4 | // https://github.com/bryanbraun/anchorjs 5 | // Copyright (c) 2019 Bryan Braun; Licensed MIT 6 | // 7 | // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat 8 | !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}}); 9 | // @license-end -------------------------------------------------------------------------------- /source/lib/fancybox/jquery.fancybox.min.css: -------------------------------------------------------------------------------- 1 | body.compensate-for-scrollbar{overflow:hidden}.fancybox-active{height:auto}.fancybox-is-hidden{left:-9999px;margin:0;position:absolute!important;top:-9999px;visibility:hidden}.fancybox-container{-webkit-backface-visibility:hidden;height:100%;left:0;outline:none;position:fixed;-webkit-tap-highlight-color:transparent;top:0;-ms-touch-action:manipulation;touch-action:manipulation;transform:translateZ(0);width:100%;z-index:99992}.fancybox-container *{box-sizing:border-box}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{bottom:0;left:0;position:absolute;right:0;top:0}.fancybox-outer{-webkit-overflow-scrolling:touch;overflow-y:auto}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.9;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption,.fancybox-infobar,.fancybox-navigation .fancybox-button,.fancybox-toolbar{direction:ltr;opacity:0;position:absolute;transition:opacity .25s ease,visibility 0s ease .25s;visibility:hidden;z-index:99997}.fancybox-show-caption .fancybox-caption,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-nav .fancybox-navigation .fancybox-button,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;transition:opacity .25s ease 0s,visibility 0s ease 0s;visibility:visible}.fancybox-infobar{color:#ccc;font-size:13px;-webkit-font-smoothing:subpixel-antialiased;height:44px;left:0;line-height:44px;min-width:44px;mix-blend-mode:difference;padding:0 10px;pointer-events:none;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-toolbar{right:0;top:0}.fancybox-stage{direction:ltr;overflow:visible;transform:translateZ(0);z-index:99994}.fancybox-is-open .fancybox-stage{overflow:hidden}.fancybox-slide{-webkit-backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:absolute;text-align:center;top:0;transition-property:transform,opacity;white-space:normal;width:100%;z-index:99994}.fancybox-slide:before{content:"";display:inline-block;font-size:0;height:100%;vertical-align:middle;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:hidden;padding:44px 0}.fancybox-slide--image:before{display:none}.fancybox-slide--html{padding:6px}.fancybox-content{background:#fff;display:inline-block;margin:0;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:relative;text-align:left;vertical-align:middle}.fancybox-slide--image .fancybox-content{animation-timing-function:cubic-bezier(.5,0,.14,1);-webkit-backface-visibility:hidden;background:transparent;background-repeat:no-repeat;background-size:100% 100%;left:0;max-width:none;overflow:visible;padding:0;position:absolute;top:0;transform-origin:top left;transition-property:transform,opacity;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:99995}.fancybox-can-zoomOut .fancybox-content{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-content{cursor:zoom-in}.fancybox-can-pan .fancybox-content,.fancybox-can-swipe .fancybox-content{cursor:grab}.fancybox-is-grabbing .fancybox-content{cursor:grabbing}.fancybox-container [data-selectable=true]{cursor:text}.fancybox-image,.fancybox-spaceball{background:transparent;border:0;height:100%;left:0;margin:0;max-height:none;max-width:none;padding:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content,.fancybox-slide--map .fancybox-content,.fancybox-slide--pdf .fancybox-content,.fancybox-slide--video .fancybox-content{height:100%;overflow:visible;padding:0;width:100%}.fancybox-slide--video .fancybox-content{background:#000}.fancybox-slide--map .fancybox-content{background:#e5e3df}.fancybox-slide--iframe .fancybox-content{background:#fff}.fancybox-iframe,.fancybox-video{background:transparent;border:0;display:block;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.fancybox-iframe{left:0;position:absolute;top:0}.fancybox-error{background:#fff;cursor:default;max-width:400px;padding:40px;width:100%}.fancybox-error p{color:#444;font-size:16px;line-height:20px;margin:0;padding:0}.fancybox-button{background:rgba(30,30,30,.6);border:0;border-radius:0;box-shadow:none;cursor:pointer;display:inline-block;height:44px;margin:0;padding:10px;position:relative;transition:color .2s;vertical-align:top;visibility:inherit;width:44px}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:hover{color:#fff}.fancybox-button:focus{outline:none}.fancybox-button.fancybox-focus{outline:1px dotted}.fancybox-button[disabled],.fancybox-button[disabled]:hover{color:#888;cursor:default;outline:none}.fancybox-button div{height:100%}.fancybox-button svg{display:block;height:100%;overflow:visible;position:relative;width:100%}.fancybox-button svg path{fill:currentColor;stroke-width:0}.fancybox-button--fsenter svg:nth-child(2),.fancybox-button--fsexit svg:first-child,.fancybox-button--pause svg:first-child,.fancybox-button--play svg:nth-child(2){display:none}.fancybox-progress{background:#ff5268;height:2px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:99998}.fancybox-close-small{background:transparent;border:0;border-radius:0;color:#ccc;cursor:pointer;opacity:.8;padding:8px;position:absolute;right:-12px;top:-44px;z-index:401}.fancybox-close-small:hover{color:#fff;opacity:1}.fancybox-slide--html .fancybox-close-small{color:currentColor;padding:10px;right:0;top:0}.fancybox-slide--image.fancybox-is-scaling .fancybox-content{overflow:hidden}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{display:none}.fancybox-navigation .fancybox-button{background-clip:content-box;height:100px;opacity:0;position:absolute;top:calc(50% - 50px);width:70px}.fancybox-navigation .fancybox-button div{padding:7px}.fancybox-navigation .fancybox-button--arrow_left{left:0;left:env(safe-area-inset-left);padding:31px 26px 31px 6px}.fancybox-navigation .fancybox-button--arrow_right{padding:31px 6px 31px 26px;right:0;right:env(safe-area-inset-right)}.fancybox-caption{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent);bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;line-height:1.5;padding:75px 44px 25px;pointer-events:none;right:0;text-align:center;z-index:99996}@supports (padding:max(0px)){.fancybox-caption{padding:75px max(44px,env(safe-area-inset-right)) max(25px,env(safe-area-inset-bottom)) max(44px,env(safe-area-inset-left))}}.fancybox-caption--separate{margin-top:-50px}.fancybox-caption__body{max-height:50vh;overflow:auto;pointer-events:all}.fancybox-caption a,.fancybox-caption a:link,.fancybox-caption a:visited{color:#ccc;text-decoration:none}.fancybox-caption a:hover{color:#fff;text-decoration:underline}.fancybox-loading{animation:a 1s linear infinite;background:transparent;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.7;padding:0;position:absolute;top:50%;width:50px;z-index:99999}@keyframes a{to{transform:rotate(1turn)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{opacity:0;transform:translate3d(-100%,0,0)}.fancybox-fx-slide.fancybox-slide--next{opacity:0;transform:translate3d(100%,0,0)}.fancybox-fx-slide.fancybox-slide--current{opacity:1;transform:translateZ(0)}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{opacity:0;transform:scale3d(1.5,1.5,1.5)}.fancybox-fx-zoom-in-out.fancybox-slide--next{opacity:0;transform:scale3d(.5,.5,.5)}.fancybox-fx-zoom-in-out.fancybox-slide--current{opacity:1;transform:scaleX(1)}.fancybox-fx-rotate.fancybox-slide--previous{opacity:0;transform:rotate(-1turn)}.fancybox-fx-rotate.fancybox-slide--next{opacity:0;transform:rotate(1turn)}.fancybox-fx-rotate.fancybox-slide--current{opacity:1;transform:rotate(0deg)}.fancybox-fx-circular.fancybox-slide--previous{opacity:0;transform:scale3d(0,0,0) translate3d(-100%,0,0)}.fancybox-fx-circular.fancybox-slide--next{opacity:0;transform:scale3d(0,0,0) translate3d(100%,0,0)}.fancybox-fx-circular.fancybox-slide--current{opacity:1;transform:scaleX(1) translateZ(0)}.fancybox-fx-tube.fancybox-slide--previous{transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{transform:translateZ(0) scale(1)}@media (max-height:576px){.fancybox-slide{padding-left:6px;padding-right:6px}.fancybox-slide--image{padding:6px 0}.fancybox-close-small{right:-6px}.fancybox-slide--image .fancybox-close-small{background:#4e4e4e;color:#f2f4f6;height:36px;opacity:1;padding:6px;right:0;top:0;width:36px}.fancybox-caption{padding-left:12px;padding-right:12px}@supports (padding:max(0px)){.fancybox-caption{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}}.fancybox-share{background:#f4f4f4;border-radius:3px;max-width:90%;padding:30px;text-align:center}.fancybox-share h1{color:#222;font-size:35px;font-weight:700;margin:0 0 20px}.fancybox-share p{margin:0;padding:0}.fancybox-share__button{border:0;border-radius:3px;display:inline-block;font-size:14px;font-weight:700;line-height:40px;margin:0 5px 10px;min-width:130px;padding:0 15px;text-decoration:none;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.fancybox-share__button:link,.fancybox-share__button:visited{color:#fff}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{height:25px;margin-right:7px;position:relative;top:-1px;vertical-align:middle;width:25px}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{background:transparent;border:0;border-bottom:1px solid #d7d7d7;border-radius:0;color:#5d5b5b;font-size:14px;margin:10px 0 0;outline:none;padding:10px 15px;width:100%}.fancybox-thumbs{background:#ddd;bottom:0;display:none;margin:0;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;padding:2px 2px 4px;position:absolute;right:0;-webkit-tap-highlight-color:rgba(0,0,0,0);top:0;width:212px;z-index:99995}.fancybox-thumbs-x{overflow-x:auto;overflow-y:hidden}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs__list{font-size:0;height:100%;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;position:relative;white-space:nowrap;width:100%}.fancybox-thumbs-x .fancybox-thumbs__list{overflow:hidden}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{width:7px}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs__list a{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,.1);background-position:50%;background-repeat:no-repeat;background-size:cover;cursor:pointer;float:left;height:75px;margin:2px;max-height:calc(100% - 8px);max-width:calc(50% - 4px);outline:none;overflow:hidden;padding:0;position:relative;-webkit-tap-highlight-color:transparent;width:100px}.fancybox-thumbs__list a:before{border:6px solid #ff5268;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:all .2s cubic-bezier(.25,.46,.45,.94);z-index:99991}.fancybox-thumbs__list a:focus:before{opacity:.5}.fancybox-thumbs__list a.fancybox-thumbs-active:before{opacity:1}@media (max-width:576px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs__list a{max-width:calc(100% - 10px)}} -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /source/lib/font-awesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/font-awesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /source/lib/github-markdown/github-markdown.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Minified by jsDelivr using clean-css v4.2.1. 3 | * Original file: /npm/github-markdown-css@3.0.1/github-markdown.css 4 | * 5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 6 | */ 7 | @font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff')}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{background-color:#b31d28;color:#fafbfc}.markdown-body .pl-c2{background-color:#d73a49;color:#fafbfc}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{color:#22863a;font-weight:700}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#005cc5;font-weight:700}.markdown-body .pl-mi{color:#24292e;font-style:italic}.markdown-body .pl-mb{color:#24292e;font-weight:700}.markdown-body .pl-md{background-color:#ffeef0;color:#b31d28}.markdown-body .pl-mi1{background-color:#f0fff4;color:#22863a}.markdown-body .pl-mc{background-color:#ffebda;color:#e36209}.markdown-body .pl-mi2{background-color:#005cc5;color:#f6f8fa}.markdown-body .pl-mdr{color:#6f42c1;font-weight:700}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{color:#032f62;text-decoration:underline}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{background:0 0;border:0;border-bottom:1px solid #dfe2e5;height:0;margin:15px 0;overflow:hidden}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-collapse:collapse;border-spacing:0}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-bottom:0;margin-top:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .border{border:1px solid #e1e4e8!important}.markdown-body .border-0{border:0!important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8!important}.markdown-body .rounded-1{border-radius:3px!important}.markdown-body .bg-white{background-color:#fff!important}.markdown-body .bg-gray-light{background-color:#fafbfc!important}.markdown-body .text-gray-light{color:#6a737d!important}.markdown-body .mb-0{margin-bottom:0!important}.markdown-body .my-2{margin-bottom:8px!important;margin-top:8px!important}.markdown-body .pl-0{padding-left:0!important}.markdown-body .py-0{padding-bottom:0!important;padding-top:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .py-2{padding-bottom:8px!important;padding-top:8px!important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px!important}.markdown-body .px-3{padding-right:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .f6{font-size:12px!important}.markdown-body .lh-condensed{line-height:1.25!important}.markdown-body .text-bold{font-weight:600!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}.markdown-body blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid #eaecef;padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:#6a737d;font-size:.85em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{display:block;overflow:auto;width:100%}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #dfe2e5;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{background-color:#fff;box-sizing:content-box;max-width:100%}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{background-color:rgba(27,31,35,.05);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{background:0 0;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}.markdown-body .commit-tease-sha{color:#444d56;display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%}.markdown-body .blob-wrapper{border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(27,31,35,.3);cursor:pointer;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;min-width:50px;padding-left:10px;padding-right:10px;text-align:right;user-select:none;vertical-align:top;white-space:nowrap;width:1%}.markdown-body .blob-num:hover{color:rgba(27,31,35,.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{line-height:20px;padding-left:10px;padding-right:10px;position:relative;vertical-align:top}.markdown-body .blob-code-inner{color:#24292e;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;overflow:visible;white-space:pre;word-wrap:normal}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{background:#ffea7f;cursor:pointer}.markdown-body kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .pl-7{padding-left:48px!important}.markdown-body .pl-8{padding-left:64px!important}.markdown-body .pl-9{padding-left:80px!important}.markdown-body .pl-10{padding-left:96px!important}.markdown-body .pl-11{padding-left:112px!important}.markdown-body .pl-12{padding-left:128px!important} -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qixa/hexo-theme-fluid-mod/f7777debb74c8bbba39e02cfa8586de3f6452939/source/lib/mdbootstrap/font/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /source/lib/prettify/github-v2.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fafbfc!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#333}ol.linenums{margin-top:0;margin-bottom:0;color:#ccc}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fafbfc;list-style-type:decimal}@media screen{.str{color:#183691}.kwd{color:#a71d5d}.com{color:#969896}.typ{color:#0086b3}.lit{color:#0086b3}.pun{color:#333}.opn{color:#333}.clo{color:#333}.tag{color:navy}.atn{color:#795da3}.atv{color:#183691}.dec{color:#333}.var{color:teal}.fun{color:#900}} -------------------------------------------------------------------------------- /source/lib/prettify/prettify.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Minified by jsDelivr using UglifyJS v3.0.24. 3 | * Original file: /npm/code-prettify@0.1.0/src/prettify.js 4 | * 5 | * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 6 | */ 7 | var DecorationsT,JobT,SourceSpansT,IN_GLOBAL_SCOPE=!1,HACK_TO_FIX_JS_INCLUDE_PL,PR;window.PR_SHOULD_USE_CONTINUATION=!0;var prettyPrintOne,prettyPrint;!function(){function e(e){function n(e){var n=e.charCodeAt(0);if(92!==n)return n;var t=e.charAt(1);return(n=u[t])||("0"<=t&&t<="7"?parseInt(e.substring(1),8):"u"===t||"x"===t?parseInt(e.substring(2),16):e.charCodeAt(1))}function t(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);var n=String.fromCharCode(e);return"\\"===n||"-"===n||"]"===n||"^"===n?"\\"+n:n}function r(e){var r=e.substring(1,e.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g")),a=[],s="^"===r[0],l=["["];s&&l.push("^");for(var i=s?1:0,o=r.length;i122||(c<65||d>90||a.push([32|Math.max(65,d),32|Math.min(c,90)]),c<97||d>122||a.push([-33&Math.max(97,d),-33&Math.min(c,122)]))}}a.sort(function(e,n){return e[0]-n[0]||n[1]-e[1]});for(var p=[],f=[],i=0;ig[0]&&(g[1]+1>g[0]&&l.push("-"),l.push(t(g[1])))}return l.push("]"),l.join("")}for(var a=0,s=!1,l=!1,i=0,o=e.length;i=2&&"["===p?n[o]=r(d):"\\"!==p&&(n[o]=d.replace(/[a-zA-Z]/g,function(e){var n=e.charCodeAt(0);return"["+String.fromCharCode(-33&n,32|n)+"]"}))}return n.join("")}(d)+")")}return new RegExp(c.join("|"),l?"gi":"g")}function n(e,n){function t(e){var o=e.nodeType;if(1==o){if(r.test(e.className))return;for(var u=e.firstChild;u;u=u.nextSibling)t(u);var c=e.nodeName.toLowerCase();"br"!==c&&"li"!==c||(a[i]="\n",l[i<<1]=s++,l[i++<<1|1]=e)}else if(3==o||4==o){var d=e.nodeValue;d.length&&(d=n?d.replace(/\r\n?/g,"\n"):d.replace(/[ \t\r\n]+/g," "),a[i]=d,l[i<<1]=s,s+=d.length,l[i++<<1|1]=e)}}var r=/(?:^|\s)nocode(?:\s|$)/,a=[],s=0,l=[],i=0;return t(e),{sourceCode:a.join("").replace(/\n$/,""),spans:l}}function t(e,n,t,r,a){if(t){var s={sourceNode:e,pre:1,langExtension:null,numberLines:null,sourceCode:t,spans:null,basePos:n,decorations:null};r(s),a.push.apply(a,s.decorations)}}function r(e){for(var n=void 0,t=e.firstChild;t;t=t.nextSibling){var r=t.nodeType;n=1===r?n?e:t:3===r&&O.test(t.nodeValue)?e:n}return n===e?void 0:n}function a(n,r){var a,s={};!function(){for(var t=n.concat(r),l=[],i={},o=0,u=t.length;o=0;)s[d.charAt(p)]=c;var f=c[1],g=""+f;i.hasOwnProperty(g)||(l.push(f),i[g]=null)}l.push(/[\0-\uffff]/),a=e(l)}();var l=r.length,i=function(e){for(var n=e.sourceCode,o=e.basePos,c=e.sourceNode,d=[o,R],p=0,f=n.match(a)||[],g={},h=0,m=f.length;h=5&&"lang-"===b.substring(0,5))||x&&"string"==typeof x[1]||(v=!1,b=k),v||(g[y]=b)}var C=p;if(p+=y.length,v){var N=x[1],_=y.indexOf(N),P=_+N.length;x[2]&&(_=(P=y.length-x[2].length)-N.length);var E=b.substring(5);t(c,o+C,y.substring(0,_),i,d),t(c,o+C+_,N,u(E,N),d),t(c,o+C+P,y.substring(P),i,d)}else d.push(o+C,b)}e.decorations=d};return i}function s(e){var n=[],t=[];e.tripleQuotedStrings?n.push([_,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""]):e.multiLineStrings?n.push([_,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):n.push([_,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]),e.verbatimStrings&&t.push([_,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var r=e.hashComments;r&&(e.cStyleComments?(r>1?n.push([E,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):n.push([E,/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]),t.push([_,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])):n.push([E,/^#[^\r\n]*/,null,"#"])),e.cStyleComments&&(t.push([E,/^\/\/[^\r\n]*/,null]),t.push([E,/^\/\*[\s\S]*?(?:\*\/|$)/,null]));var s=e.regexLiterals;if(s){var l=s>1?"":"\n\r",i=l?".":"[\\S\\s]",o="/(?=[^/*"+l+"])(?:[^/\\x5B\\x5C"+l+"]|\\x5C"+i+"|\\x5B(?:[^\\x5C\\x5D"+l+"]|\\x5C"+i+")*(?:\\x5D|$))+/";t.push(["lang-regex",RegExp("^"+$+"("+o+")")])}var u=e.types;u&&t.push([L,u]);var c=(""+e.keywords).replace(/^ | $/g,"");c.length&&t.push([P,new RegExp("^(?:"+c.replace(/[\s,]+/g,"|")+")\\b"),null]),n.push([R,/^\s+/,null," \r\n\t "]);var d="^.[^\\s\\w.$@'\"`/\\\\]*";return e.regexLiterals&&(d+="(?!s*/)"),t.push([A,/^@[a-z_$][a-z_$@0-9]*/i,null],[L,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[R,/^[a-z_$][a-z_$@0-9]*/i,null],[A,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[R,/^\\[\s\S]?/,null],[T,new RegExp(d),null]),a(n,t)}function l(e,n,t){function r(e){var n=e.nodeType;if(1!=n||s.test(e.className)){if((3==n||4==n)&&t){var o=e.nodeValue,u=o.match(l);if(u){var c=o.substring(0,u.index);e.nodeValue=c;var d=o.substring(u.index+u[0].length);d&&e.parentNode.insertBefore(i.createTextNode(d),e.nextSibling),a(e),c||e.parentNode.removeChild(e)}}}else if("br"===e.nodeName)a(e),e.parentNode&&e.parentNode.removeChild(e);else for(var p=e.firstChild;p;p=p.nextSibling)r(p)}function a(e){function n(e,t){var r=t?e.cloneNode(!1):e,a=e.parentNode;if(a){var s=n(a,1),l=e.nextSibling;s.appendChild(r);for(var i=l;i;i=l)l=i.nextSibling,s.appendChild(i)}return r}for(;!e.nextSibling;)if(!(e=e.parentNode))return;for(var t,r=n(e.nextSibling,0);(t=r.parentNode)&&1===t.nodeType;)r=t;u.push(r)}for(var s=/(?:^|\s)nocode(?:\s|$)/,l=/\r\n?|\n/,i=e.ownerDocument,o=i.createElement("li");e.firstChild;)o.appendChild(e.firstChild);for(var u=[o],c=0;c=x&&(o+=2),s>=w&&(d+=2)}}finally{v&&(v.style.display=y)}}function o(e,n){for(var t=n.length;--t>=0;){var r=n[t];I.hasOwnProperty(r)?f.console&&console.warn("cannot override language handler %s",r):I[r]=e}}function u(e,n){return e&&I.hasOwnProperty(e)||(e=/^\s*"+e+"",s=s.firstChild,r&&l(s,r,!0),c({langExtension:a,numberLines:r,sourceNode:s,pre:1,sourceCode:null,basePos:null,spans:null,decorations:null}),s.innerHTML}function p(e,n){function t(e){return s.getElementsByTagName(e)}function a(){for(var n=f.PR_SHOULD_USE_CONTINUATION?h.now()+250:1/0;m|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*",O=/\S/,I={};o(s({keywords:[m,y,v,b,x,w,S,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),["default-code"]),o(a([],[[R,/^[^]*(?:>|$)/],[E,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[T,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]),o(a([[R,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[T,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]),o(a([],[["atv",/^[\s\S]+/]]),["uq.val"]),o(s({keywords:m,hashComments:!0,cStyleComments:!0,types:N}),["c","cc","cpp","cxx","cyc","m"]),o(s({keywords:"null,true,false"}),["json"]),o(s({keywords:y,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:N}),["cs"]),o(s({keywords:v,cStyleComments:!0}),["java"]),o(s({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]),o(s({keywords:w,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]),o(s({keywords:x,hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]),o(s({keywords:S,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]),o(s({keywords:b,cStyleComments:!0,regexLiterals:!0}),["javascript","js","ts","typescript"]),o(s({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]),o(a([],[[_,/^[\s\S]+/]]),["regex"]);var D=f.PR={createSimpleLexer:a,registerLangHandler:o,sourceDecorator:s,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:E,PR_DECLARATION:"dec",PR_KEYWORD:P,PR_LITERAL:A,PR_NOCODE:"nocode",PR_PLAIN:R,PR_PUNCTUATION:T,PR_SOURCE:k,PR_STRING:_,PR_TAG:"tag",PR_TYPE:L,prettyPrintOne:IN_GLOBAL_SCOPE?f.prettyPrintOne=d:prettyPrintOne=d,prettyPrint:prettyPrint=IN_GLOBAL_SCOPE?f.prettyPrint=p:prettyPrint=p},z=f.define;"function"==typeof z&&z.amd&&z("google-code-prettify",[],function(){return D})}(); -------------------------------------------------------------------------------- /source/lib/prettify/tomorrow-night-eighties.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#2d2d2d!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#ccc}ol.linenums{margin-top:0;margin-bottom:0;color:#999}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#2d2d2d;list-style-type:decimal}@media screen{.str{color:#9c9}.kwd{color:#c9c}.com{color:#999}.typ{color:#69c}.lit{color:#f99157}.pun{color:#ccc}.opn{color:#ccc}.clo{color:#ccc}.tag{color:#f2777a}.atn{color:#f99157}.atv{color:#6cc}.dec{color:#f99157}.var{color:#f2777a}.fun{color:#69c}} -------------------------------------------------------------------------------- /source/lib/prettify/tomorrow-night.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#1d1f21!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#c5c8c6}ol.linenums{margin-top:0;margin-bottom:0;color:#969896}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#1d1f21;list-style-type:decimal}@media screen{.str{color:#b5bd68}.kwd{color:#b294bb}.com{color:#969896}.typ{color:#81a2be}.lit{color:#de935f}.pun{color:#c5c8c6}.opn{color:#c5c8c6}.clo{color:#c5c8c6}.tag{color:#c66}.atn{color:#de935f}.atv{color:#8abeb7}.dec{color:#de935f}.var{color:#c66}.fun{color:#81a2be}} -------------------------------------------------------------------------------- /source/lib/prettify/tomorrow.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f6f8fa!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#4d4d4c}ol.linenums{margin-top:0;margin-bottom:0;color:#8e908c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f6f8fa;list-style-type:decimal}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.pun{color:#4d4d4c}.opn{color:#4d4d4c}.clo{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}} -------------------------------------------------------------------------------- /source/lib/prettify/tranquil-heart.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#2f3640!important;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#e6e9ed}ol.linenums{margin-top:0;margin-bottom:0;color:#656d78}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#2f3640;list-style-type:decimal}@media screen{.str{color:#ffce54}.kwd{color:#4fc1e9}.com{color:#656d78}.typ{color:#4fc1e9}.lit{color:#ac92ec}.pun{color:#e6e9ed}.opn{color:#e6e9ed}.clo{color:#e6e9ed}.tag{color:#ed5565}.atn{color:#a0d468}.atv{color:#ffce54}.dec{color:#ac92ec}.var{color:#e6e9ed}.fun{color:#e6e9ed}} -------------------------------------------------------------------------------- /source/lib/smooth-scroll/SmoothScroll.min.js: -------------------------------------------------------------------------------- 1 | // https://cdnjs.cloudflare.com/ajax/libs/smoothscroll/1.4.10/SmoothScroll.min.js 2 | !function(){var s,i,c,a,o={frameRate:150,animationTime:400,stepSize:100,pulseAlgorithm:!0,pulseScale:4,pulseNormalize:1,accelerationDelta:50,accelerationMax:3,keyboardSupport:!0,arrowScroll:50,fixedBackground:!0,excluded:""},p=o,u=!1,d=!1,n={x:0,y:0},f=!1,m=document.documentElement,l=[],h=/^Mac/.test(navigator.platform),w={left:37,up:38,right:39,down:40,spacebar:32,pageup:33,pagedown:34,end:35,home:36},v={37:1,38:1,39:1,40:1};function y(){if(!f&&document.body){f=!0;var e=document.body,t=document.documentElement,o=window.innerHeight,n=e.scrollHeight;if(m=0<=document.compatMode.indexOf("CSS")?t:e,s=e,p.keyboardSupport&&Y("keydown",x),top!=self)d=!0;else if(Q&&o=p.animationTime,c=i?1:l/p.animationTime;p.pulseAlgorithm&&(c=F(c));var s=a.x*c-a.lastX>>0,u=a.y*c-a.lastY>>0;o+=s,n+=u,a.lastX+=s,a.lastY+=u,i&&(b.splice(r,1),r--)}h?window.scrollBy(o,n):(o&&(d.scrollLeft+=o),n&&(d.scrollTop+=n)),f||m||(b=[]),b.length?j(w,d,1e3/p.frameRate+1):(g=!1,null!=d.$scrollBehavior&&(d.style.scrollBehavior=d.$scrollBehavior,d.$scrollBehavior=null))};j(w,d,0),g=!0}}function e(e){f||y();var t=e.target;if(e.defaultPrevented||e.ctrlKey)return!0;if(N(s,"embed")||N(t,"embed")&&/\.pdf/i.test(t.src)||N(s,"object")||t.shadowRoot)return!0;var o=-e.wheelDeltaX||e.deltaX||0,n=-e.wheelDeltaY||e.deltaY||0;h&&(e.wheelDeltaX&&K(e.wheelDeltaX,120)&&(o=e.wheelDeltaX/Math.abs(e.wheelDeltaX)*-120),e.wheelDeltaY&&K(e.wheelDeltaY,120)&&(n=e.wheelDeltaY/Math.abs(e.wheelDeltaY)*-120)),o||n||(n=-e.wheelDelta||0),1===e.deltaMode&&(o*=40,n*=40);var r=z(t);return r?!!function(e){if(!e)return;l.length||(l=[e,e,e]);e=Math.abs(e),l.push(e),l.shift(),clearTimeout(a),a=setTimeout(function(){try{localStorage.SS_deltaBuffer=l.join(",")}catch(e){}},1e3);var t=120e.fixedSidebarOffset?-1===n.className.indexOf(e.positionFixedClass)&&(n.className+=p+e.positionFixedClass):n.className=n.className.split(p+e.positionFixedClass).join("")}function i(t){var n=0;return t!=document.querySelector(e.contentSelector&&null!=t)&&(n=t.offsetTop,e.hasInnerContainers&&(n+=i(t.offsetParent))),n}function s(t){if(e.scrollContainer&&document.querySelector(e.scrollContainer))var n=document.querySelector(e.scrollContainer).scrollTop;else var n=document.documentElement.scrollTop||m.scrollTop;e.positionFixedSelector&&r();var o,l=t;if(h&&null!==document.querySelector(e.tocSelector)&&l.length>0){f.call(l,function(t,r){if(i(t)>n+e.headingsOffset+10){return o=l[0===r?r:r-1],!0}if(r===l.length-1)return o=l[l.length-1],!0});var s=document.querySelector(e.tocSelector).querySelectorAll("."+e.linkClass);d.call(s,function(t){t.className=t.className.split(p+e.activeLinkClass).join("")});var a=document.querySelector(e.tocSelector).querySelectorAll("."+e.listItemClass);d.call(a,function(t){t.className=t.className.split(p+e.activeListItemClass).join("")});var u=document.querySelector(e.tocSelector).querySelector("."+e.linkClass+".node-name--"+o.nodeName+'[href="#'+o.id+'"]');-1===u.className.indexOf(e.activeLinkClass)&&(u.className+=p+e.activeLinkClass);var C=u.parentNode;C&&-1===C.className.indexOf(e.activeListItemClass)&&(C.className+=p+e.activeListItemClass);var v=document.querySelector(e.tocSelector).querySelectorAll("."+e.listClass+"."+e.collapsibleClass);d.call(v,function(t){-1===t.className.indexOf(e.isCollapsedClass)&&(t.className+=p+e.isCollapsedClass)}),u.nextSibling&&-1!==u.nextSibling.className.indexOf(e.isCollapsedClass)&&(u.nextSibling.className=u.nextSibling.className.split(p+e.isCollapsedClass).join("")),c(u.parentNode.parentNode)}}function c(t){return-1!==t.className.indexOf(e.collapsibleClass)&&-1!==t.className.indexOf(e.isCollapsedClass)?(t.className=t.className.split(p+e.isCollapsedClass).join(""),c(t.parentNode.parentNode)):t}function a(t){var n=t.target||t.srcElement;"string"==typeof n.className&&-1!==n.className.indexOf(e.linkClass)&&(h=!1)}function u(){h=!0}var d=[].forEach,f=[].some,m=document.body,h=!0,p=" ";return{enableTocAnimation:u,disableTocAnimation:a,render:n,updateToc:s}}},function(e,t){e.exports=function(e){function t(e){return e[e.length-1]}function n(e){return+e.nodeName.split("H").join("")}function o(t){var o={id:t.id,children:[],nodeName:t.nodeName,headingLevel:n(t),textContent:t.textContent.trim()};return e.includeHtml&&(o.childNodes=t.childNodes),o}function l(l,r){for(var i=o(l),s=n(l),c=r,a=t(c),u=a?a.headingLevel:0,d=s-u;d>0;)a=t(c),a&&void 0!==a.children&&(c=a.children),d--;return s>=e.collapseDepth&&(i.isCollapsed=!0),c.push(i),c}function r(t,n){var o=n;e.ignoreSelector&&(o=n.split(",").map(function(t){return t.trim()+":not("+e.ignoreSelector+")"}));try{return document.querySelector(t).querySelectorAll(o)}catch(e){return console.warn("Element not found: "+t),null}}function i(e){return s.call(e,function(e,t){return l(o(t),e.nest),e},{nest:[]})}var s=[].reduce;return{nestHeadingsArray:i,selectHeadings:r}}},function(e,t){function n(e){function t(e){return"a"===e.tagName.toLowerCase()&&(e.hash.length>0||"#"===e.href.charAt(e.href.length-1))&&(n(e.href)===s||n(e.href)+"#"===s)}function n(e){return e.slice(0,e.lastIndexOf("#"))}function l(e){var t=document.getElementById(e.substring(1));t&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())}!function(){document.documentElement.style}();var r=e.duration,i=e.offset,s=location.hash?n(location.href):location.href;!function(){function n(n){!t(n.target)||n.target.className.indexOf("no-smooth-scroll")>-1||"#"===n.target.href.charAt(n.target.href.length-2)&&"!"===n.target.href.charAt(n.target.href.length-1)||-1===n.target.className.indexOf(e.linkClass)||o(n.target.hash,{duration:r,offset:i,callback:function(){l(n.target.hash)}})}document.body.addEventListener("click",n,!1)}()}function o(e,t){function n(e){i=e-r,window.scrollTo(0,c.easing(i,s,u,d)),i 5 | * Version: v2.0.9 6 | * Url: https://github.com/mattboldt/typed.js 7 | * License(s): MIT 8 | * 9 | */ 10 | (function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typed=e():t.Typed=e()})(this,function(){return function(t){function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var s=0;st.length)););var u=t.substring(0,e),l=t.substring(u.length+1,e+i),c=t.substring(e+i+1);t=u+l+c,i--}s.timeout=setTimeout(function(){s.toggleBlinking(!1),e===t.length?s.doneTyping(t,e):s.keepTyping(t,e,i),s.temporaryPause&&(s.temporaryPause=!1,s.options.onTypingResumed(s.arrayPos,s))},n)},n))}},{key:"keepTyping",value:function(t,e,s){0===e&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),e+=s;var n=t.substr(0,e);this.replaceText(n),this.typewrite(t,e)}},{key:"doneTyping",value:function(t,e){var s=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),this.loop===!1||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){s.backspace(t,e)},this.backDelay))}},{key:"backspace",value:function(t,e){var s=this;if(this.pause.status===!0)return void this.setPauseStatus(t,e,!0);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var n=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){e=o.htmlParser.backSpaceHtmlChars(t,e,s);var n=t.substr(0,e);if(s.replaceText(n),s.smartBackspace){var i=s.strings[s.arrayPos+1];i&&n===i.substr(0,e)?s.stopNum=e:s.stopNum=0}e>s.stopNum?(e--,s.backspace(t,e)):e<=s.stopNum&&(s.arrayPos++,s.arrayPos===s.strings.length?(s.arrayPos=0,s.options.onLastStringBackspaced(),s.shuffleStringsIfNeeded(),s.begin()):s.typewrite(s.strings[s.sequence[s.arrayPos]],e))},n)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(t,e,s){this.pause.typewrite=s,this.pause.curString=t,this.pause.curStrPos=e}},{key:"toggleBlinking",value:function(t){this.cursor&&(this.pause.status||this.cursorBlinking!==t&&(this.cursorBlinking=t,t?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(t){return Math.round(Math.random()*t/2)+t}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var t=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout(function(){t.arrayPos++,t.replaceText(""),t.strings.length>t.arrayPos?t.typewrite(t.strings[t.sequence[t.arrayPos]],0):(t.typewrite(t.strings[0],0),t.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(t){this.attr?this.el.setAttribute(this.attr,t):this.isInput?this.el.value=t:"html"===this.contentType?this.el.innerHTML=t:this.el.textContent=t}},{key:"bindFocusEvents",value:function(){var t=this;this.isInput&&(this.el.addEventListener("focus",function(e){t.stop()}),this.el.addEventListener("blur",function(e){t.el.value&&0!==t.el.value.length||t.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,s){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e":";";t.substr(e+1).charAt(0)!==i&&(e++,!(e+1>t.length)););e++}return e}},{key:"backSpaceHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if(">"===n||";"===n){var i="";for(i=">"===n?"<":"&";t.substr(e-1).charAt(0)!==i&&(e--,!(e<0)););e--}return e}}]),t}();e["default"]=i;var r=new i;e.htmlParser=r}])}); --------------------------------------------------------------------------------