├── .github
├── ISSUE_TEMPLATE.md
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── _config.yml
├── _travis.sh
├── gulpfile.js
├── languages
├── default.yml
├── ja.yml
├── zh-CN.yml
└── zh-TW.yml
├── layout
├── _partial
│ ├── _head-sections
│ │ ├── IE.ejs
│ │ ├── seo.ejs
│ │ ├── style.ejs
│ │ └── title.ejs
│ ├── archive.ejs
│ ├── article-meta.ejs
│ ├── article.ejs
│ ├── busuanzi.ejs
│ ├── copyright.ejs
│ ├── footer.ejs
│ ├── gallery.ejs
│ ├── head.ejs
│ ├── header.ejs
│ ├── nav.ejs
│ ├── pagination.ejs
│ ├── reward.ejs
│ ├── script.ejs
│ ├── sidebar.ejs
│ └── toc.ejs
├── _vendor
│ ├── analytics
│ │ ├── baidu.ejs
│ │ ├── cnzz.ejs
│ │ ├── google.ejs
│ │ ├── index.ejs
│ │ └── tencent.ejs
│ ├── baidu_sitemap.ejs
│ └── comments
│ │ ├── changyan.ejs
│ │ ├── disqus.ejs
│ │ ├── gitalk.ejs
│ │ ├── gitment.ejs
│ │ ├── index.ejs
│ │ ├── livere.ejs
│ │ ├── utterances.ejs
│ │ ├── uyan.ejs
│ │ └── valine.ejs
├── _widget
│ ├── archive.ejs
│ ├── category.ejs
│ ├── friends.ejs
│ ├── notification.ejs
│ ├── search.ejs
│ ├── social.ejs
│ ├── stick.ejs
│ └── tagcloud.ejs
├── archive.ejs
├── category.ejs
├── index.ejs
├── layout.ejs
├── page.ejs
├── post.ejs
└── tag.ejs
├── package-lock.json
├── package.json
├── scripts
├── helper.js
└── process.js
└── source
├── assets
├── highlight.pack.js
├── tagcanvas.min.js
└── valine.min.js
├── css
├── bootstrap.min.css
├── font-awesome.min.css
├── less
│ ├── _highlight.less
│ ├── _mixins.less
│ ├── _reward.less
│ ├── _scrollbar.less
│ ├── _style.less
│ ├── _timeline.less
│ └── _variable.less
└── style.css
├── favicon.ico
├── fonts
├── FontAwesome.otf
├── fontawesome-webfont.eot
├── fontawesome-webfont.svg
├── fontawesome-webfont.ttf
├── fontawesome-webfont.woff
└── fontawesome-webfont.woff2
├── img
├── avatar.jpg
├── branding.png
├── head-img.jpg
├── loading.gif
├── reward-wepay.jpg
├── timeline-clock.gif
├── timeline-dot.gif
└── timeline.gif
└── js
├── app.js
└── search.js
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
5 |
6 | ### 该问题是怎么引起的?
7 |
8 | ### 重现步骤
9 |
10 | ### 报错信息
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | ---
5 |
6 | > 请先确认以下情况:
7 |
8 | - [ ] 拉取主题最新代码,问题依然存在。
9 | - [ ] 已经搜索 Issues 历史记录,并阅读过:[主题常见问题](https://github.com/shenliyang/hexo-theme-snippet#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)
10 | - [ ] 提 Issues 前建议先阅读:[《你不知道的提 Issues 技巧》](https://github.com/shenliyang/hexo-theme-snippet#你不知道的提Issues技巧)
11 |
12 | > 为了能精准定位问题,希望尽量提供一下信息
13 |
14 | 1. 相关问题截图
15 | 2. 有线上环境,建议提供一下网址
16 | 3. 如果是兼容 bug,建议提供下设备型号,浏览器名称及版本
17 |
18 | ------- **如果是意见或建议,可以忽略以内容** ------------
19 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | ---
5 |
6 | **Is your feature request related to a problem? Please describe.**
7 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
8 |
9 | **Describe the solution you'd like**
10 | A clear and concise description of what you want to happen.
11 |
12 | **Describe alternatives you've considered**
13 | A clear and concise description of any alternative solutions or features you've considered.
14 |
15 | **Additional context**
16 | Add any other context or screenshots about the feature request here.
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | Thumbs.db
3 | ehthumbs.db
4 | *.log
5 | node_modules/
6 | public/
7 | .deploy*/
8 | .idea/
9 | .vscode/
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "11.12.0"
4 |
5 | sudo: false
6 |
7 | #cache
8 | cache:
9 | directories:
10 | - "node_modules"
11 |
12 | notifications:
13 | # 钉钉机器人消息推送部署结果
14 | webhooks:
15 | urls:
16 | - https://oapi.dingtalk.com/robot/send?access_token=${DINGDING_ACCESS_TOKEN}
17 | on_success: change
18 | on_failure: always
19 |
20 | # 邮件发送部署结果通知
21 | email:
22 | recipients:
23 | - snippet@91h5.cc
24 | on_success: change
25 | on_failure: always
26 |
27 | # S: Build Lifecycle
28 | before_install:
29 | - sudo apt-get install libnotify-bin
30 |
31 | install:
32 | - npm install
33 | # - gem install travis
34 | # - travis login --pro --github-token ${GH_TOKEN}
35 |
36 | before_script:
37 | - export TZ='Asia/Shanghai'
38 | - npm install -g gulp
39 | - chmod +x _travis.sh
40 |
41 | script:
42 | - hexo clean && hexo g
43 | - gulp
44 |
45 | after_success:
46 |
47 | # - LAST_BUILD_NUMBER=68
48 | # - for i in $(seq 1 $LAST_BUILD_NUMBER ); do travis logs $i --delete --force ; done
49 | after_script:
50 | - ./_travis.sh
51 |
52 | # E: Build LifeCycle
53 | branches:
54 | only:
55 | - dev
56 |
57 | # - global env
58 | env:
59 | global:
60 | - GH_REF: github.com/shenliyang/shenliyang.github.io.git
61 | - GITEE_REF: gitee.com/shenliyang/shenliyang.git
62 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Snippet
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.md:
--------------------------------------------------------------------------------
1 | # hexo-theme-snippet
2 |
3 | Snippet 简洁而不简单,也许是一款你寻找已久 hexo 主题。
4 |
5 | 如果本主题也是你喜欢的菜,请动动手指 [Star](https://github.com/shenliyang/hexo-theme-snippet/stargazers) 支持一下
6 |
7 | [](https://travis-ci.com/shenliyang/hexo-theme-snippet)
8 | [](https://github.com/shenliyang/hexo-theme-snippet/blob/master/README.md)
9 | [](../../commits/master)
10 | [](https://codebeat.co/projects/github-com-shenliyang-hexo-theme-snippet-master)
11 | [](https://github.com/shenliyang/hexo-theme-snippet/stargazers)
12 | [](https://github.com/shenliyang/hexo-theme-snippet/network)
13 | [](http://hexo.io)
14 | [](https://github.com/shenliyang/hexo-theme-snippet/blob/master/LICENSE)
15 |
16 | [主题 Demo 戳这里](http://shenliyang.github.io?rf=gh-demo)
17 |
18 | 
19 |
20 | ## 主题特点
21 |
22 | - [x] 原生 JavaScript 实现,去 jQuery 化
23 | - [x] 样式支持 CSS 预处理器 Less,方便主题自定义
24 | - [x] 文章过期提醒功能
25 | - [x] 文章阅读进度条
26 | - [x] 网站公告功能
27 | - [x] 首页图片懒加载
28 | - [x] 首页文章缩略图自动检索文章内图片,支持自动随机图片
29 | - [x] 主题支持响应式
30 | - [x] 支持 3D 云标签
31 | - [x] 支持文章推送和文章打赏
32 | - [x] 站内本地搜索和谷歌搜索
33 | - [x] 支持多个第三方评论系统
34 | - [x] 支持网站统计和不蒜子访客统计
35 | - [x] 移动端的简洁设计
36 | - [x] 支持代码高亮并支持自定义高亮样式
37 | - [x] 支持 Shell 脚本通过 Travis CI 自动化部署 Hexo 博客
38 | - [x] 支持 Hexo 自动化部署结果发送邮件和实时推送到钉钉
39 |
40 | # **基础篇**
41 |
42 | > 如果你在此之前使用的是 `Hexo 2.x` 版本,为了避免未知的错误,请备份好数据,或者建立新的博客目录
43 |
44 | > "主题目录" => `themes\hexo-theme-snippet`, "Hexo 根目录" => 项目主目录;
45 | > "主题配置" => `themes\hexo-theme-snippet\_config.yml`, "Hexo 配置" => 项目主目录下`_config.yml`
46 |
47 | ### 1. 环境搭建
48 |
49 | 需要`Node.js` 环境、`Git` 环境以及 `Hexo` ,如果你尚未安装或者不了解 `Hexo`,请参考 [官方教程](https://hexo.io/zh-cn/docs/index.html) 进行了解以及安装。如果需要构建工具请自行安装,或使用本主题的 Gulp 方式。
50 |
51 | ### 2. 下载主题
52 |
53 | 有两种方式获取本主题--下载 `*.zip` 文件和通过 `git`方式:
54 |
55 | 1. 下载 [Snippet 主题](https://github.com/shenliyang/hexo-theme-snippet) 文件解压后放在 `themes` 目录下,和博客中的 landscape 为同级目录
56 |
57 | 2. Git 方式,在 Hexo 根目录执行:
58 |
59 | ```bash
60 | git clone git://github.com/shenliyang/hexo-theme-snippet.git themes/hexo-theme-snippet
61 | ```
62 |
63 | ### 3. 安装主题插件
64 |
65 | 因为 **hexo-theme-snippet** 使用了 `ejs` 模版引擎 、 `Less` CSS 预编译语言以及在官方插件的基础上
66 | 进行功能的开发,以下为必装插件:
67 |
68 | ```bash
69 | npm i hexo-renderer-ejs hexo-renderer-less hexo-deployer-git -S
70 | ```
71 |
72 | ### 4. 部署主题
73 |
74 | > 如果没有更改过主题源文件,也不需要代码优化可以跳过 1,2,3 步骤
75 |
76 | 1. gulp 打包构建,拷贝主题目录下`package.json`文件到 Hexo 根目录下,然后安装项目的开发依赖。 [Gulp 入门指南](http://www.gulpjs.com.cn/docs/getting-started/)
77 |
78 | ```bash
79 | npm i //安装项目依赖
80 | ```
81 |
82 | 2. 在 Hexo 根目录下创建一个名为 gulpfile.js 的文件:
83 |
84 | ```bash
85 | require('./themes/hexo-theme-snippet/gulpfile');
86 | ```
87 |
88 | 3. 运行 gulp:
89 |
90 | ```bash
91 | gulp 或者 gulp default //执行打包任务
92 | ```
93 |
94 | 4. 清空 hexo 静态文件和缓存,并重新生成
95 |
96 | ```bash
97 | hexo clean && hexo g //清空缓存并生成静态文件
98 | ```
99 |
100 | 5. 本地预览,确没有问题再进行发布
101 |
102 | ```bash
103 | hexo s -p 4000 或者 hexo s //启动本地服务默认
104 | ```
105 |
106 | 6. 当 gulp 执行完成,并提示 `please execute: hexo d` 时,可以进行发布
107 |
108 | ```bash
109 | hexo d 或者 gulp deploy //部署发布
110 | ```
111 |
112 | ### 5. 更新主题
113 |
114 | 主题可能会不定时优化和更新,更新主题代码:
115 |
116 | ```bash
117 | cd themes/hexo-theme-snippet
118 | git pull
119 | ```
120 |
121 | # **主题篇**
122 |
123 | ### 1. 主题配置
124 |
125 | ```yaml
126 |
127 | ## menu -- 导航菜单显示{[@page:名字,@url:地址,@icon:图标]}
128 | menu:
129 | - page: home
130 | url: /
131 | icon: fa-home
132 |
133 | ## favicon -- 网站图标位置{@favicon}
134 | favicon: /favicon.ico
135 |
136 | ## rss --rss文件位置{@rss}
137 | rss: /atom.xml
138 |
139 |
140 | # 各个小工具的设置
141 |
142 | ## widgets -- 6个左边小工具{@widgets:[notification,category,archive,tagcloud,friends]}
143 | widgets:
144 | - search
145 | - notification
146 | - social
147 | - category
148 | - archive
149 | - tagcloud
150 | - friends
151 |
152 | # 各个小工具的设置
153 |
154 | ## 搜索
155 | jsonContent:
156 | searchLocal: true // 是否启用本地搜索
157 | searchGoogle: true //是否启用谷歌搜索
158 | posts:
159 | title: true
160 | text: true
161 | content: true
162 | categories: false
163 | tags: false
164 |
165 | ## notification config --网站公告设置,支持 html 和 纯文本
166 | notification: |-
167 |
主题已经上线!欢迎下载或更新~
168 | 主题下载:Snippet主题
169 |
接受贡献,包括不限于提交问题与需求,修复代码。欢迎Pull Request
支持主题:Star一下
170 |
171 | ## 社交设置{@name:社交工具名字,@icon:社交工具图标,@href:设置工具链接} [参考图标](http://fontawesome.io/icons/)
172 | social:
173 | - name: Github
174 | icon: git
175 | href: //github.com/shenliyang
176 |
177 | ## 文章分类设置{@cate_config:{@show_count:是否显示数字,@show_current: 是否高亮当前category}}
178 | cate_config:
179 | show_count: true
180 | show_current: true
181 |
182 | ## 文章归档设置{@arch_config:/*参数参考:https://hexo.io/zh-cn/docs/helpers.html#list-archives*/}
183 | ## 推荐组合方式:[{type: 'monthly',format: 'YYYY年MM月'},{type: 'yearly',format: 'YYYY年'}]
184 | arch_config:
185 | type: 'monthly'
186 | format: 'YYYY年MM月'
187 | show_count: true
188 | order: -1
189 |
190 | ## 标签云设置{/*参数参考:http://www.goat1000.com/tagcanvas-options.php */}
191 | tagcloud:
192 | tag3d: false // 是否启用3D标签云
193 | textColour: '#444' // 字体颜色
194 | outlineMethod: 'block' // 选中模式(outline|classic|block|colour|size|none)
195 | outlineColour: '#FFDAB9' // 选中模式的颜色
196 | interval: 30 // 动画帧之间的时间间隔,值越大,转动幅度越大
197 | freezeActive: true // 选中的标签是否继续滚动
198 | frontSelect: true // 不选标签云后部的标签
199 | reverse: true // 是否反向触发
200 | wheelZoom: false // 是否启用鼠标滚轮
201 |
202 | ## 友链设置{@链接名称:链接地址{@links:[,,,]}}
203 | links:
204 | - Hexo官网: https://hexo.io/zh-cn/
205 |
206 |
207 | # 主题自定义个性化配置
208 |
209 | ## 网站宣传语{@branding:网站宣传语(不设置显示本地图片)}
210 | branding: 从未如此简单有趣
211 |
212 | ## 设置banner背景图片{@img:自定义图片地址(支持绝对和相对路径),主题默认{"静态背景":"banner.jpg"},{"动态背景":"banner2.jpg"},{"动态星空背景":"banner3.jpg"}}
213 | ## 例如:https://hexo-theme-snippet-1251680922.cos.ap-beijing.myqcloud.com/img/banner|2|3.jpg, 或者 './img/banner-img.jpg'(相对本地资源地址)
214 | banner:
215 | img: https://hexo-theme-snippet-1251680922.cos.ap-beijing.myqcloud.com/img/banner.jpg
216 |
217 |
218 | ## 设置carousel{@img:图片地址,@url:点击跳转链接(默认值:"javascript:")}
219 | carousel:
220 | img: 'img/head-img.jpg'
221 | url: 'javascript:'
222 |
223 | ## 首页列表底部面板{@homePanel: 是否开启}
224 | homePanel: true
225 |
226 | ## 首页文章列表缩略图
227 | ### 加载规则: 自定义文章缩略图(在Front-matter中添加的'img'字段) > 文章内的图片 > defaultImgs(随机获取) > 无图模式列表
228 |
229 | ## 自定义随机图片
230 | defaultImgs:
231 | - http://www.example.jpg //远程图片链接示例
232 | - /img/default-1.jpg //本地图片链接示例
233 |
234 | ### 文章摘要{@摘要显示优先级:自定义摘要 > 自动截取摘要 }
235 | ### 自定义摘要范围{@:截取more之前的内容为摘要}
236 | ### 自动截取摘要{@excerptLength:自动截取文章前多少个字为摘要,不配置默认:120字}
237 | excerptLength: 120
238 |
239 | ## 是否开启文章目录
240 | toc: true
241 |
242 | ## 代码高亮配置{@highlightTheme: 主题名称,(配置暂时不可用,后续开发中…)}
243 |
244 | highlightTheme: default //TODO
245 |
246 | ## 文章过期提醒功能 {@warning:{days:临界天数(默认300天,设置0关闭功能),text:提醒文字/*%d为过期总天数占位符*/}}
247 | warning:
248 | days: 300
249 | text: '本文于%d天之前发表,文中内容可能已经过时。'
250 |
251 | ## 文章内声明{@declaration: {enable:是否开启,title:声明标题,tip:提示内容}}
252 | declaration:
253 | enable: true
254 | title: '转载声明'
255 | tip: |-
256 | 商业转载请联系作者获得授权,非商业转载请注明出处 © Snippet
257 |
258 | ## 文章打赏{@reward: {alipay:支付宝打赏,wepay:微信打赏,tip:打赏提示语; 链接都为空,关闭打赏功能}}
259 | reward:
260 | alipay: ''
261 | wepay: '../img/reward-wepay.jpg'
262 | tip: 赞赏是不耍流氓的鼓励
263 |
264 |
265 | ## 主题评论
266 |
267 | ## utterances评论: 一款基于 GitHub issues 的评论工具; 首先在 github 上进行安装 utterances,访问 [utterances应用程序](https://github.com/apps/utterances);然后在主题内配置 [utterances更多配置](https://utteranc.es/)
268 | utterances:
269 | enable: true
270 | repo: shenliyang/snippet-comment // github仓库名字, 格式为 user-name/repo-name
271 | issueTerm: pathname // 标识issue类型 1. pathname(推荐); 2. url; 3.title; 3. og:title; 4. issue-number 5. specific-term;
272 | issueNumber: 123 // 非必填,当配置 issueTerm = "issue-number"时,需要配置issue号
273 | theme: github-light // 主题配置 1. github-light(推荐); 2. github-dark; 3. preferred-color-scheme; 4. github-dark-orange; 5. icy-dark; 6. dark-blue; 7. photon-dark; 8. boxy-light
274 | label: // 非必填
275 | cdn: // 使用自定义utteranc脚本加载。 非必填,默认:"https://utteranc.es/client.js"
276 |
277 | ### gitment
278 | gitment:
279 | enable: false
280 | owner:
281 | repo:
282 | client_id:
283 | client_secret:
284 | labels:
285 | perPage:
286 | maxCommentHeight:
287 |
288 | ### 来必力
289 | livere:
290 | enable: false
291 | livere_uid:
292 |
293 | ### 友言评论(服务不稳定,经常无法加载)
294 | uyan:
295 | enable: false
296 | uyan_id:
297 |
298 | ### Disqus评论(需要翻墙,或者搭建代理)
299 | disqus:
300 | enable: false
301 | shortname: snippet
302 | count: false
303 |
304 | ### 畅言评论(需要ICP备案)
305 | changyan:
306 | enable: false
307 | appid:
308 | conf:
309 |
310 | ### Valine评论(leancloud需要实名认证) 参考网站: [valine评论](https://valine.js.org/)
311 | valine:
312 | enable: false
313 | appId:
314 | appKey:
315 | placeholder: 说点什么吧
316 | notify: false // 邮件通知
317 | verify: false // 验证码
318 | avatar: mm // avatar头像
319 | meta: nick,mail // 输入框内容,可选值nick,mail,link
320 | pageSize: 10
321 |
322 | ## Gitalk评论 参考网站: [一个基于Github Issue和Preact开发的评论插件](https://gitalk.github.io/)
323 | gitalk:
324 | enable: false
325 | clientID: "" // Github 应用ID
326 | clientSecret: "" // Github 应用密钥
327 | repo: shenliyang.github.io // Github仓库地址
328 | owner: shenliyang // Github 用户名(Github仓库拥有者)
329 | admin: shenliyang // GitHub repository 的所有者和合作者 (对这个 repository 有写权限的用户)可以有一个或多个,如果有多名可使用,例如:admin: admin1,admin2 配置
330 | perPage: 10 // 每次加载的数据大小,最多100
331 | distractionFreeMode: true // 是否启用无干扰模式,类似Facebook评论框的全屏遮罩效果
332 |
333 | // 以下参数主题会默认处理,不需要配置
334 | language // 语言类型,默认为站点配置中选项
335 | id // 页面的唯一标识, 已使用md5对pathname转换生成唯一id处理
336 |
337 | ## 网站访客统计 [不蒜子统计](http://busuanzi.ibruce.info/)
338 | visit_counter:
339 | site: true // 总访问量和访问人数统计
340 | page: true // 文章阅读量统计
341 |
342 | ## 网站访问统计
343 |
344 | ### 网盟CNZZ统计 参考网站: [网盟CNZZ](http://www.umeng.com/)
345 | cnzz_anaylytics:
346 |
347 | ### 百度统计 参考网站: [百度统计](https://tongji.baidu.com/)
348 | baidu_anaylytics:
349 |
350 | ### 谷歌统计 参考网站:[谷歌统计](https://www.google-analytics.com/)
351 | google_anaylytics:
352 |
353 | ### 腾讯分析 参考网站:[腾讯分析](http://ta.qq.com/)
354 | tencent_analytics:
355 |
356 | ### 百度站点认证
357 | baidu-site-verification:
358 |
359 | ### 百度自动推送(@baidu_push: 是否启用百度自动推送) 参考网站: [百度站长资源](https://ziyuan.baidu.com/college/courseinfo?id=267&page=2#h2_article_title18)
360 | baidu_push:
361 |
362 | ## ICON配置 (不配则启用本地Font Icon)
363 | fontAwesome: //cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css
364 |
365 | ## 网站主题配置
366 | since: 2017 //建站时间
367 | beian: '京ICP备04000001号' //网站备案号
368 | robot: 'all' //控制搜索引擎的抓取和索引编制行为,默认为all
369 | version: 1.3.0 //当前主题版本号
370 | ```
371 |
372 | ### 主题使用技巧及功能扩展
373 |
374 | 1. 修改新增文章 Front-matter 模板,修改`scaffolds`目录下的`post.md`模板
375 | > 模板文件内部不要保留注释部分,关键词后面请使用英文冒号
376 |
377 | ```yml
378 | ---
379 | title: {{ title }} // 标题
380 | date: {{ date }} // 时间
381 | categories: ['分类1','分类2'] // 分类
382 | tags: ['标签1','标签2'] // 标签
383 | comments: false // 是否开启评论
384 | img: // 自定义缩略图
385 | ---
386 | ```
387 |
388 | 2. 启用站内本地搜索功能
389 |
390 | 如果要使用本地站点搜索,必须安装插件 hexo-generator-json-content 来创建本地搜索 json 文件
391 |
392 | ```bash
393 | npm i hexo-generator-json-content@2.2.0 -S
394 | ```
395 |
396 | 然后修改主题配置\_config.yml 文件下`jsonContent`相关参数。
397 |
398 | # **提升篇**
399 |
400 | ## 1. Travis CI 介绍
401 |
402 | CI 即持续集成系统。对个人而言,就是让你的代码在提交到远程(这里是 GitHub),立即自动编译,自动化测试、自动部署等。
403 |
404 | 不需要在担心更换电脑时,还要从新部署环境的问题,只要你能向远程推送文章,其他的事情就都可以交给 Travis CI 处理就 ok 了。
405 |
406 | ## 2. Travis CI 使用
407 |
408 | > 默认前提是已经通过 Github 进行授权登录 Travis 网站,并关联了 GitHub 上的仓库和相关配置。
409 |
410 | 1. 拷贝主题下的`gulpfile.js` `travis.yml` `travis.sh` 到项目根目录
411 |
412 | 2. 配置 travis.yml 文件
413 |
414 | ```yml
415 | language: node_js #使用Node语言环境
416 | node_js: stable #安装稳定版Node
417 |
418 | sudo: false
419 |
420 | #cache 启用缓存,加快构建速度
421 | cache:
422 | directories:
423 | - "node_modules"
424 |
425 | notifications: #启用通知
426 | email:
427 | recipients:
428 | - snippet@aliyun.com #接收构建消息的邮件 不需要可设置为false
429 | on_success: never #部署成功时,可设置alway never change
430 | on_failure: always #部署失败时,同上
431 |
432 | # S: Build Lifecycle
433 |
434 | before_install:
435 | - sudo apt-get install libnotify-bin #支持linux桌面提醒库
436 |
437 | install:
438 | - npm install #安装依赖
439 |
440 | before_script:
441 | - export TZ='Asia/Shanghai' #设置时区
442 | - npm install -g gulp #全局安装Gulp
443 | - chmod +x _travis.sh #授权脚本执行权限
444 |
445 | script:
446 | - hexo clean && hexo g #清除缓存并生成静态文件
447 | - gulp #执行gulp任务
448 |
449 | after_success: #执行成功时(以后扩展功能使用)
450 |
451 | after_script:
452 | - ./_travis.sh #执行部署脚本
453 | # E: Build LifeCycle
454 |
455 | branches:
456 | only:
457 | - dev #需要监听部署的分支
458 | env:
459 | global:
460 | - GH_REF: github.com/shenliyang/shenliyang.github.io.git #更改为自己git地址
461 | ```
462 |
463 | 3. 提交代码到 Github,实现自动部署
464 | 4. 当 `.travis.yml `配置文件修改完成后,将其提交到远程仓库的 hexo 分支下,此时如果之前的配置一切 ok,我们应该能在 Travis CI 的博客项目主页页面中看到自动构建已经在开始执行了。上面会显示出构建过程中的日志信息及状态等。
465 |
466 | ## 3. 主题开发
467 |
468 | Gulp 执行启用主题开发模式
469 |
470 | ```bash
471 | gulp dev
472 | ```
473 |
474 | 会监听样式 less 或者 JS 文件的变动。然后执行上面的【主题发布】即可。
475 |
476 | ### 运行预览
477 |
478 | ```bash
479 | hexo clean && hexo g && hexo s -p 4000
480 | ```
481 |
482 | 监听 4000 端口,使用浏览器打开地址`http://localhost:4000`进行预览。
483 |
484 | # **其他**
485 |
486 | ## 感谢
487 |
488 | 在设计这款主题的时候参考了好多主题和博客的设计和创意,深表感谢!
489 |
490 | ## 鼓励
491 |
492 | **如果觉得本主题还不错,您的支持和鼓励才是后续更新最大的动力,== 欢迎 [Star](https://github.com/shenliyang/hexo-theme-snippet/stargazers)下 ==**
493 |
494 | 
495 |
496 | ## 宗旨
497 |
498 | 主题宗旨:**致力主题简洁轻量,配置方便开箱即用**,该主题项目会持续维护和更新。
499 |
500 | ## 贡献
501 |
502 | 接受各种形式的贡献,包括但不限于提交问题或需求,修复代码。
503 | 欢迎大家提 Issue 或者 Pull Request。
504 |
505 | > Hexo 框架追求的是快速、简洁,高效。喜欢绚丽,添加各种功能,折腾的朋友,建议移步至:[wordpress 官网](https://cn.wordpress.org/)
506 |
507 | ## 你不知道的提 Issues 技巧
508 |
509 | > 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。
510 |
511 | \* 已阅读以上文章,并知晓,可以 [提 Issues](https://github.com/shenliyang/hexo-theme-snippet/issues/new) 了。
512 |
513 | ## 常见问题
514 |
515 | #### 1. 搜索功能不能用,content.json 文件找不到?
516 |
517 | 需要安装 hexo-generator-json-content 插件:
518 |
519 | ```bash
520 | npm i hexo-generator-json-content@2.2.0 -S
521 | ```
522 |
523 | #### 2. 谷歌搜索没有响应?
524 |
525 | 如果使用谷歌搜索没有响应,确定是否已经科学上网
526 |
527 | #### 3. 怎么设置首页文章缩略图自动检索文章内图片?
528 |
529 | 首页文章缩略图加载规则: 自定义文章缩略图 > 自动检索文章内的图片 > defaultImgs(随机获取) > 无图模式列表
530 |
531 | 在`Front-matter`中:
532 | 指定 img 变量 -> 为固定缩略图
533 | 不指定 img 变量 -> 自动检索文章内的图片
534 |
535 | #### 4. 在 url 哪里可以访问到本地静态文件吗?
536 |
537 | 在主题 `source` 目录下新建文件夹,例如: `static`文件夹,然后添加静态资源,例如: xxx.pdf 文件, 访问:_`http://yoursite.com/static/xxx.pdf`_
538 |
539 | #### 5. 这个主题有分页功能吗?
540 |
541 | 主题已经集成分页功能,在 Hexo 配置中修改
542 |
543 | | 参数 | 描述 | 默认值 |
544 | | -------------- | :---------------------------------: | :----: |
545 | | per_page | 每页显示的文章量 (0 = 关闭分页功能) | 10 |
546 | | pagination_dir | 分页目录 | page |
547 |
548 | #### 6. 为什么右侧小工具标题都为英文呢?
549 |
550 | 可能是您忘记预设网站语言,而启用默认语言了,请先在 Hexo 配置中调整 language 设定
551 |
552 | ```bash
553 | language: zh-CN
554 | ```
555 |
556 | #### 7. 关于 Hexo 标签和分类方法的分歧
557 |
558 | > 只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 `Foo, Bar` 不等于 `Bar, Foo`;而标签没有顺序和层次。
559 |
560 | 如果您有过使用 WordPress 的经验,就很容易误解 Hexo 的分类方式。WordPress 支持对一篇文章设置多个分类,而且这些分类可以是同级的,也可以是父子分类。但是 Hexo 不支持指定多个同级分类。下面的指定方法:
561 |
562 | ```bash
563 | categories:
564 | - Diary
565 | - Life
566 | ```
567 |
568 | 会使分类 Life 成为 Diary 的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。
569 |
570 | Hexo 官方文档: [分类方法的分歧](https://hexo.io/zh-cn/docs/front-matter#分类和标签)
571 |
572 | #### 8. tags 以及 categories 页面显示不正确,不能访问,显示 404?
573 |
574 | 当使用主题访问,域名+/tags 或 域名+ /categories 若访问 404,是正常情况的。因为这些路径本不属于主题或者 Hexo 框架的一部分。而是由用户主动新建页面扩展而来。
575 |
576 | 可以新建页面,比如:tags 和 categories,按以下命令格式:
577 |
578 | ```bash
579 | hexo new page tags 和 hexo new page categories
580 | ```
581 |
582 | 当使用主题访问,域名+/tags 或 域名+ /categories 若访问 404,是正常情况的。因为这些路径本不属于主题或者 Hexo 框架的一部分。而是由用户主动新建页面扩展而来。
583 |
584 | 可以新建页面,比如:tags 和 categories,按以下命令格式:
585 |
586 | ```bash
587 | hexo new page tags 和 hexo new page categories
588 | ```
589 |
590 | > 没有找到你需要的问题解决方案,建议阅读[《你不知道的提 Issues 技巧》](https://github.com/shenliyang/hexo-theme-snippet#你不知道的提Issues技巧) 再提 Issues。
591 |
592 | ## 版本更新日志
593 |
594 | - 增加 Gitalk 评论系统
595 | - 增加博客自动化部署结果实时推送到手机钉钉上,第一时间了解部署情况
596 |
597 | 自动化部署结果通知示例:
598 |
599 | 
600 |
601 | ## License
602 |
603 | [MIT License](/LICENSE)
604 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------
2 | # Site Information And Theme Configuration Settings
3 | # language: zh-CN
4 | # ---------------------------------------------------------------
5 |
6 | ## menu
7 | menu:
8 | - page: home
9 | url: /
10 | icon:
11 | - page: 前端
12 | url: /categories/前端/
13 | icon:
14 | - page: 后端
15 | url: /categories/后端/
16 | icon:
17 | - page: 工具
18 | url: /categories/工具/
19 | icon:
20 | - page: 时间轴
21 | url: /archives/
22 | icon:
23 |
24 | ## favicon
25 | favicon: /favicon.ico
26 |
27 | ## Feed
28 | rss: /atom.xml
29 |
30 | ## Carousel
31 | carousel:
32 | img: "./img/head-img.jpg"
33 | url: "https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=xs0pypd2"
34 |
35 | # 各个小工具的设置
36 |
37 | ## widgets
38 | widgets:
39 | - search
40 | - notification
41 | - social
42 | - category
43 | - archive
44 | - tagcloud
45 | - friends
46 |
47 | ## 搜索
48 | jsonContent:
49 | searchLocal: true
50 | searchGoogle: false
51 | posts:
52 | title: true
53 | text: true
54 | content: true
55 | categories: false
56 | tags: false
57 |
58 | ## 网站公告设置
59 | notification: |-
60 |
61 | 主题下载:Snippet主题
62 | 主题使用:常见使用问题
63 | 支持主题:Star一下
64 |
65 |
66 | ## 社交设置
67 | social:
68 | - name: Github
69 | icon: git
70 | href: //github.com/shenliyang
71 | - name: 邮箱
72 | icon: envelope-o
73 | href: mailto:snippet@aliyun.com
74 | - name: 联系QQ
75 | icon: qq
76 | href: /
77 | - name: 微信
78 | icon: weixin
79 | href: /
80 | - name: QQ群
81 | icon: users
82 | href: /
83 | - name: RSS
84 | icon: feed
85 | href: /atom.xml
86 |
87 | ## 文章分类设置
88 | cate_config:
89 | show_count: true
90 | show_current: true
91 |
92 | ## 文章归档设置
93 | arch_config:
94 | type: "monthly"
95 | format: "YYYY年MM月"
96 | show_count: true
97 | order: -1
98 |
99 | ## 标签云设置
100 | tagcloud:
101 | tag3d: false
102 | textColour: "#444"
103 | outlineMethod: "block"
104 | outlineColour: "#FFDAB9"
105 | interval: 30
106 | freezeActive: true
107 | frontSelect: true
108 | reverse: true
109 | wheelZoom: false
110 |
111 | ## 友链设置
112 | links:
113 | - Hexo官网: https://hexo.io/zh-cn/
114 |
115 | # 主题自定义个性化配置
116 |
117 | ## 网站宣传语
118 | branding:
119 |
120 | ## 设置banner背景图片
121 | banner:
122 | img: https://hexo-theme-snippet-1251680922.cos.ap-beijing.myqcloud.com/img/banner.jpg
123 |
124 | ## 首页列表底部面板
125 | homePanel: true
126 |
127 | ## 缩略图自定义随机图片
128 | defaultImgs:
129 | -
130 |
131 | ## 截取文章首页描述字数
132 | excerptLength: 120
133 |
134 | ## 是否开启文章目录
135 | toc: true
136 |
137 | ## 代码高亮配置
138 | highlightTheme:
139 |
140 | ## bootstrap配置
141 | bootstrap:
142 |
143 | ## ICON配置
144 | fontAwesome:
145 |
146 | ## 文章过期提醒功能
147 | warning:
148 | days: 300
149 | text: "本文于%d天之前发表,文中内容可能已经过时。"
150 |
151 | ## 文章内声明
152 | declaration:
153 | enable: true
154 | title: "转载声明"
155 | tip: |-
156 | 商业转载请联系作者获得授权,非商业转载请注明出处 © Snippet
157 |
158 | ## 文章打赏
159 | reward:
160 | alipay: ""
161 | wepay: ""
162 | tip: 赞赏是不耍流氓的鼓励
163 |
164 | ## 主题评论
165 |
166 | ## utterances评论
167 | utterances:
168 | enable: true
169 | repo: shenliyang/snippet-comment
170 | issueTerm: pathname
171 | issueNumber:
172 | theme: github-light
173 | label:
174 | cdn:
175 |
176 | ## Valine评论
177 | valine:
178 | enable: false
179 | appId: xOKV9J4UeQAtVkvnJC7Kq2Jn-gzGzoHsz
180 | appKey: erIpQac4azoCmgfBB7Dl9maa
181 | placeholder: 说点什么吧
182 | notify: false
183 | verify: true
184 | avatar: mm
185 | meta: nick,mail
186 | pageSize: 10
187 |
188 | ### 畅言评论(需要ICP备案)
189 | changyan:
190 | enable: false
191 | appid:
192 | conf:
193 |
194 | ### 来必力
195 | livere:
196 | enable: false
197 | livere_uid: MTAyMC8zMzA1MS85NjEz
198 |
199 | ## Gitalk评论
200 | gitalk:
201 | enable: false
202 | clientID:
203 | clientSecret:
204 | repo:
205 | owner:
206 | admin:
207 | perPage:
208 | distractionFreeMode: true
209 |
210 | ### Disqus评论
211 | disqus:
212 | enable: false
213 | shortname: snippet
214 | count: false
215 |
216 | ### gitment评论(长期不更新,不建议使用)
217 | gitment:
218 | enable: false
219 | owner:
220 | repo:
221 | client_id:
222 | client_secret:
223 | perPage: 10
224 |
225 | ### 友言评论(服务不稳定)
226 | uyan:
227 | enable: false
228 | uyan_id: 1966422
229 |
230 | ## 网站访客统计
231 | visit_counter:
232 | site: false
233 | page: false
234 |
235 | ## 网站访问统计分析
236 |
237 | ### 网盟CNZZ统计
238 | cnzz_analytics: 1263868967
239 |
240 | ### 百度统计
241 | baidu_analytics:
242 |
243 | ### 谷歌统计
244 | google_analytics:
245 |
246 | ### 腾讯分析
247 | tencent_analytics:
248 |
249 | ### 百度站点认证
250 | baidu_site_verification:
251 |
252 | ### 百度自动推送
253 | baidu_push: false
254 |
255 | #网站主题配置
256 | since: 2017
257 | beian:
258 | robot: "all" ### 控制搜索引擎的抓取和索引编制行为,默认为all
259 | version: 1.3.0
260 |
--------------------------------------------------------------------------------
/_travis.sh:
--------------------------------------------------------------------------------
1 | #--------------------------------------------
2 | #!/bin/bash
3 | # author:shenliyang
4 | # website:https://github.com/shenliyang
5 | # slogan:梦想还是要有的,万一实现了呢。
6 | #--------------------------------------------
7 |
8 | #定义时间
9 | time=`date +%Y-%m-%d\ %H:%M:%S`
10 |
11 | #执行成功
12 | function success(){
13 | echo "success"
14 | }
15 |
16 | #执行失败
17 | function failure(){
18 | echo "failure"
19 | }
20 |
21 | #默认执行
22 | function default(){
23 |
24 | git clone https://${GH_REF} .deploy_git
25 | cd .deploy_git
26 |
27 | git checkout master
28 | cd ../
29 |
30 | mv .deploy_git/.git/ ./public/
31 | cd ./public
32 |
33 | cat <> README.md
34 | 部署状态 | 集成结果 | 参考值
35 | ---|---|---
36 | 完成时间 | $time | yyyy-mm-dd hh:mm:ss
37 | 部署环境 | $TRAVIS_OS_NAME + $TRAVIS_NODE_VERSION | window \| linux + stable
38 | 部署类型 | $TRAVIS_EVENT_TYPE | push \| pull_request \| api \| cron
39 | 启用Sudo | $TRAVIS_SUDO | false \| true
40 | 仓库地址 | $TRAVIS_REPO_SLUG | owner_name/repo_name
41 | 提交分支 | $TRAVIS_COMMIT | hash 16位
42 | 提交信息 | $TRAVIS_COMMIT_MESSAGE |
43 | Job ID | $TRAVIS_JOB_ID |
44 | Job NUM | $TRAVIS_JOB_NUMBER |
45 | EOF
46 |
47 | git init
48 | git config user.name "shenliyang"
49 | git config user.email ""
50 | git add .
51 | git commit -m "Update Blog By TravisCI With Build $TRAVIS_BUILD_NUMBER"
52 | # Github Pages
53 | git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
54 | # Gitee Pages
55 | git push --force --quiet "https://shenliyang:${GITEE_TOKEN}@${GITEE_REF}" master:master
56 |
57 | # Create Tag
58 | git tag v1.3.$TRAVIS_BUILD_NUMBER -a -m "Auto Taged By TravisCI With Build $TRAVIS_BUILD_NUMBER"
59 | # Github Pages
60 | git push --quiet "https://${GH_TOKEN}@${GH_REF}" master:master --tags
61 | # Gitee Pages
62 | git push --quiet "https://shenliyang:${GITEE_TOKEN}@${GITEE_REF}" master:master --tags
63 | }
64 |
65 | case $1 in
66 | "success")
67 | success
68 | ;;
69 | "failure")
70 | failure
71 | ;;
72 | *)
73 | default
74 | esac
75 |
76 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | "use strict";
3 | var gulp = require("gulp"),
4 | less = require("gulp-less"),
5 | rename = require("gulp-rename"),
6 | minifycss = require("gulp-minify-css"),
7 | autoprefixer = require("gulp-autoprefixer"),
8 | uglify = require("gulp-uglify"),
9 | jshint = require("gulp-jshint"),
10 | stylish = require("jshint-stylish"),
11 | notify = require("gulp-notify"),
12 | plumber = require("gulp-plumber"),
13 | htmlclean = require("gulp-htmlclean"),
14 | htmlmin = require("gulp-htmlmin"),
15 | rev = require("gulp-rev-append"),
16 | sequence = require("gulp-sequence"),
17 | path = require("path"),
18 | paths = {
19 | root: "./",
20 | source: "./themes/hexo-theme-snippet/source/", //主题下原文件
21 | };
22 |
23 | /*====================================================
24 | 开发主题
25 | ====================================================*/
26 |
27 | // CSS预处理
28 | gulp.task("less-task", function () {
29 | return gulp
30 | .src(paths.source + "css/less/_style.less")
31 | .pipe(
32 | plumber({
33 | errorHandler: notify.onError("Error: <%= error.message %>"),
34 | })
35 | )
36 | .pipe(less())
37 | .pipe(rename({ basename: "style" }))
38 | .pipe(gulp.dest(paths.source + "css"))
39 | .pipe(notify({ message: "less compile complete" }));
40 | });
41 |
42 | // 校验JS语法和风格
43 | gulp.task("js-task", function () {
44 | return gulp
45 | .src(paths.source + "js/*.js")
46 | .pipe(jshint())
47 | .pipe(jshint.reporter(stylish))
48 | .pipe(gulp.dest(paths.source + "js/"))
49 | .pipe(notify({ message: "js compile complete" }));
50 | });
51 |
52 | // 监听任务-主题开发模式
53 | gulp.task("dev", function () {
54 | gulp.watch(paths.source + "css/less/*.less", ["less-task"]);
55 | gulp.watch(paths.source + "js/*.js", ["js-task"]);
56 | });
57 |
58 | /*====================================================
59 | 部署前代码处理
60 | ====================================================*/
61 |
62 | // 压缩处理 css
63 | gulp.task("minify-css", function () {
64 | return gulp
65 | .src("./public/**/*.css")
66 | .pipe(
67 | autoprefixer({
68 | browsers: [
69 | "last 10 versions",
70 | "Firefox >= 20",
71 | "Opera >= 36",
72 | "ie >= 9",
73 | "Android >= 4.0",
74 | ],
75 | cascade: true, //是否美化格式
76 | remove: false, //是否删除不必要的前缀
77 | })
78 | )
79 | .pipe(minifycss())
80 | .pipe(gulp.dest("./public"))
81 | .pipe(notify({ message: "css minify complete" }));
82 | });
83 |
84 | // 压缩处理 js
85 | gulp.task("minify-js", function () {
86 | return gulp
87 | .src("./public/js/*.js")
88 | .pipe(uglify())
89 | .pipe(gulp.dest("./public/js"))
90 | .pipe(notify({ message: "js minify complete" }));
91 | });
92 |
93 | // 压缩处理 html
94 | gulp.task("minify-html", function () {
95 | return gulp
96 | .src("./public/**/*.html")
97 | .pipe(htmlclean())
98 | .pipe(
99 | htmlmin({
100 | removeComments: true, //清除HTML注释
101 | collapseWhitespace: true, //压缩HTML
102 | minifyJS: true, //压缩页面JS
103 | minifyCSS: true, //压缩页面CSS
104 | minifyURLs: true,
105 | })
106 | )
107 | .pipe(gulp.dest("./public"));
108 | });
109 |
110 | // 添加版本号
111 | gulp.task("rev", function () {
112 | return gulp
113 | .src("./public/**/*.html")
114 | .pipe(rev())
115 | .pipe(gulp.dest("./public"));
116 | });
117 |
118 | // 同步执行task
119 | gulp.task(
120 | "deploy",
121 | sequence(["minify-css", "minify-js"], "rev", "minify-html")
122 | );
123 |
124 | // 部署前代码处理
125 | gulp.task("default", ["deploy"], function (e) {
126 | console.log("[complete] please execute: hexo d");
127 | });
128 | })();
129 |
--------------------------------------------------------------------------------
/languages/default.yml:
--------------------------------------------------------------------------------
1 | categories: Categories
2 | search: Search
3 | tags: Tags
4 | tagcloud: Tag Cloud
5 | tweets: Tweets
6 | prev: Prev
7 | next: Next
8 | comment: Comments
9 | archive_a: Archives
10 | archive_b: "Archives: %s"
11 | page: Page %d
12 | recent_posts: Recent Posts
13 | newer: Newer
14 | older: Older
15 | share: Share
16 | rss_feed: RSS
17 | rss: RSS
18 | category: Category
19 | tag: Tag
20 | social: Social
21 | friend_links: Friends
22 | read_more: Read
23 | home: Home
24 | archives: Archives
25 | about: About
26 | search_local: localSearch
27 | search_google: googleSearch
28 | search_placeholder: Search What?
29 | author: Author
30 | date: Published Date
31 | update: Updated Date
32 | post_categories: Categories
33 | post_tags: Tags
34 | post_licence: License
35 | notification: Notification
36 | toc: Table of Contents
37 | visit_counter_uv: Visitors
38 | visit_counter_pv: Total
39 |
--------------------------------------------------------------------------------
/languages/ja.yml:
--------------------------------------------------------------------------------
1 | categories: カテゴリー
2 | search: 検索
3 | tags: タグ
4 | tagcloud: タグクラウド
5 | tweets: ツイート
6 | prev: 前へ
7 | next: 次へ
8 | comment: コメント
9 | archive_a: アーカイブ
10 | archive_b: "アーカイブ: %s"
11 | page: "%d ページ"
12 | recent_posts: 最新の投稿
13 | newer: 新しい投稿
14 | older: 以前の投稿
15 | share: 共有
16 | rss_feed: RSS
17 | rss: RSS
18 | category: カテゴリー
19 | tag: タグ
20 | social: ソーシャル
21 | friend_links: リンク
22 | read_more: 続きを読む
23 | home: ホーム
24 | archives: アーカイブ
25 | about: 私について
26 | search_local: ローカル検索
27 | search_google: Google検索
28 | search_placeholder: 検索ポイントは何ですか
29 | author: 著者
30 | date: 公開日
31 | update: 更新日
32 | post_categories: カテゴリー
33 | post_tags: タグ
34 | post_licence: ライセンス
35 | notification: お知らせ
36 | toc: 目次
37 | visit_counter_uv: アクセス量
38 | visit_counter_pv: 訪問者数
39 |
--------------------------------------------------------------------------------
/languages/zh-CN.yml:
--------------------------------------------------------------------------------
1 | categories: 分类
2 | search: 搜索
3 | tags: 标签
4 | tagcloud: 标签云
5 | tweets: 推文
6 | prev: 上一页
7 | next: 下一页
8 | comment: 留言
9 | archive_a: 归档
10 | archive_b: 归档:%s
11 | page: 第 %d 页
12 | recent_posts: 最新文章
13 | newer: Newer
14 | older: Older
15 | share: Share
16 | rss_feed: RSS
17 | rss: RSS
18 | category: 分类
19 | tag: 标签
20 | social: 社交
21 | friend_links: 友链
22 | read_more: 阅读全文
23 | home: 首页
24 | about: 关于我
25 | archives: 归档
26 | search_local: 站内搜索
27 | search_google: 谷歌搜索
28 | search_placeholder: 搜点什么呢?
29 | author: 作者
30 | date: 发表日期
31 | update: 最后编辑日期
32 | post_categories: 文章分类
33 | post_tags: 文章标签
34 | post_licence: 版权声明
35 | notification: 网站公告
36 | toc: 文章目录
37 | visit_counter_uv: 访客数
38 | visit_counter_pv: 访问量
39 |
--------------------------------------------------------------------------------
/languages/zh-TW.yml:
--------------------------------------------------------------------------------
1 | categories: 分類
2 | search: 搜尋
3 | tags: 標籤
4 | tagcloud: 標籤雲
5 | tweets: 推文
6 | prev: 上一頁
7 | next: 下一頁
8 | comment: 留言
9 | archive_a: 彙整
10 | archive_b: 彙整:%s
11 | page: 第 %d 頁
12 | recent_posts: 最新文章
13 | newer: Newer
14 | older: Older
15 | share: Share
16 | powered_by: Powered by
17 | rss_feed: RSS
18 | rss: RSS
19 | category: 分類
20 | tag: 標籤
21 | social: 社交
22 | friend_links: 友鏈
23 | read_more: 閱讀全文
24 | home: 首頁
25 | archives: 彙整
26 | about: 關於我
27 | search_local: 站內搜索
28 | search_google: 谷歌搜索
29 | search_placeholder: 搜點什麽呢?
30 | author: 作者
31 | date: 發表日期
32 | update: 最後編輯日期
33 | post_categories: 文章分類
34 | post_tags: 文章標簽
35 | post_licence: 版權聲明
36 | popular_post: 熱門文章
37 | notification: 網站公告
38 | toc: 文章目錄
39 | visit_counter_uv: 訪客數
40 | visit_counter_pv: 訪問量
41 |
--------------------------------------------------------------------------------
/layout/_partial/_head-sections/IE.ejs:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/layout/_partial/_head-sections/seo.ejs:
--------------------------------------------------------------------------------
1 |
2 | <% if(page.keywords){ %>
3 |
4 | <% } else if(page.tags && page.tags.length) { %>
5 |
6 | <% } else{ %>
7 |
8 | <%}%>
9 | <% if(page.content){ %>
10 |
11 | <% } else{ %>
12 |
13 | <%}%>
14 | <% var robotMeta = theme.robot||'all'; %>
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/layout/_partial/_head-sections/style.ejs:
--------------------------------------------------------------------------------
1 | <%
2 | var _bootstrap = theme.bootstrap || '/css/bootstrap.min.css?rev=3.3.7';
3 | var _fontAwe = theme.fontAwesome || '/css/font-awesome.min.css?rev=4.7.0';
4 | var _gitmentStyle = '//imsun.github.io/gitment/style/default.css';
5 | var style = '/css/style.css?rev=@@hash';
6 | %>
7 | <% if(theme.gitment.enable && is_post()){ %>
8 | <%- css([_gitmentStyle]) %>
9 | <% } %>
10 | <%- css([_bootstrap, _fontAwe, style]) %>
--------------------------------------------------------------------------------
/layout/_partial/_head-sections/title.ejs:
--------------------------------------------------------------------------------
1 |
2 | <%
3 | var title = page.title;
4 | if (is_archive()) {
5 | if (is_year() || is_month()) {
6 | title = __('archive_b', page.year + (page.month ? '/' + page.month : ''));
7 | } else {
8 | title = __('archive_a');
9 | }
10 | } else if (is_category()) {
11 | title = __('category') + ': ' + page.category;
12 | } else if (is_tag()) {
13 | title = __('tag') + ': ' + page.tag;
14 | }
15 | %>
16 |
17 | <% if (title){ %>
18 | <%= title %> |
19 | <% } %>
20 | <%= config.title %>
21 |
22 | <% if (theme.rss){ %>
23 |
24 | <% } %>
25 | <% if (theme.favicon){ %>
26 |
27 | <% } %>
--------------------------------------------------------------------------------
/layout/_partial/archive.ejs:
--------------------------------------------------------------------------------
1 |
2 | <% if(page.tag) { %>
3 | -
4 | <%= page.tag %>
5 |
6 | <% } if(page.category) { %>
7 | -
8 | <%= page.category %>
9 |
10 | <% } else { %>
11 | <% } %>
12 |
13 | <% page.posts.each(function(post){ %>
14 |
15 | <% if(post.img) { %>
16 |
21 | <% } %>
22 |
23 |
24 |
28 |
•
29 |
32 |
33 |
34 |
35 | <% if(post.excerpt) { %>
36 | <%= strip_html(post.excerpt) + '…' %>
37 | <% } else { %>
38 | <%= truncate(strip_html(post.content), {length: theme.excerptLength || 120, separator: ''}) %>
39 | <% } %>
40 |
41 |
42 |
43 | <% }) %>
44 | <%- partial('_partial/pagination') %>
--------------------------------------------------------------------------------
/layout/_partial/article-meta.ejs:
--------------------------------------------------------------------------------
1 |
2 | <% if(!is_category()){ %>
3 |
4 |
5 | <%- list_categories(post.categories, {
6 | show_count: false,
7 | style: 'none',
8 | separator: ' '
9 | }) %>
10 |
11 | <% } %>
12 | <% if(!is_tag()){ %>
13 |
14 |
15 |
16 | <% if (post.tags && post.tags.length){ %>
17 | <%- list_tags(post.tags, {
18 | show_count: false,
19 | style: 'none',
20 | separator: ' ',
21 | amount: 5
22 | }) %>
23 | <% } %>
24 |
25 |
26 | <% } %>
27 | <% if(is_post()) {%>
28 | <%
29 | var format = 'YYYY/MM/DD';
30 | if (is_archive()) format = "MM/DD";
31 | %>
32 |
33 |
34 |
35 | <%- date(post.date, format) %>
36 |
37 | <% if(theme.visit_counter.page) {%>
38 |
39 |
40 |
41 |
42 | <% } %>
43 | <% } %>
44 |
--------------------------------------------------------------------------------
/layout/_partial/article.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= post.title%>
4 |
5 |
6 | <%- page.content %>
7 |
8 |
--------------------------------------------------------------------------------
/layout/_partial/busuanzi.ejs:
--------------------------------------------------------------------------------
1 |
2 | <% if(theme.visit_counter.site) { %>
3 | <%= __('visit_counter_pv') %>:
4 |
5 |
6 |
7 | |
8 | <%= __('visit_counter_uv') %>:
9 |
10 |
11 |
12 | <% } %>
13 |
--------------------------------------------------------------------------------
/layout/_partial/copyright.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%- partial('_partial/busuanzi') %>
6 |
7 |
8 |
Copyright ©
9 | <%= theme.since %>
10 | <% if(theme.beian) { %>
11 | <%= theme.beian %>
12 | <% } %>
13 | |
14 |
15 | Powered by Hexo
16 | |
17 |
18 | Theme by Snippet
19 |
20 |
21 |
22 |
23 |
24 | <%- partial('_partial/script') %>
--------------------------------------------------------------------------------
/layout/_partial/footer.ejs:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/layout/_partial/gallery.ejs:
--------------------------------------------------------------------------------
1 | <% if(post.photos && post.photos.length > 0){ %>
2 |
3 | <% post.photos.forEach(function (photo) { %>
4 |
 %>)
5 | <% }) %>
6 |
7 | <% } %>
--------------------------------------------------------------------------------
/layout/_partial/head.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | <%- partial('_head-sections/seo') %>
21 | <%- partial('_head-sections/title') %>
22 | <%- partial('_head-sections/style') %>
23 | <%- partial('_vendor/analytics/index') %>
24 | <%- partial('_vendor/baidu_sitemap') %>
25 |
--------------------------------------------------------------------------------
/layout/_partial/header.ejs:
--------------------------------------------------------------------------------
1 | style="background-image:url(
2 | <%= url_for(theme.banner.img) %>)"
3 | <%}%> >
4 |
5 |
8 |
9 |
10 | <% if(theme.branding){ %>
11 |
12 | <%= theme.branding %>
13 |
14 | <% } else { %>
15 | <%- image_tag('img/branding.png',{alt:'Snippet 博客主题',class:'img-responsive center-block'}) %>
16 | <% } %>
17 |
18 |
19 |
--------------------------------------------------------------------------------
/layout/_partial/nav.ejs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/layout/_partial/pagination.ejs:
--------------------------------------------------------------------------------
1 | <% if (page.total > 1){ %>
2 |
11 | <% } %>
--------------------------------------------------------------------------------
/layout/_partial/reward.ejs:
--------------------------------------------------------------------------------
1 |
2 |
赏
3 |
4 | <% if(theme.reward.alipay){ %>
5 |
6 |
支付宝打赏
7 |
8 | <% } %>
9 | <% if(theme.reward.wepay){ %>
10 |
11 |
微信打赏
12 |
13 | <% } %>
14 |
15 |
16 |
17 | <%= theme.reward.tip %>
18 |
19 |
--------------------------------------------------------------------------------
/layout/_partial/script.ejs:
--------------------------------------------------------------------------------
1 | <% if(theme.jsonContent.searchLocal && !is_post()){ %>
2 | <%- js('js/search.js?rev=@@hash') %>
3 | <% } %>
4 | <% if(theme.tagcloud.tag3d){ %>
5 | <%- js('assets/tagcanvas.min.js?rev=2.9') %>
6 |
26 | <% } %>
27 | <% if(theme.visit_counter.site || theme.visit_counter.page){ %>
28 |
29 | <% } %>
30 | <%- js('js/app.js?rev=@@hash') %>
--------------------------------------------------------------------------------
/layout/_partial/sidebar.ejs:
--------------------------------------------------------------------------------
1 | <% if(theme.widgets && theme.widgets.length >0){ %>
2 |
7 | <%}%>
--------------------------------------------------------------------------------
/layout/_partial/toc.ejs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/layout/_vendor/analytics/baidu.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.baidu_analytics){%>
2 |
11 | <%}%>
--------------------------------------------------------------------------------
/layout/_vendor/analytics/cnzz.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.cnzz_analytics){%>
2 |
3 |
7 |
8 | <%}%>
--------------------------------------------------------------------------------
/layout/_vendor/analytics/google.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.google_analytics){%>
2 |
17 | <%}%>
--------------------------------------------------------------------------------
/layout/_vendor/analytics/index.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_vendor/analytics/cnzz') %>
2 | <%- partial('_vendor/analytics/baidu') %>
3 | <%- partial('_vendor/analytics/google') %>
4 | <%- partial('_vendor/analytics/tencent') %>
--------------------------------------------------------------------------------
/layout/_vendor/analytics/tencent.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.tencent_analytics){%>
2 |
3 | <%}%>
--------------------------------------------------------------------------------
/layout/_vendor/baidu_sitemap.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.baidu_site_verification){%>
2 |
3 | <%}%>
4 | <%if(theme.baidu_push){%>
5 |
18 | <%}%>
--------------------------------------------------------------------------------
/layout/_vendor/comments/changyan.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/disqus.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.disqus.count){ %>
2 |
3 | <% } %>
4 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/gitalk.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/gitment.ejs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/index.ejs:
--------------------------------------------------------------------------------
1 | <% if(theme.uyan.enable && is_post()){ %>
2 | <%- partial('_vendor/comments/uyan') %>
3 | <% } else if(theme.gitment.enable && is_post()) { %>
4 | <%- partial('_vendor/comments/gitment') %>
5 | <% } else if(theme.livere.enable && is_post()) { %>
6 | <%- partial('_vendor/comments/livere') %>
7 | <% } else if(theme.disqus.enable && is_post()) { %>
8 | <%- partial('_vendor/comments/disqus') %>
9 | <% } else if(theme.changyan.enable && is_post()) { %>
10 | <%- partial('_vendor/comments/changyan') %>
11 | <% } else if(theme.valine.enable && is_post()) { %>
12 | <%- partial('_vendor/comments/valine') %>
13 | <% } else if(theme.gitalk.enable && is_post()) { %>
14 | <%- partial('_vendor/comments/gitalk') %>
15 | <% } else if(theme.utterances.enable && is_post()) { %>
16 | <%- partial('_vendor/comments/utterances') %>
17 | <% } else { %>
18 | 评论系统未开启,无法评论!
19 | <% } %>
--------------------------------------------------------------------------------
/layout/_vendor/comments/livere.ejs:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/utterances.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.utterances.enable){ %>
2 |
3 | <% var utterancesCdn = theme.utterances.cdn || "https://utteranc.es/client.js"
4 | var issueTerm = "";
5 | var issueNumber = "";
6 | if(theme.utterances.issueTerm == 'issue-number'){
7 | issueNumber = theme.utterances.issueNumber;
8 | } else {
9 | issueTerm = theme.utterances.issueTerm;
10 | }
11 | %>
12 |
22 |
23 | <% } %>
24 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/uyan.ejs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/layout/_vendor/comments/valine.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.valine.enable){ %>
2 |
3 | <%- js('//cdn1.lncld.net/static/js/3.0.4/av-min.js','assets/valine.min.js') %>
4 |
20 | <% } %>
--------------------------------------------------------------------------------
/layout/_widget/archive.ejs:
--------------------------------------------------------------------------------
1 | <% if(site.posts.length){ %>
2 |
3 |
4 | <%= __('archives') %>
5 |
6 | <%- list_archives({
7 | show_count: theme.arch_config.show_count,
8 | type: theme.arch_config.type,
9 | order: theme.arch_config.order,
10 | format: theme.arch_config.format,
11 | transform: function (name) {
12 | return ''+ name + '';
13 | }
14 | }) %>
15 |
16 | <% } %>
--------------------------------------------------------------------------------
/layout/_widget/category.ejs:
--------------------------------------------------------------------------------
1 | <% if(site.categories.length){ %>
2 |
3 |
4 | <%= __('categories') %>
5 |
6 | <%- list_categories({
7 | showcount: theme.cate_config.show_count,
8 | transform: function(name){
9 | return ''+name+'';
10 | },
11 | show_current: theme.cate_config.show_current
12 | }) %>
13 |
14 | <% } %>
--------------------------------------------------------------------------------
/layout/_widget/friends.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.links && theme.links.length){ %>
2 |
19 | <% } %>
--------------------------------------------------------------------------------
/layout/_widget/notification.ejs:
--------------------------------------------------------------------------------
1 | <%if(theme.notification){%>
2 |
10 | <%}%>
--------------------------------------------------------------------------------
/layout/_widget/search.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.jsonContent.searchLocal || theme.jsonContent.searchGoogle){ %>
2 |
33 | <% } %>
--------------------------------------------------------------------------------
/layout/_widget/social.ejs:
--------------------------------------------------------------------------------
1 | <% if(theme.social){%>
2 |
14 | <%}%>
--------------------------------------------------------------------------------
/layout/_widget/stick.ejs:
--------------------------------------------------------------------------------
1 |
24 |
--------------------------------------------------------------------------------
/layout/_widget/tagcloud.ejs:
--------------------------------------------------------------------------------
1 | <% if (site.tags.length){ %>
2 |
16 | <% } %>
--------------------------------------------------------------------------------
/layout/archive.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <% var years; %>
6 | <% site.posts.sort('date','desc').each(function(post){ %>
7 | <%
8 | var year = post.date.year();
9 | var month = post.date.format('MM');
10 | var months = (~~month != ~~page.month)? 'hide' : ''
11 | %>
12 | <% if((!!page.year && page.year == year) || !page.year) { %>
13 | <% if (years != year) { %>
14 | <% years = year; %>
15 |
16 | <%= year %>
17 |
18 | <% } %>
19 | <% if(page.month) { %>
20 | -
21 | <% } else { %>
22 |
-
23 | <% } %>
24 |
25 | <%= post.date.format('DD') %>
26 | <%= post.date.format('MM') %>月
27 |
28 |
29 | <%- post.title %>
30 |
31 | <% } %>
32 | <% }) %>
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/layout/category.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_partial/archive') %>
--------------------------------------------------------------------------------
/layout/index.ejs:
--------------------------------------------------------------------------------
1 | <% if (theme.carousel.img) { %>
2 |
7 | <% } %>
8 | <% if(page.posts && page.posts.length){ %>
9 | <% page.posts.forEach(function (post, i) { %>
10 | <%
11 | var urls = lazyImage(post);
12 | var random = Math.floor(Math.random() * (urls.length));
13 | if(theme.defaultImgs && theme.defaultImgs.length >0){
14 | var urls2 = theme.defaultImgs;
15 | var random2 = Math.floor(Math.random() * (urls2.length));
16 | }
17 | var _photoUrl = post.img || (urls.length > 0 && urls[random]) || (urls2.length > 0 && urls2[random2]) || '';
18 | %>
19 |
20 | <% if(_photoUrl) {%>
21 |
26 | <% } %>
27 |
28 |
29 |
33 |
•
34 |
37 |
38 |
39 |
40 | <% if(post.excerpt) { %>
41 | <%= strip_html(post.excerpt) + '…' %>
42 | <% } else { %>
43 | <%= truncate(strip_html(post.content), {length: theme.excerptLength || 120, separator: ''}) %>
44 | <% } %>
45 |
46 |
47 | <% if(theme.homePanel) { %>
48 |
57 | <% } %>
58 |
59 | <% }) %>
60 | <%}%>
61 | <%- partial('_partial/pagination') %>
--------------------------------------------------------------------------------
/layout/layout.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_partial/head') %>
2 | <%- partial('_partial/_head-sections/IE',null,{cache: !config.relative_link}) %>
3 |
4 | <%- partial('_partial/header') %>
5 | <%- partial('_partial/nav') %>
6 |
7 |
8 |
9 |
10 | <%- body %>
11 |
12 | <% if(theme.toc && is_post()){ %>
13 | <%- partial('_partial/toc', null, {cache:false}) %>
14 | <% } else { %>
15 | <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %>
16 | <% } %>
17 |
18 |
19 |
20 | <%- partial('_partial/footer') %>
21 | <%- partial('_partial/copyright') %>
22 |
23 |
--------------------------------------------------------------------------------
/layout/page.ejs:
--------------------------------------------------------------------------------
1 |
2 | <%if(page.title=='tags' || page.type=='tags'){%>
3 |
4 | 共计
5 | <%- site.tags.length%>个标签
6 |
13 |
14 | <% } else if(page.title=='categories' || page.type=='categories') { %>
15 |
16 | 共计
17 | <%- site.categories.length%>个分类
18 |
19 | <% site.categories.forEach(function (item) {%>
20 |
21 |
22 | <%- item.name%>
23 |
24 |
25 | <%})%>
26 |
27 |
28 | <% } else{ %>
29 | <%- partial('_partial/article', {post: page, index: false}) %>
30 | <%}%>
31 |
--------------------------------------------------------------------------------
/layout/post.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%if(page.link){%>
6 |
7 | <%= page.title %>
8 | <%}else{%>
9 | <%= page.title||'NO Title!' %>
10 | <%}%>
11 |
12 | <%- partial('_partial/article-meta', {post: page}) %>
13 | <%
14 | var diffDays = moment(new Date()).diff(moment(page.date), 'day');
15 | var warningTextArr = theme.warning.text.split("%d");
16 | %>
17 | <% if((theme.warning.days!=0) && diffDays > (theme.warning.days || 300)){ %>
18 |
19 | <%- warningTextArr[0]%>
20 | <%= diffDays %>
21 | <%- warningTextArr[1]%>
22 |
23 | <% } %>
24 |
25 | <%- partial('_partial/gallery',{post:page})%>
26 |
27 | <%- page.content %>
28 |
29 | <% if(theme.reward.alipay || theme.reward.wepay){ %>
30 | <%- partial('_partial/reward') %>
31 | <% } %>
32 |
47 |
48 |
49 | <% if(page.prev){ %>
50 |
51 | 上一篇
52 |
53 | <%- page.prev.title %>
54 |
55 | <% } %>
56 | <% if(page.next){ %>
57 |
58 | 下一篇
59 |
60 | <%- page.next.title %>
61 |
62 | <% } %>
63 |
64 | <% if(page.comments){ %>
65 |
68 | <% } %>
--------------------------------------------------------------------------------
/layout/tag.ejs:
--------------------------------------------------------------------------------
1 | <%- partial('_partial/archive') %>
2 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hexo-theme-snippet",
3 | "version": "1.3.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@nodelib/fs.scandir": {
8 | "version": "2.1.5",
9 | "resolved": "https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz?cache=0&sync_timestamp=1622792874919&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.scandir%2Fdownload%2F%40nodelib%2Ffs.scandir-2.1.5.tgz",
10 | "integrity": "sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=",
11 | "dev": true,
12 | "requires": {
13 | "@nodelib/fs.stat": "2.0.5",
14 | "run-parallel": "^1.1.9"
15 | }
16 | },
17 | "@nodelib/fs.stat": {
18 | "version": "2.0.5",
19 | "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz?cache=0&sync_timestamp=1622792772584&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.5.tgz",
20 | "integrity": "sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=",
21 | "dev": true
22 | },
23 | "@nodelib/fs.walk": {
24 | "version": "1.2.8",
25 | "resolved": "https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625773832828&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz",
26 | "integrity": "sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=",
27 | "dev": true,
28 | "requires": {
29 | "@nodelib/fs.scandir": "2.1.5",
30 | "fastq": "^1.6.0"
31 | }
32 | },
33 | "acorn": {
34 | "version": "7.4.1",
35 | "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz",
36 | "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
37 | "dev": true
38 | },
39 | "acorn-node": {
40 | "version": "1.8.2",
41 | "resolved": "https://registry.npm.taobao.org/acorn-node/download/acorn-node-1.8.2.tgz",
42 | "integrity": "sha1-EUyV1kU55T3t4j3oudlt98euKvg=",
43 | "dev": true,
44 | "requires": {
45 | "acorn": "^7.0.0",
46 | "acorn-walk": "^7.0.0",
47 | "xtend": "^4.0.2"
48 | }
49 | },
50 | "acorn-walk": {
51 | "version": "7.2.0",
52 | "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz",
53 | "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=",
54 | "dev": true
55 | },
56 | "ansi-regex": {
57 | "version": "5.0.0",
58 | "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz",
59 | "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=",
60 | "dev": true
61 | },
62 | "ansi-styles": {
63 | "version": "4.3.0",
64 | "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
65 | "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
66 | "dev": true,
67 | "requires": {
68 | "color-convert": "^2.0.1"
69 | }
70 | },
71 | "array-union": {
72 | "version": "2.1.0",
73 | "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-2.1.0.tgz",
74 | "integrity": "sha1-t5hCCtvrHego2ErNii4j0+/oXo0=",
75 | "dev": true
76 | },
77 | "async": {
78 | "version": "0.9.2",
79 | "resolved": "https://registry.nlark.com/async/download/async-0.9.2.tgz",
80 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
81 | "dev": true
82 | },
83 | "balanced-match": {
84 | "version": "1.0.2",
85 | "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
86 | "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=",
87 | "dev": true
88 | },
89 | "brace-expansion": {
90 | "version": "1.1.11",
91 | "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1614011092368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz",
92 | "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
93 | "dev": true,
94 | "requires": {
95 | "balanced-match": "^1.0.0",
96 | "concat-map": "0.0.1"
97 | }
98 | },
99 | "braces": {
100 | "version": "3.0.2",
101 | "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
102 | "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
103 | "dev": true,
104 | "requires": {
105 | "fill-range": "^7.0.1"
106 | }
107 | },
108 | "chalk": {
109 | "version": "4.1.2",
110 | "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz",
111 | "integrity": "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=",
112 | "dev": true,
113 | "requires": {
114 | "ansi-styles": "^4.1.0",
115 | "supports-color": "^7.1.0"
116 | }
117 | },
118 | "cliui": {
119 | "version": "7.0.4",
120 | "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-7.0.4.tgz?cache=0&sync_timestamp=1604881063064&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-7.0.4.tgz",
121 | "integrity": "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=",
122 | "dev": true,
123 | "requires": {
124 | "string-width": "^4.2.0",
125 | "strip-ansi": "^6.0.0",
126 | "wrap-ansi": "^7.0.0"
127 | }
128 | },
129 | "color-convert": {
130 | "version": "2.0.1",
131 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
132 | "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
133 | "dev": true,
134 | "requires": {
135 | "color-name": "~1.1.4"
136 | }
137 | },
138 | "color-name": {
139 | "version": "1.1.4",
140 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
141 | "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
142 | "dev": true
143 | },
144 | "concat-map": {
145 | "version": "0.0.1",
146 | "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
147 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
148 | "dev": true
149 | },
150 | "dir-glob": {
151 | "version": "3.0.1",
152 | "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-3.0.1.tgz",
153 | "integrity": "sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=",
154 | "dev": true,
155 | "requires": {
156 | "path-type": "^4.0.0"
157 | }
158 | },
159 | "ejs-include-regex": {
160 | "version": "1.0.0",
161 | "resolved": "https://registry.nlark.com/ejs-include-regex/download/ejs-include-regex-1.0.0.tgz",
162 | "integrity": "sha1-4vcVdcv9VRrIALJHTB9io45wCTo=",
163 | "dev": true
164 | },
165 | "ejs-lint": {
166 | "version": "1.2.1",
167 | "resolved": "https://registry.nlark.com/ejs-lint/download/ejs-lint-1.2.1.tgz",
168 | "integrity": "sha1-b6Fk7UcBg/GbEVAFL5L9JRWak40=",
169 | "dev": true,
170 | "requires": {
171 | "chalk": "^4.0.0",
172 | "ejs": "3.1.6",
173 | "ejs-include-regex": "^1.0.0",
174 | "globby": "^11.0.0",
175 | "read-input": "^0.3.1",
176 | "slash": "^3.0.0",
177 | "syntax-error": "^1.1.6",
178 | "yargs": "^16.0.0"
179 | },
180 | "dependencies": {
181 | "ejs": {
182 | "version": "3.1.6",
183 | "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-3.1.6.tgz",
184 | "integrity": "sha1-W/0KBol0O7UmizVQzO7rvBcCgio=",
185 | "dev": true,
186 | "requires": {
187 | "jake": "^10.6.1"
188 | }
189 | }
190 | }
191 | },
192 | "emoji-regex": {
193 | "version": "8.0.0",
194 | "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1614682725186&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz",
195 | "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=",
196 | "dev": true
197 | },
198 | "escalade": {
199 | "version": "3.1.1",
200 | "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567260031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz",
201 | "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=",
202 | "dev": true
203 | },
204 | "escape-string-regexp": {
205 | "version": "1.0.5",
206 | "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1618677179364&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz",
207 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
208 | "dev": true
209 | },
210 | "fast-glob": {
211 | "version": "3.2.7",
212 | "resolved": "https://registry.nlark.com/fast-glob/download/fast-glob-3.2.7.tgz",
213 | "integrity": "sha1-/Wy3otfpqnp4RhEehaGW1rL3ZqE=",
214 | "dev": true,
215 | "requires": {
216 | "@nodelib/fs.stat": "^2.0.2",
217 | "@nodelib/fs.walk": "^1.2.3",
218 | "glob-parent": "^5.1.2",
219 | "merge2": "^1.3.0",
220 | "micromatch": "^4.0.4"
221 | }
222 | },
223 | "fastq": {
224 | "version": "1.11.1",
225 | "resolved": "https://registry.nlark.com/fastq/download/fastq-1.11.1.tgz?cache=0&sync_timestamp=1625393108958&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffastq%2Fdownload%2Ffastq-1.11.1.tgz",
226 | "integrity": "sha1-XYF1quF9thlH+LFiz8f2MmTSKAc=",
227 | "dev": true,
228 | "requires": {
229 | "reusify": "^1.0.4"
230 | }
231 | },
232 | "filelist": {
233 | "version": "1.0.2",
234 | "resolved": "https://registry.nlark.com/filelist/download/filelist-1.0.2.tgz",
235 | "integrity": "sha1-gCAvIUYtTRwuIUEZsYB8G8A4Dls=",
236 | "dev": true,
237 | "requires": {
238 | "minimatch": "^3.0.4"
239 | }
240 | },
241 | "fill-range": {
242 | "version": "7.0.1",
243 | "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
244 | "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
245 | "dev": true,
246 | "requires": {
247 | "to-regex-range": "^5.0.1"
248 | }
249 | },
250 | "get-caller-file": {
251 | "version": "2.0.5",
252 | "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
253 | "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=",
254 | "dev": true
255 | },
256 | "glob-parent": {
257 | "version": "5.1.2",
258 | "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1626760165717&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz",
259 | "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=",
260 | "dev": true,
261 | "requires": {
262 | "is-glob": "^4.0.1"
263 | }
264 | },
265 | "globby": {
266 | "version": "11.0.4",
267 | "resolved": "https://registry.nlark.com/globby/download/globby-11.0.4.tgz",
268 | "integrity": "sha1-LLr/d8Lypi5x6bKBOme5ejowAaU=",
269 | "dev": true,
270 | "requires": {
271 | "array-union": "^2.1.0",
272 | "dir-glob": "^3.0.1",
273 | "fast-glob": "^3.1.1",
274 | "ignore": "^5.1.4",
275 | "merge2": "^1.3.0",
276 | "slash": "^3.0.0"
277 | }
278 | },
279 | "has-flag": {
280 | "version": "4.0.0",
281 | "resolved": "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1626716095603&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
282 | "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
283 | "dev": true
284 | },
285 | "ignore": {
286 | "version": "5.1.8",
287 | "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.8.tgz",
288 | "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=",
289 | "dev": true
290 | },
291 | "is-extglob": {
292 | "version": "2.1.1",
293 | "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
294 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
295 | "dev": true
296 | },
297 | "is-fullwidth-code-point": {
298 | "version": "3.0.0",
299 | "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz",
300 | "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
301 | "dev": true
302 | },
303 | "is-glob": {
304 | "version": "4.0.1",
305 | "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
306 | "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
307 | "dev": true,
308 | "requires": {
309 | "is-extglob": "^2.1.1"
310 | }
311 | },
312 | "is-number": {
313 | "version": "7.0.0",
314 | "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
315 | "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
316 | "dev": true
317 | },
318 | "jake": {
319 | "version": "10.8.2",
320 | "resolved": "https://registry.npm.taobao.org/jake/download/jake-10.8.2.tgz",
321 | "integrity": "sha1-68nehVgWCmbYLQ6txqLlj7xQCns=",
322 | "dev": true,
323 | "requires": {
324 | "async": "0.9.x",
325 | "chalk": "^2.4.2",
326 | "filelist": "^1.0.1",
327 | "minimatch": "^3.0.4"
328 | },
329 | "dependencies": {
330 | "ansi-styles": {
331 | "version": "3.2.1",
332 | "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz",
333 | "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
334 | "dev": true,
335 | "requires": {
336 | "color-convert": "^1.9.0"
337 | }
338 | },
339 | "chalk": {
340 | "version": "2.4.2",
341 | "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
342 | "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
343 | "dev": true,
344 | "requires": {
345 | "ansi-styles": "^3.2.1",
346 | "escape-string-regexp": "^1.0.5",
347 | "supports-color": "^5.3.0"
348 | }
349 | },
350 | "color-convert": {
351 | "version": "1.9.3",
352 | "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
353 | "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
354 | "dev": true,
355 | "requires": {
356 | "color-name": "1.1.3"
357 | }
358 | },
359 | "color-name": {
360 | "version": "1.1.3",
361 | "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
362 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
363 | "dev": true
364 | },
365 | "has-flag": {
366 | "version": "3.0.0",
367 | "resolved": "https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1626716095603&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz",
368 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
369 | "dev": true
370 | },
371 | "supports-color": {
372 | "version": "5.5.0",
373 | "resolved": "https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz",
374 | "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
375 | "dev": true,
376 | "requires": {
377 | "has-flag": "^3.0.0"
378 | }
379 | }
380 | }
381 | },
382 | "merge2": {
383 | "version": "1.4.1",
384 | "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
385 | "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
386 | "dev": true
387 | },
388 | "micromatch": {
389 | "version": "4.0.4",
390 | "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618055113916&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz",
391 | "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=",
392 | "dev": true,
393 | "requires": {
394 | "braces": "^3.0.1",
395 | "picomatch": "^2.2.3"
396 | }
397 | },
398 | "minimatch": {
399 | "version": "3.0.4",
400 | "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
401 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
402 | "dev": true,
403 | "requires": {
404 | "brace-expansion": "^1.1.7"
405 | }
406 | },
407 | "path-type": {
408 | "version": "4.0.0",
409 | "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-4.0.0.tgz",
410 | "integrity": "sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=",
411 | "dev": true
412 | },
413 | "picomatch": {
414 | "version": "2.3.0",
415 | "resolved": "https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz?cache=0&sync_timestamp=1621648305056&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpicomatch%2Fdownload%2Fpicomatch-2.3.0.tgz",
416 | "integrity": "sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=",
417 | "dev": true
418 | },
419 | "queue-microtask": {
420 | "version": "1.2.3",
421 | "resolved": "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.2.3.tgz",
422 | "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=",
423 | "dev": true
424 | },
425 | "read-input": {
426 | "version": "0.3.1",
427 | "resolved": "https://registry.npm.taobao.org/read-input/download/read-input-0.3.1.tgz",
428 | "integrity": "sha1-WzFpMIATRk/9puyS5Y0tPOqUjfE=",
429 | "dev": true
430 | },
431 | "require-directory": {
432 | "version": "2.1.1",
433 | "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
434 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
435 | "dev": true
436 | },
437 | "reusify": {
438 | "version": "1.0.4",
439 | "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
440 | "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
441 | "dev": true
442 | },
443 | "run-parallel": {
444 | "version": "1.2.0",
445 | "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-parallel%2Fdownload%2Frun-parallel-1.2.0.tgz",
446 | "integrity": "sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=",
447 | "dev": true,
448 | "requires": {
449 | "queue-microtask": "^1.2.2"
450 | }
451 | },
452 | "slash": {
453 | "version": "3.0.0",
454 | "resolved": "https://registry.npm.taobao.org/slash/download/slash-3.0.0.tgz?cache=0&sync_timestamp=1618388635059&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-3.0.0.tgz",
455 | "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=",
456 | "dev": true
457 | },
458 | "string-width": {
459 | "version": "4.2.2",
460 | "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1618558918824&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz",
461 | "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
462 | "dev": true,
463 | "requires": {
464 | "emoji-regex": "^8.0.0",
465 | "is-fullwidth-code-point": "^3.0.0",
466 | "strip-ansi": "^6.0.0"
467 | }
468 | },
469 | "strip-ansi": {
470 | "version": "6.0.0",
471 | "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz",
472 | "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
473 | "dev": true,
474 | "requires": {
475 | "ansi-regex": "^5.0.0"
476 | }
477 | },
478 | "supports-color": {
479 | "version": "7.2.0",
480 | "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz",
481 | "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
482 | "dev": true,
483 | "requires": {
484 | "has-flag": "^4.0.0"
485 | }
486 | },
487 | "syntax-error": {
488 | "version": "1.4.0",
489 | "resolved": "https://registry.npm.taobao.org/syntax-error/download/syntax-error-1.4.0.tgz",
490 | "integrity": "sha1-LZ1P9cBkrLcRWUo+O5UFStUdkHw=",
491 | "dev": true,
492 | "requires": {
493 | "acorn-node": "^1.2.0"
494 | }
495 | },
496 | "to-regex-range": {
497 | "version": "5.0.1",
498 | "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
499 | "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
500 | "dev": true,
501 | "requires": {
502 | "is-number": "^7.0.0"
503 | }
504 | },
505 | "wrap-ansi": {
506 | "version": "7.0.0",
507 | "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz",
508 | "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=",
509 | "dev": true,
510 | "requires": {
511 | "ansi-styles": "^4.0.0",
512 | "string-width": "^4.1.0",
513 | "strip-ansi": "^6.0.0"
514 | }
515 | },
516 | "xtend": {
517 | "version": "4.0.2",
518 | "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",
519 | "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=",
520 | "dev": true
521 | },
522 | "y18n": {
523 | "version": "5.0.8",
524 | "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-5.0.8.tgz",
525 | "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=",
526 | "dev": true
527 | },
528 | "yargs": {
529 | "version": "16.2.0",
530 | "resolved": "https://registry.nlark.com/yargs/download/yargs-16.2.0.tgz?cache=0&sync_timestamp=1628893981715&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-16.2.0.tgz",
531 | "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=",
532 | "dev": true,
533 | "requires": {
534 | "cliui": "^7.0.2",
535 | "escalade": "^3.1.1",
536 | "get-caller-file": "^2.0.5",
537 | "require-directory": "^2.1.1",
538 | "string-width": "^4.2.0",
539 | "y18n": "^5.0.5",
540 | "yargs-parser": "^20.2.2"
541 | }
542 | },
543 | "yargs-parser": {
544 | "version": "20.2.9",
545 | "resolved": "https://registry.nlark.com/yargs-parser/download/yargs-parser-20.2.9.tgz?cache=0&sync_timestamp=1624235044310&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.9.tgz",
546 | "integrity": "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=",
547 | "dev": true
548 | }
549 | }
550 | }
551 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hexo-theme-snippet",
3 | "version": "1.3.0",
4 | "description": "Snippet 简洁而不简单,也许是一款你寻找已久的hexo主题",
5 | "author": "shenliyang",
6 | "license": "MIT",
7 | "private": true,
8 | "scripts": {
9 | "test": "echo \"Error: no test specified\" && exit 1"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "https://github.com/shenliyang/hexo-theme-snippet.git"
14 | },
15 | "bugs": {
16 | "url": "https://github.com/shenliyang/hexo-theme-snippet/issues"
17 | },
18 | "homepage": "https://shenliyang.github.io",
19 | "hexo": {
20 | "version": "3.8.0"
21 | },
22 | "dependencies": {
23 | "ejs": "^2.6.1",
24 | "hexo": "^3.3.8",
25 | "hexo-abbrlink": "^2.0.4",
26 | "hexo-deployer-git": "^1.0.0",
27 | "hexo-generator-archive": "^0.1.4",
28 | "hexo-generator-category": "^0.1.3",
29 | "hexo-generator-feed": "^1.2.0",
30 | "hexo-generator-index": "^0.2.0",
31 | "hexo-generator-json-content": "^4.1.3",
32 | "hexo-generator-sitemap": "^1.2.0",
33 | "hexo-generator-tag": "^0.2.0",
34 | "hexo-renderer-ejs": "^0.3.1",
35 | "hexo-renderer-marked": "^0.3.2",
36 | "hexo-server": "^0.3.3"
37 | },
38 | "devDependencies": {
39 | "ejs-lint": "^1.2.1",
40 | "gulp": "^3.9.1",
41 | "gulp-autoprefixer": "^6.0.0",
42 | "gulp-htmlclean": "^2.7.15",
43 | "gulp-htmlmin": "^5.0.1",
44 | "gulp-jshint": "^2.0.4",
45 | "gulp-less": "^4.0.1",
46 | "gulp-minify-css": "^1.2.4",
47 | "gulp-notify": "^3.0.0",
48 | "gulp-path": "^4.0.0",
49 | "gulp-plumber": "^1.1.0",
50 | "gulp-rename": "^1.2.2",
51 | "gulp-rev-append": "^0.1.8",
52 | "gulp-sequence": "^1.0.0",
53 | "gulp-uglify": "^3.0.2",
54 | "gulp-watch": "^5.0.1",
55 | "jshint": "^2.9.5",
56 | "jshint-stylish": "^2.2.1"
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/scripts/helper.js:
--------------------------------------------------------------------------------
1 | function lazyImage(post) {
2 | var content = post.content.toString();
3 | var imgRe = //gim;
4 | var urlRe = /(http:|https:|\/|\.)\S+(?="\s)/i;
5 | var imgUrlsArr = content.match(imgRe);
6 | var data = [];
7 | imgUrlsArr &&
8 | imgUrlsArr.forEach(function (item) {
9 | data.push(item.match(urlRe)[0]);
10 | });
11 | return data;
12 | }
13 |
14 | hexo.extend.helper.register("lazyImage", lazyImage);
15 |
--------------------------------------------------------------------------------
/scripts/process.js:
--------------------------------------------------------------------------------
1 | hexo.on("ready", function () {
2 | hexo.log.info("=========================================");
3 | hexo.log.info(" Welcome to use Snippet theme for hexo ");
4 | hexo.log.info("=========================================");
5 | });
6 |
--------------------------------------------------------------------------------
/source/assets/highlight.pack.js:
--------------------------------------------------------------------------------
1 | /*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */
2 | !function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}));var ta=document.createElement("script");ta.src="https://hm.baidu.com/hm.js?02fe9b53d02bb9959bce9a0e2530899d";ta.async="1";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ta,s);}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""+t(e)+">"}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/
/g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/,r:0,c:[{cN:"attr",b:e,r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});
--------------------------------------------------------------------------------
/source/css/font-awesome.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
5 |
--------------------------------------------------------------------------------
/source/css/less/_highlight.less:
--------------------------------------------------------------------------------
1 | pre,
2 | .highlight {
3 | overflow: auto;
4 | margin: 20px 0;
5 | padding: 0;
6 | color: #c5c8c6;
7 | font-size: 13px;
8 | background: #1d1f21;
9 | line-height: 1.6;
10 | }
11 |
12 | code {
13 | padding: 2px 4px;
14 | .text-ellipsis();
15 | color: @black6_color;
16 | background: #eee;
17 | .border-radius(3px)
18 | }
19 |
20 | pre {
21 | code {
22 | padding: 0;
23 | color: #c5c8c6;
24 | background: none;
25 | text-shadow: none;
26 | }
27 |
28 | .meta {
29 | color: #b294bb;
30 | }
31 |
32 | .comment {
33 | color: #969896;
34 | }
35 | }
36 |
37 | .highlight {
38 | .border-radius(1px);
39 |
40 | pre {
41 | border: none;
42 | margin: 0;
43 | padding: 10px 0;
44 | }
45 |
46 | table {
47 | margin: 0;
48 | width: auto;
49 | border: none;
50 | }
51 |
52 | td {
53 | border: none;
54 | padding: 0;
55 | }
56 |
57 | figcaption {
58 | font-size: 1em;
59 | color: #c5c8c6;
60 | line-height: 1em;
61 | margin-bottom: 1em;
62 |
63 | a {
64 | float: right;
65 | color: #c5c8c6;
66 |
67 | &:hover {
68 | border-bottom-color: #c5c8c6;
69 | }
70 | }
71 | }
72 |
73 | .gutter {
74 | pre {
75 | padding-left: 10px;
76 | padding-right: 10px;
77 | color: #888f96;
78 | text-align: right;
79 | background-color: #000;
80 | }
81 | }
82 |
83 | .code {
84 | pre {
85 | width: 100%;
86 | padding-left: 10px;
87 | padding-right: 10px;
88 | background-color: #1d1f21;
89 | }
90 | }
91 |
92 | .line {
93 | height: 20px;
94 | }
95 | }
96 |
97 | .gutter {
98 | -webkit-user-select: none;
99 | -moz-user-select: none;
100 | -ms-user-select: none;
101 | user-select: none;
102 | }
103 |
104 | .gist {
105 | table {
106 | width: auto;
107 |
108 | td {
109 | border: none;
110 | }
111 | }
112 | }
113 |
114 | pre .variable,
115 | pre .attribute,
116 | pre .tag,
117 | pre .regexp,
118 | pre .ruby .constant,
119 | pre .xml .tag .title,
120 | pre .xml .pi,
121 | pre .xml .doctype,
122 | pre .html .doctype,
123 | pre .css .id,
124 | pre .css .class,
125 | pre .css .pseudo {
126 | color: #c66;
127 | }
128 |
129 | pre .number,
130 | pre .preprocessor,
131 | pre .built_in,
132 | pre .literal,
133 | pre .params,
134 | pre .constant,
135 | pre .command {
136 | color: #de935f;
137 | }
138 |
139 | pre .ruby .class .title,
140 | pre .css .rules .attribute,
141 | pre .string,
142 | pre .value,
143 | pre .inheritance,
144 | pre .header,
145 | pre .ruby .symbol,
146 | pre .xml .cdata,
147 | pre .special,
148 | pre .number,
149 | pre .formula {
150 | color: #b5bd68;
151 | }
152 |
153 | pre .title,
154 | pre .css .hexcolor {
155 | color: #8abeb7;
156 | }
157 |
158 | pre .function,
159 | pre .python .decorator,
160 | pre .python .title,
161 | pre .ruby .function .title,
162 | pre .ruby .title .keyword,
163 | pre .perl .sub,
164 | pre .javascript .title,
165 | pre .coffeescript .title {
166 | color: #81a2be;
167 | }
168 |
169 | pre .keyword,
170 | pre .javascript .function {
171 | color: #b294bb;
172 | }
--------------------------------------------------------------------------------
/source/css/less/_mixins.less:
--------------------------------------------------------------------------------
1 | /* _mixins.less */
2 |
3 | .text-shadow (@string: 0 1px 3px rgba(0, 0, 0, 0.25)) {
4 | text-shadow: @string;
5 | }
6 |
7 | .transition(@string: all .2s) {
8 | -webkit-transition: @string;
9 | transition: @string;
10 | }
11 |
12 | .box-shadow (@string) {
13 | -webkit-box-shadow: @string;
14 | -moz-box-shadow: @string;
15 | box-shadow: @string;
16 | }
17 |
18 | .box-sizing (@type: border-box) {
19 | -webkit-box-sizing: @type;
20 | -moz-box-sizing: @type;
21 | box-sizing: @type;
22 | }
23 |
24 | .border(@color: #303030) {
25 | border: 1px solid @color;
26 | }
27 |
28 | .border-top(@color: #303030) {
29 | border-top: 1px solid @color;
30 | }
31 |
32 | .border-bottom(@color: #303030) {
33 | border-bottom: 1px solid @color;
34 | }
35 |
36 | .border-radius (@radius: 2px) {
37 | -webkit-border-radius: @radius;
38 | -moz-border-radius: @radius;
39 | border-radius: @radius;
40 | }
41 |
42 | .opacity (@opacity: 0.5) {
43 | opacity: @opacity;
44 | }
45 |
46 | .text-ellipsis() {
47 | text-overflow: ellipsis;
48 | overflow: hidden;
49 | white-space: nowrap;
50 | }
51 |
52 | .px2rem(@property, @value) {
53 | @property: @value +'rem';
54 | }
55 |
56 | @-webkit-keyframes masked-animation {
57 | 0% {
58 | background-position: 0 0
59 | }
60 |
61 | to {
62 | background-position: -100% 0
63 | }
64 | }
65 |
66 | @keyframes masked-animation {
67 | 0% {
68 | background-position: 0 0
69 | }
70 |
71 | to {
72 | background-position: -100% 0
73 | }
74 | }
--------------------------------------------------------------------------------
/source/css/less/_reward.less:
--------------------------------------------------------------------------------
1 | .reward {
2 | padding: 5px 0;
3 |
4 | .reward-wrap {
5 | position: relative;
6 | display: block;
7 | font-size: 30px;
8 | width: 62px;
9 | height: 62px;
10 | line-height: 60px;
11 | margin: 0 auto;
12 | cursor: pointer;
13 | text-align: center;
14 | vertical-align: middle;
15 | color: @reward_color;
16 | -webkit-user-select: none;
17 | .border(#d9d9d9);
18 | .box-shadow(0 0 2px #d9d9d9);
19 | .border-radius(50%);
20 |
21 | .reward-box {
22 | position: absolute;
23 | top: -220px;
24 | left: 50%;
25 | display: none;
26 | width: 350px;
27 | height: 200px;
28 | margin-left: -175px;
29 | padding: 15px;
30 | .border(#e6e6e6);
31 | background-color: #fff;
32 | .box-shadow(0 1px 1px 1px #efefef);
33 |
34 | span {
35 | display: inline-block;
36 | width: 150px;
37 | height: 150px;
38 |
39 | img {
40 | display: inline-block;
41 | float: left;
42 | width: 150px;
43 | height: 150px;
44 | margin: 0 auto;
45 | border: 0
46 | }
47 |
48 | b {
49 | font-size: 14px;
50 | line-height: 26px;
51 | display: block;
52 | text-align: center;
53 | color: #666
54 | }
55 | }
56 |
57 | &:before,
58 | &:after {
59 | position: absolute;
60 | content: '';
61 | border: 10px solid transparent;
62 | }
63 |
64 | &:before {
65 | bottom: -20px;
66 | left: 50%;
67 | margin-left: -10px;
68 | border-top-color: #e6e6e6
69 | }
70 |
71 | &:after {
72 | bottom: -19px;
73 | left: 50%;
74 | margin-left: -10px;
75 | border-top-color: #fff
76 | }
77 |
78 | }
79 |
80 | &:hover {
81 | color: #fff;
82 | background-color: @reward_color;
83 | .border(@reward_color);
84 | .transition();
85 |
86 | .reward-box {
87 | display: block;
88 | }
89 | }
90 | }
91 |
92 | .reward-tip {
93 | font-size: 18px;
94 | font-weight: 700;
95 | letter-spacing: 1px;
96 | color: #969696;
97 | margin: 15px auto;
98 | text-align: center;
99 | min-height: 24px;
100 | }
101 | }
--------------------------------------------------------------------------------
/source/css/less/_scrollbar.less:
--------------------------------------------------------------------------------
1 | ::-webkit-scrollbar {
2 | -webkit-appearance: none;
3 | height: 5px;
4 | width: 5px;
5 | }
6 |
7 | ::-webkit-scrollbar-track {
8 | background-color: inherit;
9 | }
10 |
11 | ::-webkit-scrollbar-thumb {
12 | .border-radius();
13 | background-color: rgba(1, 1, 1, 0.12);
14 | }
15 |
16 | ::-webkit-scrollbar-thumb:hover {
17 | background-color: rgba(1, 1, 1, 0.22);
18 | }
--------------------------------------------------------------------------------
/source/css/less/_style.less:
--------------------------------------------------------------------------------
1 | /*! style.css v1.2.0 | MIT License | github.com/shenliyang */
2 |
3 | /*====================================================
4 | COLOR VARIABLE FOR THEME
5 | ====================================================*/
6 |
7 | @import "_variable";
8 |
9 | /*====================================================
10 | MIXINS FOR THEME
11 | ====================================================*/
12 |
13 | @import "_mixins";
14 |
15 | /*====================================================
16 | common styles
17 | ====================================================*/
18 | html {
19 | color: @grey5_color;
20 | line-height: 1.75em;
21 | background: #ebebeb;
22 | position: relative;
23 | font-family: @font_family_1;
24 | }
25 |
26 | body {
27 | color: @grey5_color;
28 | line-height: 1.75em;
29 | background: #ebebeb;
30 | position: relative;
31 | font-family: @font_family_1;
32 | }
33 |
34 | h1,
35 | h2,
36 | h3,
37 | h4,
38 | h5,
39 | h6 {
40 | font-weight: 400;
41 | color: @grey3_color;
42 | }
43 |
44 | h1 {
45 | font-size: 2em;
46 | }
47 |
48 | h2 {
49 | font-size: 1.5em;
50 | }
51 |
52 | h3 {
53 | font-size: 1.2em;
54 | }
55 |
56 | h4 {
57 | font-size: 1em;
58 | }
59 |
60 | h5 {
61 | font-size: 0.75em;
62 | }
63 |
64 | h6 {
65 | font-size: 0.5em;
66 | }
67 |
68 | a {
69 | color: @theme_color;
70 | outline: none;
71 |
72 | &:hover {
73 | color: @theme_color;
74 | }
75 |
76 | &:active {
77 | outline: none;
78 | }
79 |
80 | &:focus {
81 | outline: none;
82 | }
83 |
84 | img {
85 | outline: none;
86 | }
87 | }
88 |
89 | .btn {
90 | padding: 7px 14px;
91 | .border-radius;
92 | }
93 |
94 | .btn-default {
95 | .border(@theme_color);
96 | background: @theme_color;
97 | color: @white_color;
98 | .transition(all 0.2s ease-in-out);
99 |
100 | &:hover {
101 | .border;
102 | background: @grey3_color;
103 | color: @white_color;
104 | }
105 |
106 | &:focus {
107 | outline: none;
108 | }
109 | }
110 |
111 | .btn-default[disabled] {
112 | .border;
113 | background: @grey3_color;
114 | color: @white_color;
115 | }
116 |
117 | input[type="search"] {
118 | box-sizing: border-box;
119 | width: 75%;
120 | height: 32px;
121 | line-height: 16px;
122 | padding: 7px 11px 7px 7px;
123 | border-radius: 4px 0 0 4px;
124 | margin-bottom: 1em;
125 | .border(#ebebeb);
126 | .transition;
127 |
128 | &:focus {
129 | .border(@theme_color);
130 | outline: none;
131 | }
132 | }
133 |
134 | input[type="text"] {
135 | padding: 7px 7px;
136 | .border(#ebebeb);
137 | .border-radius;
138 | .transition;
139 |
140 | &:focus {
141 | .border(@theme_color);
142 | outline: none;
143 | }
144 | }
145 |
146 | input[type="url"] {
147 | padding: 7px 7px;
148 | .border(#ebebeb);
149 | .border-radius;
150 | .transition;
151 |
152 | &:focus {
153 | .border(@theme_color);
154 | outline: none;
155 | }
156 | }
157 |
158 | input[type="email"] {
159 | padding: 7px 7px;
160 | .border(#ebebeb);
161 | .border-radius;
162 | .transition;
163 |
164 | &:focus {
165 | .border(@theme_color);
166 | outline: none;
167 | }
168 | }
169 |
170 | textarea {
171 | padding: 7px 7px;
172 | .border(#ebebeb);
173 | .border-radius;
174 | .transition;
175 |
176 | &:focus {
177 | .border(@theme_color);
178 | outline: none;
179 | }
180 | }
181 |
182 | blockquote {
183 | border-left: 4px solid @theme_color;
184 | background-color: @greyish_color;
185 | }
186 |
187 | pre {
188 | padding: 0;
189 | background: none;
190 | border: none;
191 | }
192 |
193 | &::-moz-selection {
194 | color: @white_color;
195 | background: @theme_color;
196 | text-shadow: none;
197 | }
198 |
199 | &::selection {
200 | color: @white_color;
201 | background: @theme_color;
202 | text-shadow: none;
203 | }
204 |
205 | .ie {
206 | position: fixed;
207 | z-index: 9999;
208 | left: 0;
209 | top: 0;
210 | width: 100%;
211 | height: 70px;
212 | text-align: center;
213 | line-height: 70px;
214 | background-color: @greyish_color;
215 | color: @warn_color;
216 | .border-bottom();
217 | .text-ellipsis();
218 | }
219 |
220 | #process {
221 | position: fixed;
222 | width: 0;
223 | height: 2px;
224 | background-color: @theme_color;
225 | top: -1px;
226 | left: 0;
227 | .border-radius;
228 | .transition(width 1s ease);
229 | z-index: 99;
230 | }
231 |
232 | .carousel {
233 | margin-bottom: 20px;
234 |
235 | img {
236 | width: 100%;
237 | }
238 | }
239 |
240 | /*====================================================
241 | header
242 | ====================================================*/
243 | .main-header {
244 | position: relative;
245 | text-align: center;
246 | line-height: 0;
247 | height: 180px;
248 | width: 100%;
249 | background: @white_color url(http://7xpw2b.com1.z0.glb.clouddn.com/hexo-sinppet/img/banner.jpg);
250 | background-repeat: repeat;
251 | overflow: hidden;
252 |
253 | .banneriframe {
254 | width: 100%;
255 | height: 100%;
256 | border-width: 0px;
257 | }
258 |
259 | .main-header-box {
260 | position: relative;
261 | width: 100%;
262 | padding-top: 30px;
263 |
264 | a.header-avatar {
265 | img {
266 | width: 82px;
267 | height: 82px;
268 | max-width: 100%;
269 | border-radius: 50%;
270 | }
271 |
272 | &:hover {
273 | text-decoration: none;
274 | }
275 | }
276 |
277 | .branding {
278 | padding-top: 15px;
279 |
280 | h2 {
281 | font-family: @font_family_5;
282 | width: 320px;
283 | margin: 0 auto;
284 | letter-spacing: 3px;
285 | color: @theme_color;
286 | .text-ellipsis();
287 | background-image: -webkit-linear-gradient(left, #cddc39, #e67e22 25%, #cddc39 50%, #e67e22 75%, #cddc39) !important;
288 | -webkit-text-fill-color: transparent !important;
289 | -webkit-background-clip: text !important;
290 | background-size: 200% 100% !important;
291 | animation: masked-animation 2s infinite linear !important;
292 |
293 | &:hover {
294 | animation: masked-animation 1s infinite linear !important;
295 | text-decoration: none;
296 | }
297 | }
298 | }
299 | }
300 | }
301 |
302 | .home-template {
303 | .main-header {
304 | padding-top: 62px;
305 | padding-bottom: 62px;
306 | background-repeat: no-repeat;
307 | background-position: center 20%;
308 | -webkit-background-size: cover;
309 | background-size: cover;
310 | }
311 | }
312 |
313 | /* main-navigation */
314 | .main-navigation {
315 | text-align: center;
316 | background: @white_color;
317 | .border-top(#ebebeb);
318 | margin-bottom: 20px;
319 | border-bottom: 2px solid #e1e1e1;
320 |
321 | .navbar-collapse {
322 | border-top: 1px solid #ebebeb
323 | }
324 |
325 | .navbar-brand {
326 | max-width: 90%;
327 | .text-ellipsis();
328 | padding: 19px 0 0 0;
329 | font-size: 14px;
330 | color: @grey5_color;
331 | display: none;
332 | }
333 |
334 | .menu {
335 | padding: 0;
336 | margin: 0;
337 |
338 | li {
339 | list-style: none;
340 | display: inline-block;
341 | position: relative;
342 |
343 | a {
344 | color: @grey5_color;
345 | line-height: 4em;
346 | display: block;
347 | padding: 0 21px;
348 | }
349 |
350 | &:hover {
351 | >a {
352 | color: @theme_color;
353 | text-decoration: none;
354 | }
355 |
356 | ul {
357 | visibility: visible;
358 | opacity: 1;
359 | filter: alpha(opacity=100);
360 | top: 100%;
361 | }
362 | }
363 |
364 | ul {
365 | visibility: hidden;
366 | background: @white_color;
367 | text-align: left;
368 | padding: 7px 0px;
369 | margin: 0;
370 | position: absolute;
371 | left: 0;
372 | top: 120%;
373 | width: 200px;
374 | z-index: 999;
375 | opacity: 0;
376 | filter: alpha(opacity=0);
377 | .transition(all .2s ease);
378 |
379 | li {
380 | display: block;
381 | margin: 0;
382 |
383 | a {
384 | line-height: 2.5em;
385 | color: @grey5_color;
386 | }
387 | }
388 |
389 | &:hover {
390 | >a {
391 | color: @theme_color;
392 | }
393 | }
394 | }
395 | }
396 |
397 | li.nav-current {
398 | border-bottom: 2px solid @theme_color;
399 | margin-bottom: -2px;
400 | }
401 | }
402 |
403 | .navbar-header {
404 | text-align: center;
405 |
406 | i {
407 | height: 56px;
408 | line-height: 56px;
409 | font-size: 2em;
410 | cursor: pointer;
411 |
412 | &:hover {
413 | color: @theme_color
414 | }
415 | }
416 | }
417 | }
418 |
419 | /*====================================================
420 | main post area
421 | ====================================================*/
422 | #main {
423 | background: @white_color;
424 | padding: 10px 0;
425 | margin-bottom: 10px;
426 | }
427 |
428 | .main-content {
429 | .breadcrumb {
430 | padding-left: 20px;
431 | font-size: 16px;
432 | line-height: 2em;
433 | }
434 | }
435 |
436 | .post {
437 | padding: 20px;
438 | background: @white_color;
439 | margin-bottom: 15px;
440 | position: relative;
441 | overflow: hidden;
442 |
443 | .featured {
444 | position: absolute;
445 | background: @theme_color;
446 | color: @white_color;
447 | text-align: center;
448 | top: -12px;
449 | right: -32px;
450 | width: 80px;
451 | height: 40px;
452 | line-height: 54px;
453 | transform: rotate(45deg);
454 |
455 | i {
456 | transform: rotate(-45deg);
457 | }
458 | }
459 |
460 | .post-head {
461 | margin-bottom: 0.5em;
462 | text-align: center;
463 |
464 | .post-title {
465 | font-size: 1.5em;
466 | line-height: 1.35em;
467 | margin: 0;
468 |
469 | a {
470 | color: @grey3_color;
471 |
472 | &:hover {
473 | text-decoration: none;
474 | color: @theme_color;
475 | }
476 |
477 | &:focus {
478 | text-decoration: none;
479 | color: @theme_color;
480 | }
481 | }
482 | }
483 |
484 | p.warning {
485 | color: @warn_color;
486 | }
487 |
488 | .post-meta {
489 | color: @sepia_color;
490 | margin: 5px 0;
491 |
492 | span {
493 | margin-right: 5px;
494 | white-space: nowrap;
495 |
496 | a {
497 | color: @sepia_color;
498 | margin-left: 3px;
499 |
500 | &:hover {
501 | color: @theme_color;
502 | }
503 | }
504 | }
505 | }
506 | }
507 |
508 | .post-media {
509 | position: relative;
510 | margin-right: 15px;
511 | width: 220px;
512 | height: 160px;
513 | float: left;
514 | overflow: hidden;
515 |
516 | img {
517 | width: 100%;
518 | height: 100%;
519 | }
520 | }
521 |
522 | .post-content {
523 | .home-post-head {
524 | text-align: left;
525 | }
526 |
527 | p.brief {
528 | overflow: hidden;
529 | color: @black6_color;
530 | }
531 | }
532 |
533 | .post-body {
534 | margin-top: 15px;
535 | padding: 25px 0;
536 | border-top: 1px solid #eee;
537 | overflow: hidden;
538 |
539 | p {
540 | font-size: 1em;
541 | line-height: 1.5;
542 | word-break: break-all;
543 |
544 | img {
545 | max-width: 100%;
546 | }
547 | }
548 | }
549 |
550 | .post-footer {
551 | margin-top: 15px;
552 | padding-top: 15px;
553 | border-top: 1px solid #ebebeb;
554 |
555 | .tag-list {
556 | color: @sepia_color;
557 | line-height: 28px;
558 |
559 | .post-meta {
560 | margin-top: 5px;
561 |
562 | .fa-wrap {
563 | margin-right: 10px;
564 | }
565 | }
566 |
567 | .tags-meta {
568 | a {
569 | &:nth-child(n+2) {
570 | margin-left: 4px;
571 | }
572 | }
573 | }
574 |
575 | a {
576 | color: @sepia_color;
577 |
578 | &:hover {
579 | color: @theme_color;
580 | }
581 | }
582 | }
583 |
584 | .post-permalink {
585 | text-align: right;
586 | }
587 | }
588 | }
589 |
590 | /*====================================================
591 | main post content
592 | ====================================================*/
593 | .post-content {
594 | font: 400 16px/1.62 "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", sans-serif;
595 | color: @black3_color;
596 |
597 | h1 {
598 | font-family: @font_family_2;
599 | color: @black3_color;
600 | font-size: 1.8em;
601 | margin: 0.67em 0;
602 | }
603 |
604 | h2 {
605 | font-family: @font_family_2;
606 | color: @black3_color;
607 | font-size: 1.5em;
608 | margin: 0.83em 0;
609 | }
610 |
611 | h3 {
612 | font-family: @font_family_2;
613 | color: @black3_color;
614 | font-size: 1.17em;
615 | margin: 1em 0;
616 | }
617 |
618 | h4 {
619 | font-family: @font_family_2;
620 | color: @black3_color;
621 | font-size: 1em;
622 | margin: 1.6em 0 1em 0;
623 | }
624 |
625 | h5 {
626 | font-family: @font_family_2;
627 | color: @black3_color;
628 | font-size: 1em;
629 | margin: 1.6em 0 1em 0;
630 | }
631 |
632 | h6 {
633 | font-family: @font_family_2;
634 | color: @black3_color;
635 | font-size: 1em;
636 | margin: 1.6em 0 1em 0;
637 | font-weight: 500;
638 | }
639 |
640 | >h1 {
641 | margin-top: 0;
642 | font-size: 2em;
643 | }
644 |
645 | p {
646 | font-size: 15px;
647 | }
648 |
649 | a {
650 | word-wrap: break-word;
651 |
652 | img {
653 | border: none;
654 | }
655 | }
656 |
657 | strong {
658 | font-weight: 700;
659 | color: @black3_color;
660 | }
661 |
662 | b {
663 | font-weight: 700;
664 | color: @black3_color;
665 | }
666 |
667 | em {
668 | font-style: italic;
669 | color: @black3_color;
670 | }
671 |
672 | i {
673 | font-style: italic;
674 | color: @black3_color;
675 | }
676 |
677 | img {
678 | max-width: 100%;
679 | height: auto;
680 | margin: 0.2em 0;
681 | }
682 |
683 | figure {
684 | position: relative;
685 | clear: both;
686 | outline: 0;
687 | margin: 10px 0;
688 |
689 | img {
690 | display: block;
691 | max-width: 100%;
692 | margin: auto auto 4px;
693 | -moz-box-sizing: border-box;
694 | -webkit-box-sizing: border-box;
695 | box-sizing: border-box;
696 | }
697 |
698 | figcaption {
699 | position: relative;
700 | width: 100%;
701 | text-align: center;
702 | left: 0;
703 | margin-top: 10px;
704 | font-weight: 400;
705 | font-size: 14px;
706 | color: @black6_color;
707 |
708 | a {
709 | text-decoration: none;
710 | color: @black6_color;
711 | }
712 | }
713 |
714 | iframe {
715 | margin: auto;
716 | }
717 | }
718 |
719 | hr {
720 | border-top: #dededc 1px solid;
721 | }
722 |
723 | blockquote {
724 | margin: 0 0 1.64em 0;
725 | border-left: 3px solid @theme_color;
726 | padding-left: 12px;
727 | color: @black6_color;
728 |
729 | a {
730 | color: @black6_color;
731 | }
732 | }
733 |
734 | ul {
735 | margin: 0 0 24px 6px;
736 | padding-left: 16px;
737 | list-style-type: square;
738 | }
739 |
740 | ol {
741 | margin: 0 0 24px 6px;
742 | padding-left: 16px;
743 | list-style-type: decimal;
744 | }
745 |
746 | li {
747 | margin-bottom: 0.2em;
748 |
749 | ul {
750 | margin-top: 0;
751 | margin-bottom: 0;
752 | margin-left: 14px;
753 | list-style-type: disc;
754 |
755 | ul {
756 | list-style-type: circle;
757 | }
758 | }
759 |
760 | ol {
761 | margin-top: 0;
762 | margin-bottom: 0;
763 | margin-left: 14px;
764 | }
765 |
766 | p {
767 | margin: 0.4em 0 0.6em;
768 | }
769 | }
770 |
771 | .unstyled {
772 | list-style-type: none;
773 | margin: 0;
774 | padding: 0;
775 | }
776 |
777 | code {
778 | color: @grey8_color;
779 | font-size: 0.96em;
780 | background-color: @greyish_color;
781 | padding: 1px 2px;
782 | .border(#dadada);
783 | .border-radius;
784 | font-family: @font_family_3;
785 | word-wrap: break-word;
786 | }
787 |
788 | tt {
789 | color: @grey8_color;
790 | font-size: 0.96em;
791 | background-color: @greyish_color;
792 | padding: 1px 2px;
793 | .border(#dadada);
794 | .border-radius;
795 | font-family: @font_family_3;
796 | word-wrap: break-word;
797 | }
798 |
799 | pre {
800 | margin: 1.64em 0;
801 | border: none;
802 | border-left: 3px solid #dadada;
803 | padding-left: 10px;
804 | overflow: auto;
805 | line-height: 1.5;
806 | font-family: @font_family_3;
807 | color: @grey8_color;
808 | background-color: @greyish_color;
809 |
810 | code {
811 | color: @grey8_color;
812 | border: none;
813 | background: none;
814 | padding: 0;
815 | }
816 |
817 | tt {
818 | color: @grey8_color;
819 | border: none;
820 | background: none;
821 | padding: 0;
822 | }
823 | }
824 |
825 | table {
826 | width: 100%;
827 | max-width: 100%;
828 | border-collapse: collapse;
829 | border-spacing: 0;
830 | margin-bottom: 1.5em;
831 | font-size: 0.96em;
832 | .box-sizing;
833 | table-layout: fixed;
834 | word-wrap: break-word;
835 | }
836 |
837 | th {
838 | text-align: left;
839 | padding: 4px 8px 4px 10px;
840 | .border(#dadada);
841 | }
842 |
843 | td {
844 | text-align: left;
845 | padding: 4px 8px 4px 10px;
846 | .border(#dadada);
847 | vertical-align: top;
848 | }
849 |
850 | tr {
851 | &:nth-child(even) {
852 | background-color: @greyish_color;
853 | }
854 | }
855 |
856 | iframe {
857 | display: block;
858 | max-width: 100%;
859 | margin-bottom: 30px;
860 | }
861 | }
862 |
863 | .windows {
864 | .post-content {
865 | font-size: 16px;
866 | font-family: @font_family_4;
867 | }
868 | }
869 |
870 | /*====================================================
871 | pagination
872 | ====================================================*/
873 | .pagination {
874 | margin: 30px 0;
875 | text-align: center;
876 | display: block;
877 |
878 | a {
879 | background: @white_color;
880 | color: @black9_color;
881 | text-align: center;
882 | display: inline-block;
883 | .border-radius;
884 |
885 | &:hover {
886 | background: @theme_color;
887 | color: @white_color;
888 | text-decoration: none;
889 | }
890 |
891 | i {
892 | width: 36px;
893 | height: 36px;
894 | line-height: 36px;
895 | }
896 | }
897 |
898 | .prev {
899 | margin: 0 5px;
900 | }
901 |
902 | .next {
903 | margin: 0 5px;
904 | }
905 |
906 | .page-number {
907 | margin: 0 3px;
908 | display: inline-block;
909 | line-height: 36px;
910 | padding: 0 14px;
911 | .border-radius;
912 | }
913 |
914 | .current {
915 | background: @theme_color;
916 | color: @white_color;
917 | }
918 | }
919 |
920 | /*====================================================
921 | other: about and comment
922 | ====================================================*/
923 | #comments {
924 | background-color: @white_color;
925 | padding: 20px;
926 | margin-bottom: 20px;
927 | }
928 |
929 | #comments .v {
930 | .vheader {
931 | .vinput {
932 | border: none;
933 | .border-bottom(#f0f0f0);
934 | .border-radius(0);
935 | font-size: .9em;
936 | .transition();
937 |
938 | &:focus {
939 | .border-bottom(@theme_color);
940 | }
941 |
942 | &:hover {
943 | .border-bottom(@theme_color);
944 | }
945 | }
946 | }
947 |
948 | .veditor {
949 | font-size: 1em;
950 | }
951 |
952 | .vcontrol {
953 | .vbtn {
954 | .border-radius();
955 | padding: .5rem 2rem;
956 | color: @grey8_color;
957 |
958 | &:hover {
959 | color: @theme_color;
960 | border-color: @theme_color;
961 | }
962 | }
963 | }
964 |
965 | .item3 {
966 | input {
967 | width: 31%;
968 | margin: 0 1%;
969 | }
970 | }
971 |
972 | .item2 {
973 | input {
974 | width: 48%;
975 | margin: 0 1%;
976 | }
977 | }
978 | }
979 |
980 | /* prev and next link */
981 | .prev-next-wrap {
982 | margin-bottom: 25px;
983 | text-align: center;
984 |
985 | .pre-post {
986 | float: left;
987 | }
988 |
989 | .next-post {
990 | float: right;
991 | }
992 | }
993 |
994 | .sidebar {
995 | .widget {
996 | background: @white_color;
997 | padding: 16px 25px;
998 |
999 | ul {
1000 | padding: 0;
1001 |
1002 | li {
1003 | list-style: none;
1004 |
1005 | &.archive-list-item {
1006 | width: 50%;
1007 | display: inline-block;
1008 | }
1009 | }
1010 | }
1011 |
1012 | .archive-list-count,
1013 | .category-list-count {
1014 | margin-left: 4px;
1015 |
1016 | &:before {
1017 | content: "(";
1018 | }
1019 |
1020 | &:after {
1021 | content: ")";
1022 | }
1023 | }
1024 | }
1025 |
1026 | .widget-box {
1027 | background: @white_color;
1028 | padding: 0 25px 16px;
1029 | }
1030 | }
1031 |
1032 | .main-footer {
1033 | background: #202020;
1034 | color: @sepia_color;
1035 | }
1036 |
1037 | /*====================================================
1038 | sidebar
1039 | ====================================================*/
1040 | .widget {
1041 | margin-bottom: 15px;
1042 |
1043 | .title {
1044 | margin-top: 0;
1045 | padding-bottom: 7px;
1046 | border-bottom: 1px solid #ebebeb;
1047 | margin-bottom: 21px;
1048 | position: relative;
1049 |
1050 | &:after {
1051 | content: "";
1052 | width: 90px;
1053 | height: 1px;
1054 | background: @theme_color;
1055 | position: absolute;
1056 | left: 0;
1057 | bottom: -1px;
1058 | }
1059 | }
1060 |
1061 | .tag-cloud {
1062 | a {
1063 | .border(#ebebeb);
1064 | padding: 2px 7px;
1065 | color: @sepia_color;
1066 | font-size: 1em !important;
1067 | line-height: 1.5em;
1068 | display: inline-block;
1069 | margin: 0 5px 5px 0;
1070 | .transition;
1071 | .text-ellipsis();
1072 |
1073 | &:hover {
1074 | color: @white_color;
1075 | background-color: @theme_color;
1076 | .border(@theme_color);
1077 | text-decoration: none;
1078 | }
1079 | }
1080 | }
1081 |
1082 | .social a {
1083 | display: inline-block;
1084 | text-align: center;
1085 | width: 40px;
1086 | height: 40px;
1087 | line-height: 45px;
1088 | color: @white_color;
1089 | background: @grey8_color;
1090 | .border-radius(3px);
1091 | margin-right: 10px;
1092 | margin-bottom: 10px;
1093 |
1094 | &:hover {
1095 | background: @theme_color;
1096 | .transition;
1097 | }
1098 |
1099 | &:last-child {
1100 | margin-right: 0px;
1101 | }
1102 |
1103 | i {
1104 | font-size: 20px;
1105 | }
1106 | }
1107 |
1108 | .friends-link {
1109 | a {
1110 | margin-right: 15px
1111 | }
1112 | }
1113 |
1114 | #search-form {
1115 | position: relative;
1116 | width: 100%;
1117 |
1118 | .search-form-submit {
1119 | float: right;
1120 | width: 25%;
1121 | height: 32px;
1122 | background: @theme_color;
1123 | color: #fff;
1124 | border-radius: 0 4px 4px 0;
1125 | .border(@theme_color);
1126 | }
1127 |
1128 | ;
1129 |
1130 | #result-mask {
1131 | position: fixed;
1132 | left: 0;
1133 | top: 0
1134 | }
1135 |
1136 | ;
1137 |
1138 | .search-form-submit {
1139 | &:focus {
1140 | outline: none;
1141 | }
1142 |
1143 | ;
1144 | }
1145 |
1146 | #result-wrap {
1147 | position: absolute;
1148 | box-sizing: content-box;
1149 | top: 45px;
1150 | left: -50px;
1151 | z-index: 6;
1152 | width: 120%;
1153 | padding: 20px;
1154 | color: @black_color;
1155 | background: @white_color;
1156 | border-radius: 4px;
1157 | box-shadow: 1px 2px 2px #ccc;
1158 | .border(#ccc);
1159 |
1160 | &:before {
1161 | content: '';
1162 | position: absolute;
1163 | display: inline-block;
1164 | border-width: 0 12px 12px 12px;
1165 | border-style: solid;
1166 | border-color: #ccc transparent;
1167 | right: 80px;
1168 | top: -12px
1169 | }
1170 |
1171 | ;
1172 |
1173 | &:after {
1174 | content: '';
1175 | position: absolute;
1176 | display: inline-block;
1177 | border-width: 0 12px 12px 12px;
1178 | border-style: solid;
1179 | border-color: #fff transparent;
1180 | right: 80px;
1181 | top: -10px
1182 | }
1183 |
1184 | ;
1185 |
1186 | #search-result {
1187 | width: 100%;
1188 | box-sizing: content-box;
1189 | padding-right: 20px;
1190 | margin-right: -20px;
1191 | max-height: 400px;
1192 | overflow-y: auto;
1193 |
1194 | .tips {
1195 | text-align: center;
1196 | }
1197 |
1198 | .item {
1199 | padding: 8px 0;
1200 |
1201 | &:last-child {
1202 | .content {
1203 | border-bottom: 0;
1204 | }
1205 | }
1206 |
1207 | ;
1208 |
1209 | a {
1210 | &:hover {
1211 | text-decoration: none;
1212 | }
1213 | }
1214 |
1215 | .title {
1216 | line-height: 1.25;
1217 | font-size: 16px;
1218 | .text-ellipsis();
1219 | margin-bottom: 0px;
1220 | color: @black_color;
1221 | border: 0;
1222 |
1223 | &:hover {
1224 | color: @theme_color;
1225 | }
1226 |
1227 | ;
1228 |
1229 | b {
1230 | margin: 0 2px;
1231 | color: @theme_color;
1232 | }
1233 | }
1234 |
1235 | .content {
1236 | font-size: 14px;
1237 | color: @black9_color;
1238 | padding-bottom: 10px;
1239 | .border-bottom(#ccc);
1240 |
1241 | b {
1242 | color: @theme_color;
1243 | margin: 0 2px;
1244 | }
1245 | }
1246 | }
1247 | }
1248 | }
1249 | }
1250 |
1251 | .notification {
1252 | img {
1253 | max-width: 100%;
1254 | }
1255 | }
1256 | }
1257 |
1258 | /*====================================================
1259 | toc
1260 | ====================================================*/
1261 | #article-toc {
1262 | padding-top: 1em;
1263 | background-color: @white_color;
1264 | top: 0;
1265 | bottom: 70px;
1266 | overflow-y: auto;
1267 |
1268 | ol {
1269 | list-style: none;
1270 | }
1271 |
1272 | .toc {
1273 | padding-left: 2em;
1274 |
1275 | .toc-item {
1276 | .toc-link {
1277 | display: block;
1278 | color: @black3_color;
1279 | text-decoration: none;
1280 | padding: 4px 0;
1281 | line-height: 1.25em;
1282 | position: relative;
1283 | width: 100%;
1284 | .text-ellipsis();
1285 |
1286 | &:hover {
1287 | color: @theme_color;
1288 | .transition(.15s);
1289 | }
1290 | }
1291 |
1292 | &.toc-level-2 {
1293 | &>.toc-link {
1294 | font-size: 15px;
1295 | }
1296 | }
1297 | }
1298 | }
1299 | }
1300 |
1301 | /*====================================================
1302 | copyright
1303 | ====================================================*/
1304 | .copyright {
1305 | background: #111;
1306 | font-size: 13px;
1307 | text-align: center;
1308 | color: @black6_color;
1309 | padding-top: 20px;
1310 | padding-bottom: 20px;
1311 | border-top: 1px solid @grey3_color;
1312 |
1313 | span {
1314 | margin: 0 .5em;
1315 | }
1316 |
1317 | a {
1318 | color: @black6_color;
1319 | }
1320 | }
1321 |
1322 | /*====================================================
1323 | back-to-top and toc-btn
1324 | ====================================================*/
1325 | #back-to-top,
1326 | #toc-btn {
1327 | position: fixed;
1328 | right: 30px;
1329 | bottom: 30px;
1330 | background-color: @sepia_color;
1331 | color: @white_color;
1332 | text-align: center;
1333 | .border-radius;
1334 | z-index: 1;
1335 | cursor: pointer;
1336 |
1337 | &:hover {
1338 | background: @theme_color;
1339 | .transition()
1340 | }
1341 |
1342 | i {
1343 | width: 30px;
1344 | height: 30px;
1345 | line-height: 30px
1346 | }
1347 | }
1348 |
1349 | #toc-btn {
1350 | bottom: 65px;
1351 | }
1352 |
1353 | /*====================================================
1354 | post reward
1355 | ====================================================*/
1356 |
1357 | @import "_reward";
1358 |
1359 | /*====================================================
1360 | timeline
1361 | ====================================================*/
1362 |
1363 | @import "_timeline";
1364 |
1365 | /*====================================================
1366 | highlight
1367 | ====================================================*/
1368 |
1369 | @import "_highlight";
1370 |
1371 | /*====================================================
1372 | scrollbar
1373 | ====================================================*/
1374 |
1375 | @import "_scrollbar";
1376 |
1377 | /*====================================================
1378 | media
1379 | ====================================================*/
1380 | @media screen and (max-width: 767px) {
1381 | .main-navigation {
1382 | text-align: left;
1383 |
1384 | .navbar-brand {
1385 | display: block;
1386 | }
1387 |
1388 | .menu {
1389 | li {
1390 | display: block;
1391 | width: 33%;
1392 | float: left;
1393 |
1394 | &:hover {
1395 | >a {
1396 | color: @theme_color;
1397 | text-decoration: none;
1398 | }
1399 | }
1400 |
1401 | a {
1402 | padding: 0;
1403 | }
1404 |
1405 | ul {
1406 | visibility: visible;
1407 | padding: 0px 0px 0px 20px;
1408 | margin: 0;
1409 | position: relative;
1410 | top: 0;
1411 | width: 100%;
1412 | opacity: 1;
1413 | filter: alpha(opacity=100);
1414 | }
1415 | }
1416 | }
1417 | }
1418 |
1419 | .prev-next-wrap {
1420 | margin: 15px;
1421 |
1422 | a {
1423 | display: block;
1424 | }
1425 | }
1426 |
1427 | .post {
1428 | .post-head {
1429 | text-align: left;
1430 |
1431 | h1 {
1432 | line-height: 1.25em;
1433 | }
1434 | }
1435 |
1436 | .post-content {
1437 | p.brief {
1438 | .text-ellipsis();
1439 | }
1440 | }
1441 |
1442 | .post-media {
1443 | float: none;
1444 | width: 100%;
1445 | height: auto;
1446 | margin: 0 0 1em 0;
1447 | }
1448 | }
1449 |
1450 | .post-footer,
1451 | #article-toc {
1452 | display: none;
1453 | }
1454 |
1455 | .content-wrap {
1456 | .m-post {
1457 | padding: 0px;
1458 | }
1459 | }
1460 |
1461 | .widget {
1462 | #search-form {
1463 | #result-wrap {
1464 | left: -25px;
1465 | width: 100%;
1466 | }
1467 | }
1468 | }
1469 | }
1470 |
1471 | @media screen and (min-width: 768px) {
1472 | .nav-toggle-button {
1473 | display: none;
1474 | }
1475 | }
1476 |
1477 | @media screen and (min-width: 1100px) {
1478 | .post-content {
1479 | blockquote {
1480 | padding-left: 20px;
1481 | border-width: 4px;
1482 |
1483 | blockquote {
1484 | margin-left: 0;
1485 | }
1486 | }
1487 |
1488 | figure {
1489 | img {
1490 | margin: 0 0 4px;
1491 | }
1492 |
1493 | figcaption {
1494 | position: absolute;
1495 | left: -172px;
1496 | width: 150px;
1497 | top: 0;
1498 | text-align: right;
1499 | margin-top: 0;
1500 |
1501 | &:before {
1502 | width: 25%;
1503 | margin-left: 75%;
1504 | border-top: 1px solid #dededc;
1505 | display: block;
1506 | content: "";
1507 | margin-bottom: 10px;
1508 | }
1509 | }
1510 | }
1511 | }
1512 | }
--------------------------------------------------------------------------------
/source/css/less/_timeline.less:
--------------------------------------------------------------------------------
1 | .timebox {
2 | position: relative;
3 | width: 100%;
4 | padding: 0 20px;
5 | margin: 20px auto;
6 | background: url(../img/timeline.gif) repeat-y 207px 0;
7 | overflow: hidden;
8 | }
9 |
10 | .timeline {
11 | h2 {
12 | height: 44px;
13 | line-height: 44px;
14 | font-size: 30px;
15 | color: @black6_color;
16 | font-weight: bold;
17 | padding-left: 75px;
18 | margin-bottom: 25px;
19 | background: url(../img/timeline-clock.gif) #fff no-repeat 165px 0;
20 |
21 | img {
22 | vertical-align: -5px;
23 | }
24 | }
25 |
26 | ul {
27 | list-style: none;
28 | margin: 0;
29 | padding: 0;
30 |
31 | li {
32 | background: url(../img/timeline-dot.gif) no-repeat 180px 5px;
33 | padding-bottom: 20px;
34 | zoom: 1;
35 | .text-ellipsis();
36 |
37 | &:after {
38 | content: " ";
39 | display: block;
40 | height: 0;
41 | clear: both;
42 | visibility: hidden;
43 | }
44 |
45 | h3 {
46 | float: left;
47 | width: 168px;
48 | font-size: 20px;
49 | color: @black_color;
50 | text-align: right;
51 | padding-right: 15px;
52 | margin: 0;
53 |
54 | span {
55 | color: @black6_color;
56 | font-size: 12px;
57 | margin-left: 3px;
58 | }
59 | }
60 |
61 | a {
62 | padding-left: 41px;
63 | margin-top: -5px;
64 | font-weight: normal;
65 | font-size: 16px;
66 | color: @grey5_color;
67 |
68 | &:hover {
69 | text-decoration: none;
70 | color: @theme_color;
71 | }
72 | }
73 |
74 | }
75 | }
76 | }
77 |
78 | @media screen and (max-width: 500px) {
79 | .timebox {
80 | background-position: 97px 0;
81 | }
82 |
83 | .timeline {
84 | h2 {
85 | padding-left: 40%;
86 | background-position: 48px 0;
87 | }
88 |
89 | ul {
90 | li {
91 | background-position: 70px 5px;
92 |
93 | h3 {
94 | width: 68px
95 | }
96 | }
97 | }
98 | }
99 | }
--------------------------------------------------------------------------------
/source/css/less/_variable.less:
--------------------------------------------------------------------------------
1 | /* _variable.less */
2 |
3 | @theme_color: #e67e22;
4 | @white_color: #fff;
5 | @warn_color: #f0ad4e;
6 |
7 | @black_color: #333;
8 | @black3_color: @black_color;
9 | @black6_color: @black_color + #333;
10 | @black9_color: @black_color + #333;
11 |
12 | @grey_color: #303030;
13 | @grey3_color: @grey_color;
14 | @grey5_color: @grey_color + #202020;
15 | @grey8_color: @grey_color + #505050;
16 |
17 | @sepia_color: #959595;
18 | @greyish_color: #f9f9f9;
19 | @reward_color: #ff8140;
20 |
21 | @font_family_1: "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Hiragino Sans GB W3", "WenQuanYi Micro Hei", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
22 | @font_family_2: "Georgia", "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", "SimSun", sans-serif;
23 | @font_family_3: Menlo, Monaco, Consolas, "Courier New", monospace;
24 | @font_family_4: "Georgia", "SimSun", sans-serif;
25 | @font_family_5: "STXingkai", "KaiTi", "Microsoft YaHei", "SimSun", sans-serif;
--------------------------------------------------------------------------------
/source/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/favicon.ico
--------------------------------------------------------------------------------
/source/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/source/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/source/img/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/avatar.jpg
--------------------------------------------------------------------------------
/source/img/branding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/branding.png
--------------------------------------------------------------------------------
/source/img/head-img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/head-img.jpg
--------------------------------------------------------------------------------
/source/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/loading.gif
--------------------------------------------------------------------------------
/source/img/reward-wepay.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/reward-wepay.jpg
--------------------------------------------------------------------------------
/source/img/timeline-clock.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/timeline-clock.gif
--------------------------------------------------------------------------------
/source/img/timeline-dot.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/timeline-dot.gif
--------------------------------------------------------------------------------
/source/img/timeline.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shenliyang/hexo-theme-snippet/7a5613bc7cfc5a6dadcb17e11dd04aec1c68d5f9/source/img/timeline.gif
--------------------------------------------------------------------------------
/source/js/app.js:
--------------------------------------------------------------------------------
1 | /*!========================================================================
2 | * hexo-theme-snippet: app.js v1.0.0
3 | * ======================================================================== */
4 | window.onload = function () {
5 | var $body = document.body,
6 | $mnav = document.getElementById("mnav"), //获取导航三角图标
7 | $mainMenu = document.getElementById("main-menu"), //手机导航
8 | $process = document.getElementById("process"), //进度条
9 | $ajaxImgs = document.querySelectorAll(".img-ajax"), //图片懒加载
10 | $commentsCounter = document.getElementById("comments-count"),
11 | $gitcomment = document.getElementById("gitcomment"),
12 | $backToTop = document.getElementById("back-to-top"),
13 | $toc = document.getElementById("article-toc"),
14 | timer = null;
15 |
16 | //设备判断
17 | var isPC = true;
18 | (function (designPercent) {
19 | function params(u, p) {
20 | var m = new RegExp("(?:&|/?)" + p + "=([^&$]+)").exec(u);
21 | return m ? m[1] : "";
22 | }
23 | if (
24 | /iphone|ios|android|ipod/i.test(navigator.userAgent.toLowerCase()) ==
25 | true &&
26 | params(location.search, "from") != "mobile"
27 | ) {
28 | isPC = false;
29 | }
30 | })();
31 |
32 | //手机菜单导航
33 | $mnav.onclick = function () {
34 | var navOpen = $mainMenu.getAttribute("class");
35 | if (navOpen.indexOf("in") != "-1") {
36 | $mainMenu.setAttribute("class", "collapse navbar-collapse");
37 | } else {
38 | $mainMenu.setAttribute("class", "collapse navbar-collapse in");
39 | }
40 | };
41 |
42 | //首页文章图片懒加载
43 | function imgsAjax($targetEles) {
44 | if (!$targetEles) return;
45 | var _length = $targetEles.length;
46 | if (_length > 0) {
47 | var scrollBottom = getScrollTop() + window.innerHeight;
48 | for (var i = 0; i < _length; i++) {
49 | (function (index) {
50 | var $this = $targetEles[index];
51 | var $this_offsetZero =
52 | $this.getBoundingClientRect().top +
53 | window.pageYOffset -
54 | document.documentElement.clientTop;
55 | if (
56 | scrollBottom >= $this_offsetZero &&
57 | $this.getAttribute("data-src") &&
58 | $this.getAttribute("data-src").length > 0
59 | ) {
60 | if ($this.nodeName.toLowerCase() === "img") {
61 | $this.src = $this.getAttribute("data-src");
62 | $this.style.display = "block";
63 | } else {
64 | var imgObj = new Image();
65 | imgObj.onload = function () {
66 | $this.innerHTML = "";
67 | };
68 | imgObj.src = $this.getAttribute("data-src");
69 | $this.style.backgroundImage =
70 | "url(" + $this.getAttribute("data-src") + ")";
71 | }
72 | $this.removeAttribute("data-src"); //为了优化,移除
73 | }
74 | })(i);
75 | }
76 | }
77 | }
78 |
79 | //获取滚动高度
80 | function getScrollTop() {
81 | return $body.scrollTop || document.documentElement.scrollTop;
82 | }
83 | //滚动回调
84 | var scrollCallback = function () {
85 | if ($process) {
86 | $process.style.width =
87 | (getScrollTop() / ($body.scrollHeight - window.innerHeight)) * 100 +
88 | "%";
89 | }
90 | isPC && getScrollTop() >= 300
91 | ? $backToTop.removeAttribute("class", "hide")
92 | : $backToTop.setAttribute("class", "hide");
93 | imgsAjax($ajaxImgs);
94 | };
95 | scrollCallback();
96 |
97 | //监听滚动事件
98 | window.addEventListener("scroll", function () {
99 | if ($toc) {
100 | var top = $toc.offsetTop;
101 | var left = $toc.offsetLeft;
102 | var width = $toc.offsetWidth;
103 | if (getScrollTop() <= top) {
104 | $toc.style = "";
105 | } else {
106 | $toc.style.position = "fixed";
107 | $toc.style.top = "5px";
108 | $toc.style.left = left + "px";
109 | $toc.style.width = width + "px";
110 | }
111 | }
112 | clearTimeout(timer);
113 | timer = setTimeout(function fn() {
114 | scrollCallback();
115 | }, 200);
116 | });
117 |
118 | //返回顶部
119 | $backToTop.onclick = function () {
120 | cancelAnimationFrame(timer);
121 | timer = requestAnimationFrame(function fn() {
122 | var sTop = getScrollTop();
123 | if (sTop > 0) {
124 | $body.scrollTop = document.documentElement.scrollTop = sTop - 50;
125 | timer = requestAnimationFrame(fn);
126 | } else {
127 | cancelAnimationFrame(timer);
128 | }
129 | });
130 | };
131 | };
132 |
--------------------------------------------------------------------------------
/source/js/search.js:
--------------------------------------------------------------------------------
1 | (function () {
2 | var searchWord = document.getElementById("search-key"),
3 | searchLocal = document.getElementById("search-local"),
4 | searchForm = document.getElementById("search-form"),
5 | searchMask = document.getElementById("result-mask"),
6 | searchWrap = document.getElementById("result-wrap"),
7 | searchResult = document.getElementById("search-result"),
8 | searchTpl = document.getElementById("search-tpl").innerHTML,
9 | winWidth,
10 | winHeight,
11 | searchData;
12 | if (window.innerWidth) {
13 | winWidth = parseInt(window.innerWidth);
14 | } else if (document.body && document.body.clientWidth) {
15 | winWidth = parseInt(document.body.clientWidth);
16 | }
17 | if (window.innerHeight) {
18 | winHeight = parseInt(window.innerHeight);
19 | } else if (document.body && document.body.clientHeight) {
20 | winHeight = parseInt(document.body.clientHeight);
21 | }
22 | searchMask.style.width = winWidth + "px";
23 | searchMask.style.height = winHeight + "px";
24 |
25 | function tpl(html, data) {
26 | return html.replace(/\{\w+\}/g, function (str) {
27 | var prop = str.replace(/\{|\}/g, "");
28 | return data[prop] || "";
29 | });
30 | }
31 |
32 | function hasClass(obj, cls) {
33 | return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
34 | }
35 |
36 | function addClass(obj, cls) {
37 | if (!hasClass(obj, cls)) obj.className += " " + cls;
38 | }
39 |
40 | function removeClass(obj, cls) {
41 | if (hasClass(obj, cls)) {
42 | var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
43 | obj.className = obj.className.replace(reg, " ");
44 | }
45 | }
46 |
47 | function matcher(post, regExp) {
48 | return regtest(post.title, regExp) || regtest(post.text, regExp);
49 | }
50 |
51 | function regtest(raw, regExp) {
52 | regExp.lastIndex = 0;
53 | return regExp.test(raw);
54 | }
55 |
56 | function searchShow() {
57 | removeClass(searchWrap, "hide");
58 | removeClass(searchMask, "hide");
59 | }
60 |
61 | function searchHide() {
62 | addClass(searchWrap, "hide");
63 | addClass(searchMask, "hide");
64 | }
65 |
66 | function loadData(success) {
67 | if (!searchData) {
68 | var xhr = new XMLHttpRequest();
69 | xhr.open(
70 | "GET",
71 | document.getElementsByTagName("meta")["root"].content + "content.json",
72 | true
73 | );
74 | xhr.onload = function () {
75 | if (this.status >= 200 && this.status < 300) {
76 | var res = JSON.parse(this.response || this.responseText);
77 | searchData = res instanceof Array ? res : res.posts;
78 | success(searchData);
79 | } else {
80 | console.error(this.statusText);
81 | }
82 | };
83 | xhr.onerror = function () {
84 | console.error(this.statusText);
85 | };
86 | xhr.send();
87 | } else {
88 | success(searchData);
89 | }
90 | }
91 |
92 | function render(data) {
93 | var html = "";
94 | if (data.length) {
95 | html = data
96 | .map(function (post) {
97 | return tpl(searchTpl, {
98 | title: filter(post.title, "title"),
99 | path: post.path,
100 | content: filter(post.text, "content"),
101 | });
102 | })
103 | .join("");
104 | } else {
105 | if (searchWord.value == "") {
106 | searchHide();
107 | } else {
108 | html = '';
109 | }
110 | }
111 | searchResult.innerHTML = html;
112 | }
113 |
114 | function filter(art, type) {
115 | var keyword = searchWord.value;
116 | var index = art.indexOf(keyword);
117 | var artRe = art.replace(keyword, "" + keyword + "");
118 | if (type == "title") {
119 | return artRe;
120 | }
121 | if (type == "content" && index > 0) {
122 | return artRe.substr(index - 15, 45);
123 | }
124 | }
125 |
126 | function search(e) {
127 | var key = this.value.trim();
128 | if (!key) {
129 | render("");
130 | return;
131 | }
132 | var regExp = new RegExp(key.replace(/[ ]/g, "|"), "gmi");
133 | loadData(function (data) {
134 | var result = data.filter(function (post) {
135 | return matcher(post, regExp);
136 | });
137 | render(result);
138 | });
139 | e.preventDefault();
140 | searchShow();
141 | searchWord.onfocus = function () {
142 | searchShow();
143 | };
144 | }
145 | searchWord.onfocus = function () {
146 | searchWord.addEventListener("input", search);
147 | };
148 | searchMask.onclick = function () {
149 | searchHide();
150 | };
151 | })();
152 |
--------------------------------------------------------------------------------