This commit is contained in:
luojia65 2021-05-19 21:41:09 +08:00
parent 2a3b7a58ae
commit b437e56455
60 changed files with 8052 additions and 1 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
.DS_Store
*/.DS_Store
node_modules
_site

16
404.html Normal file
View File

@ -0,0 +1,16 @@
---
layout: default
description: "Sorry, Page Not Found :("
---
{% include header.html %}
<header class="g-banner np-banner {{ site.postPatterns | prepend: 'post-pattern-' }}" data-theme="{{ site.theme-color }}">
<div class="post-wrapper">
<h1>404</h1>
<span class="subheading">{{ page.description }}</span>
<a href="{{ site.nav.home }}" class="btn">Back to home</a>
</div>
</header>

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 liaokeyu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

455
README.md Normal file
View File

@ -0,0 +1,455 @@
## jekyll-theme-H2O
基于Jekyll的博客主题模板简洁轻量。
另外,还有此主题的[Ghost版本](https://github.com/eastpiger/ghost-theme-H2O) by [eastpiger](https://github.com/eastpiger)
### Preview
#### [在线预览 Live Demo →](http://liaokeyu.com/)
![](screenshot/jekyll-theme-h2o-realhome.jpg)
![](screenshot/jekyll-theme-h2o-realm.png)
如果你喜欢这个博客模板请在右上角star一下非常感谢
If you like this theme or using it, please give a ⭐️ for motivation ;)
如果想体验手机浏览效果,可以扫一下二维码:
![](screenshot/1494404591.png)
Using your smartphone to scan the QR Code
### Features 特性
#### CN
- 代码高亮
- 夜间模式
- Disqus评论系统
- 粉蓝两种主题色
- 头图个性化底纹
- 响应式设计
- 社交图标
- SEO标题优化
- 文章标签索引
- 博客文章搜索
- 复制文章内容自动添加版权
#### EN
- Code highlight
- Night mode
- Disqus Comment System
- Theme color: Blue & Pink
- Hero Patterns
- Responsive design
- SNS Icon
- Title SEO
- Tags system
- Search
- Copyright text on copy event
### Usage 快速开始
首先你需要安装Jekyll请查看文档: [快速指南](http://jekyll.com.cn/docs/quickstart/)
如果你已经安装了Jekyll请检查版本是否为3.0.x你可以使用 ```gem update jekyll``` 命令进行升级。
使用 ```gem install jekyll-paginate``` 或 ```sudo gem install jekyll-paginate``` 安装Jekyll的分页插件。
> H2O主题基于Jekyll 3.2.1版本,不同版本之间可能存在部分差异,具体请参考[官方更新文档](https://jekyllrb.com/news/)
点击右上角Fork按钮在你的Github上创建分支或者```clone```到本地。
``` git clone https://github.com/kaeyleo/jekyll-theme-H2O.git ```
最后,在命令行输入 ```jekyll server``` 开启服务,就能在本地预览主题了。
如果需要部署到线上环境,请参照配置文档的 **开始** 章节进行操作。
### Document 配置文档
#### CN
- 开始
- [站点信息](#站点信息)
- [写一篇文章](#写一篇文章)
- 组件
- [导航](#导航)
- [侧边栏](#侧边栏)
- [社交图标](#社交图标)
- [个人简介](#个人简介)
- [标签](#标签)
- [文章搜索](#文章搜索)
- [代码高亮](#代码高亮)
- [夜间模式](#夜间模式)
- 个性化
- [博客封面、主题皮肤](#主题皮肤)
- [头图底纹](#头图底纹)
- 高级部分
- [自定义](#自定义)
- 集成服务
- [Disqus](#disqus)
- [Share.js](#sharejs)
#### EN
- Get Started
- [Site Settings](#站点信息)
- [Write Posts](#写一篇文章)
- Components
- [Navigation Menu](#导航)
- [Sidebar](#侧边栏)
- [SNS Icons](#社交图标)
- [Personal Information](#个人简介)
- [Tags](#标签)
- [Search](#文章搜索)
- [Syntax Highlight](#代码高亮)
- [Night Mode](#夜间模式)
- Style
- [Theme Color](#主题皮肤)
- [Hero Background Patterns](#头图底纹)
- Advanced
- [Customization](#自定义)
- Plugins
- [Disqus](#Disqus)
- [Share.js](#Share.js)
You can easily get started by modifying _config.yml
#### 站点信息
你可以通用修改 `_config.yml` 文件来轻松的开始搭建自己的博客
```
# Site settings
title: '廖柯宇的独立博客' # 你的博客网站标题
description: '很高兴能在这里与你分享我对技术和生活的思考。' # 站点描述
keyword: '廖柯宇, 廖柯宇的独立博客, 前端, 设计' # 网站关键词
url: 'http://liaokeyu.com' # 站点url
baseurl: ''
# Build settings
paginate: 6 # 一页放几篇文章
paginate_path: 'page:num'
```
其实大部分参数已经默认配置好了,你只需要通过文档了解它们,然后根据自己的需求去`_config.yml`文件里修改即可。
#### 写一篇文章
文章一般都放在`_posts`文件夹里,每篇文章的开头都需要设置一些头信息:
```
---
layout: post
title: 'H2O theme for Jekyll'
subtitle: '或许是最漂亮的Jekyll主题'
date: 2017-04-18
categories: 技术
cover: 'http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-postcover.jpg'
tags: jekyll 前端开发 设计
---
```
#### 导航
博客顶部的导航栏信息需要以下面的格式进行配置:
```
# Navigation links
nav:
home: '/'
tags: '/tags.html'
```
导航链接需要写上完整的html文件名它们都是放于根目录下的如果自建文件夹请务必在`exclude` 参数中增加自建文件夹的文件名:
```
# Build settings
exclude: ['node_modules', 'dev', 'package.json', '自定义的文件夹名字']
```
这样做是为了在Jekyll运行时排除某些文件被复制到运行文件`_site`里去。
#### 侧边栏
![](screenshot/jekyll-theme-h2o-sideBar.png)
侧边栏分为两个部分【个人简介】和【推荐标签】。当屏幕宽度小于960px时侧边栏会被隐藏。
#### 社交图标
使用阿里的图标管理平台Iconfont整理了一套常用的社交图标用于博客的个人简介上包括微博、知乎、掘金、简书、Github等十三个网站并且对鼠标悬停时的样式颜色进行了优化。
配置格式如下:
```
# SNS settings 配置社交网站url
sns:
weibo: '//weibo.com/lovecolcol'
juejin: '//juejin.im/user/57a6f434165abd006159b4cc'
instagram: '//www.instagram.com/steveliaocn'
github: '//github.com/kaeyleo'
```
sns属性可选参数
社交网站 | 参数
--------|----
微博 | `weibo`
推特 | `twitter`
Github | `github`
知乎 | `zhihu`
掘金 | `juejin`
豆瓣 | `douban`
简书 | `jianshu`
UI中国 | `uicn`
领英 | `linkedin`
Facebook | `facebook`
Youtube | `youtube`
Instagram | `instagram`
Dribbble | `dribbble`
Behance | `behance`
Medium | `medium`
VK | `vk`
#### 个人简介
首页侧边栏和文章页面底部都会显示你的个人简介
```
# Author 配置博主信息
author: 'Jack'
nickname: 'xx'
bio: '程序员'
avatar: 'assets/img/avatar.jpg'
```
#### 标签
对侧边栏的标签模块进行相应配置:
```
# Tags
recommend-tags: true
recommend-condition-size: 12
```
Tags配置说明
属性 | 参数 | 描述
-----|-----|-------
`recommend-tags` | `true`, `false` | 是否显示推荐标签
`recommend-condition-size` | `12` 或其他数字 | 推荐标签个数限制
#### 文章搜索
![](screenshot/jekyll-theme-h2o-search.png)
基于Jekyll服务器生成文章索引文件 `search.json` 为博客提供搜索服务。输入文章标题或与文章标签相关的关键字即可。
搜索功能默认是开启的,以卡片的样式显示在侧边栏底部。如需关闭请将配置文件 `_config.yml``search ` 属性的值改为 `false`
```
# Search
search: true
```
说明 | 参数
----|-----
开启搜索功能 | `true`
关闭搜索功能 | `false`
#### 代码高亮
模板引入了[Prism.js](http://prismjs.com),一款轻量、可扩展的代码语法高亮库。
很多知名网站如[MDN](https://developer.mozilla.org/)、[css-tricks](https://css-tricks.com/)也在用它,就连 JavaScript 之父 [Brendan Eich](https://brendaneich.com/) 也在个人博客上使用。
![代码高亮](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-highlight.png)
遵循 [HTML5](https://www.w3.org/TR/html5/grouping-content.html#the-pre-element) 标准Prism 使用语义化的 `<pre>` 元素和 `<code>` 元素来标记代码区块:
```
<pre><code class="language-css">p { color: red }</code></pre>
```
在Markdown中你可以这样写
```css
p { color: red }
```
支持语言:
- HTML
- CSS
- Sass
- JavaScript
- CoffeeScript
- Java
- C-like
- Swift
- PHP
- Go
- Python
#### 夜间模式
晚11点至次日凌晨6点自动开启夜间模式。如果不需要则将配置文件 `_config.yml``nightMode ` 属性的值改为 `false` 即可。
```
# Night mode
nightMode: true
```
说明 | 参数
----|-----
开启夜间模式 | `true`
关闭夜间模式 | `false`
#### 主题皮肤
![](screenshot/jekyll-theme-h2o-themecolor.jpg)
支持两种主题颜色蓝色(默认)和粉色
主要效果体现在首页博客封面、顶部导航栏的logo以及鼠标悬停时文字显示的颜色效果。
```
# theme color
theme-color: 'default' # pink or default
```
颜色 | 参数
----|-----
蓝色 | `default`
粉色 | `pink`
如果你希望在博客封面显示图片需要去index.html文件中的头信息中添加 `header-img` 配置:
```
---
layout: default
home-title: Steven的博客
description: 开发者,创造者
header-img: assets/img/banner.jpg
---
```
#### 头图底纹
![](screenshot/jekyll-theme-h2o-heroPatterns.png)
在没有图片的情况下单纯显示颜色会不会太无趣了点于是想到了加入底纹元素底纹素材是SVG格式的保存在css样式里加载比图片快很多。六种底纹电路、食物、云海、钻石等等供你选择配置如下
```
# Hero background patterns
postPatterns: 'circuitBoard'
```
`postPatterns` 属性参数配置:
底纹描述 | 参数
------|------
电路 | `circuitBoard`
圆环 | `overlappingCircles`
吃货日常:啃打鸡 | `food`
土豪必备:钻石| `glamorous`
圈圈叉叉 | `ticTacToe`
中国风:云海 | `seaOfClouds`
#### 自定义
主题开发使用的技术栈也比较简单引入jQuery类库、使用Sass代替CSS编写样式使用Gulp完成Sass的编译、CSS和JavaScript的代码合并压缩等任务。
如果你喜欢折腾,想对模板的代码进行修改,需要使用命令 `npm install` 安装 `package.json` 中的依赖,然后 `gulp` 一下即可开始你的自定义之旅。
在了解H2O主题的目录结构之前确保你对[Jekyll目录结构](http://jekyll.com.cn/docs/structure/)有所了解。
```
.
├── _config.yml # 配置文件
├── _includes # 页面组件方便重用
| ├── footer.html # 页脚
| └── head.html # html文档的头部内容
| └── header.html # 顶部菜单栏
| └── pageNav.html # 文章列表分页组件
├── _layouts # 布局模板
| ├── default.html # 默认模板
| └── post.html # 文章页面模板
├── _posts # 这里放文章
| ├── 2017-05-03-elements-of-javascript-style.md # 命名格式:年-月-日-文章标题.md
| └── 2007-02-21-life-on-mars.md
├── _site # Jekyll将源码处理后生成的站点文件里面的内容可直接发布
├── assets # 存放用于线上环境的静态资源如需修改css和js文件请到dev文件夹
| ├── css # dev文件夹中sass编译后的样式文件
| └── fonts # 字体文件
| └── icons # 图标文件
| └── img # 图片文件
| └── js # dev文件夹中处理后的脚本文件
├── dev # 开发文件
| ├── js # 存放脚本源码
| └── sass # 样式源码
| └── app.scss # 整合下面的所有样式文件
| └── base.scss # 引入字体、Reset部分样式
| └── common.scss # 模板的主要样式
| └── helper.scss # 工具样式
| └── layouts.scss # 响应式布局
└── gulpfile.js # 自动化任务脚本
└── index.html # 模板首页
└── tags.html # 标签页面
└── 404.html # 404页面
└── package.json # 管理项目的依赖项
```
值得注意的是css及js的源码都在 `dev` 文件夹中,每一次保存 gulp 都会对它们进行处理并保存到 `assets` 文件夹以供 `_site` 上线环境使用。
#### Disqus
[Disqus](https://disqus.com/)是一个第三方社交评论插件,体验相当不错。
在配置文件 `_config.yml` 中找到comments的相关配置设置 `disqus` 参数为 `true` 打开评论功能( `false` 为关闭),并且设置 `disqus_url`
```
# Comments
comments:
disqus: true
disqus_url: 'https://your-disqus-username.disqus.com/embed.js'
```
注:`disqus` 默认值为 `false`
#### Share.js
为了让文章更方便地分享,使用了第三方分享插件[Share.js](https://github.com/overtrue/share.js)支持一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等社交网站。
```
# Share
social-share: true # 开启或者关闭分享功能
social-share-items: ['wechat', 'weibo', 'douban','twitter']
```
### Contribution 贡献
Any types of contribution are welcome. Thanks.
接受各种形式的贡献,包括不限于提交问题与需求,修复代码。等待您的 ```Pull Request```
#### 感谢参与代码贡献的伙伴
- [Ray-Eldath](https://github.com/Ray-Eldath)
- [sctop](https://github.com/sctop)
- [bananaappletw](https://github.com/bananaappletw)
- [moycat](https://github.com/moycat)
### License 许可证
Jekyll-Theme-H2O is licensed under [MIT](https://github.com/kaeyleo/jekyll-theme-H2O/blob/master/LICENSE).

View File

@ -1 +1,87 @@
theme: jekyll-theme-hacker
# Site settings 配置站点
title: '华中科技大学系统能力竞赛战队官方网站'
description: '恰饭网'
keyword: '恰饭网, 无相之风, 系统, 操作系统, 内核, 操作系统内核, riscv, RISC-V, 竞赛, 华中科技大学'
url: 'https://qf.rs' # your host
# when build blog on server, if you don't need baseurl, you should leave this value blank.
# 在服务器上建站时,如果你不需要子域名,请将这一格留空
# if you're using GitHub Pages, set baseurl to your blog's .
# 如果你在使用 GitHub Pages, 请将 baseurl 设置为你的网址的子域名
# for example, if your site is "kaeyleo.github.io", then this url should leave blank.
# 例如,当你的域名是 "kaeyleo.github.io" 时,这个 url 需要留空
# but if your created a repo named "myblog", and the site is "kaeyleo.github.io/myblog", change baseurl to '/myblog'
# 但是,如果你创建了一个叫 "myblog" 的网站,此时网址会变成 "kaeyleo.github.io/myblog" ,这时再将 baseurl 设置为 '/myblog'
baseurl: 'hust-os.github.io/qf.rs'
# Navigation links
nav:
home: '/'
tags: '/tags.html'
# Footer
footer:
since: 2021
# Author 配置博主信息
author: '无相之风战队'
nickname: '恰饭网'
bio: '华中科技大学系统能力竞赛战队官方网站'
avatar: '/assets/img/profile.png'
# Search
search: true
# Night mode
nightMode: true
# Comments 评论功能
comments:
disqus: false
disqus_url: 'https://liaokeyu.disqus.com/embed.js' # todo
# MathJax 公式支持 by Ray-Eldath
mathjax: true
# Share
social-share: true
social-share-items: ['wechat', 'weibo', 'douban', 'twitter']
# theme color 主题皮肤
theme-color: 'default' # pink or default
# Post header background patterns (when the post no cover): circuitBoard, overlappingCircles, food, glamorous, ticTacToe, seaOfClouds
postPatterns: 'circuitBoard'
# SNS settings 配置社交网站
# url: email, weibo, zhihu, twitter, instagram, juejin, github, douban, facebook, dribble, uicn, jianshu, medium, linkedin
sns:
weibo: '//weibo.com/lovecolcol'
juejin: '//juejin.im/user/57a6f434165abd006159b4cc'
instagram: '//www.instagram.com/steveliaocn'
github: '//github.com/HUST-OS'
# Tags 设置标签
recommend-tags: true # whether or not display recommend-tags on the sidebar
recommend-condition-size: 12 # a tag will be recommended if the size of it is more than this value
# Build settings
paginate: 6
paginate_path: 'page:num'
exclude: ['node_modules', 'dev', 'package.json', 'gulpfile.js', '.gitignore', 'README.md']
# Markdown
markdown: kramdown
highlighter: rouge
kramdown:
input: GFM
# RSS
RSS: false
# Permalink
# See: https://github.com/kaeyleo/jekyll-theme-H2O/issues/35
permalink: /:year/:month/:day/:title.html
# Plugins
plugins: [jekyll-paginate]

41
_includes/anchor.html Normal file
View File

@ -0,0 +1,41 @@
<!--
Author: Ray-Eldath
-->
<style>
.markdown-body .anchor{
float: left;
margin-top: -8px;
margin-left: -20px;
padding-right: 4px;
line-height: 1;
opacity: 0;
}
.markdown-body .anchor .anchor-icon{
font-size: 15px
}
</style>
<script>
$(document).ready(function() {
let nodes = document.querySelector(".markdown-body").querySelectorAll("h1,h2,h3")
for(let node of nodes) {
var anchor = document.createElement("a")
var anchorIcon = document.createElement("i")
anchorIcon.setAttribute("class", "fa fa-anchor fa-lg anchor-icon")
anchorIcon.setAttribute("aria-hidden", true)
anchor.setAttribute("class", "anchor")
anchor.setAttribute("href", "#" + node.getAttribute("id"))
anchor.onmouseover = function() {
this.style.opacity = "0.4"
}
anchor.onmouseout = function() {
this.style.opacity = "0"
}
anchor.appendChild(anchorIcon)
node.appendChild(anchor)
}
})
</script>

11
_includes/footer.html Normal file
View File

@ -0,0 +1,11 @@
<footer class="g-footer">
<section>{{ site.title }} ©
{% assign current = "now" | date: "%Y" | plus: 0%}
{% unless site.footer.since and site.footer.since == current %}
{{ site.footer.since }}
-
{% endunless %}
{{ current }}
</section>
<section>Powered by <a href="//jekyllrb.com">Jekyll</a> | <a href="https://github.com/kaeyleo/jekyll-theme-H2O">Theme H2O</a></section>
</footer>

21
_includes/head.html Normal file
View File

@ -0,0 +1,21 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="author" content="{{ site.author }}">
<meta name="description" content="{{ site.description }}">
<meta name="keywords" content="{{ site.keyword }}">
<!-- Open Graph -->
<meta property="og:title" content="{% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %}">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ page.url | prepend: site.url }}">
<meta property="og:description" content="{{ site.description }}">
<meta property="og:site_name" content="{{ site.title }}">
<link rel="stylesheet" href="//cdn.staticfile.org/normalize/6.0.0/normalize.min.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_271755_rdxzzo2kqwk.css">
<link rel="stylesheet" href="{{ "/assets/css/github-markdown.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/prism.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/share.min.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/app.min.css" | relative_url }}">
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
</head>

13
_includes/header.html Normal file
View File

@ -0,0 +1,13 @@
<header class="g-header">
<div class="g-logo">
<a href="{{ "/" | relative_url }}"></a>
</div>
<i id="menu-toggle" class="iconfont icon-menu"></i>
<nav class="g-nav">
<ul>
{% for i in site.nav %}
<li><a href="{{ i[1] | relative_url}}">{{ i[0] }}</a></li>
{% endfor %}
</ul>
</nav>
</header>

20
_includes/mathjax.html Normal file
View File

@ -0,0 +1,20 @@
<!--
Author: Ray-Eldath
refer to:
- http://docs.mathjax.org/en/latest/options/index.html
-->
{% if site.mathjax %}
<script type="text/javascript" async src="https://cdn.bootcss.com/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ["$", "$"] ],
displayMath: [ ["$$", "$$"] ],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
},
"HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"] }
});
</script>
{% endif %}

18
_includes/pageNav.html Normal file
View File

@ -0,0 +1,18 @@
<nav class="pagination">
<input type="hidden" id="total_pages" value="{{ paginator.total_pages }}">
<input type="hidden" id="current_pages" value="{{ paginator.page }}">
<input type="hidden" id="base_url" value="{{ "/" | relative_url }}">
<div class="page-links">
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<a href="{{ "/" | relative_url }}" class="page-link" title="Previous Page">&laquo;</a>
{% else %}
<a href="/page{{ paginator.previous_page }}/" class="page-link" title="Previous Page">&laquo;</a>
{% endif %}
{% endif %}
<div id="page-link-container"></div>
{% if paginator.next_page %}
<a href="/page{{ paginator.next_page }}/" class="page-link">&raquo;</a>
{% endif %}
</div>
</nav>

26
_includes/post-head.html Normal file
View File

@ -0,0 +1,26 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="author" content="{{ site.author }}">
<meta name="description" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
<meta name="keywords" content="{% if page.tags.size > 0 %}{% for tag in page.tags %}{{ tag }}{% if forloop.last == false %}, {% endif %}{% endfor %}{% endif %}">
<!-- Open Graph -->
<meta property="og:title" content="{% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %}">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ page.url | prepend: site.url }}">
<meta property="og:description" content="{{ site.description }}">
<meta property="og:site_name" content="{{ site.title }}">
<link rel="stylesheet" href="//cdn.staticfile.org/normalize/6.0.0/normalize.min.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_roc50gemkxpw4s4i.css">
<link rel="stylesheet" href="{{ "/assets/css/github-markdown.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/prism.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/share.min.css" | relative_url }}">
<link rel="stylesheet" href="{{ "/assets/css/app.min.css" | relative_url }}">
<link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
{% if site.mathjax %}
{% include mathjax.html %}
{% endif %}
{% include anchor.html %}
</head>

16
_layouts/default.html Normal file
View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
{% include head.html %}
<body>
<!--[if lt IE 10]>
<div class="alert-danger" role="alert">你的浏览器实在太太太旧了,放学别走,升级完浏览器再说!<a target="_blank" class="alert-link" href="http://browsehappy.com">立即升级</a></div>
<![endif]-->
<input id="nm-switch" type="hidden" value="{{ site.nightMode }}">
<div class="visible">
{{ content }}
</div>
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script src="{{ "/assets/js/prism.js" | relative_url }}"></script>
<script src="{{ "/assets/js/index.min.js" | relative_url }}"></script>
</body>
</html>

149
_layouts/post.html Normal file
View File

@ -0,0 +1,149 @@
<!DOCTYPE html>
<html>
{% include post-head.html %}
<body>
<!--[if lt IE 10]>
<div class="alert-danger" role="alert">你的浏览器实在太太太旧了,放学别走,升级完浏览器再说!<a target="_blank" class="alert-link" href="http://browsehappy.com">立即升级</a></div>
<![endif]-->
<input id="nm-switch" type="hidden" value="{{ site.nightMode }}"> {% include header.html %}
<header
class="g-banner post-header {{ site.postPatterns | prepend: 'post-pattern-' }} {{ site.theme-color | prepend: 'bgcolor-' }} {% unless page.cover %}post-no-cover{% endunless %}"
data-theme="{{ site.theme-color }}"
>
<div class="post-wrapper">
<div class="post-tags">
{% if page.tags.size > 0 %}
{% for tag in page.tags %}
<a href="{{ "/tags.html#" | append: tag | relative_url }}" class="post-tag">{{ tag }}</a>
{% endfor %}
{% endif %}
</div>
<h1>{{ page.title }}</h1>
<div class="post-meta">
<span class="post-meta-item"><i class="iconfont icon-author"></i>{% if page.author %}{{ page.author }}{% else %}{{ site.author }}{% endif %}</span>
<time class="post-meta-item" datetime="{{ page.date | date:"%y-%m-%d" }}"><i class="iconfont icon-date"></i>{{ page.date | date_to_string }}</time>
</div>
</div>
{% if page.cover %}
<div class="filter"></div>
<div class="post-cover" style="background: url('{{ page.cover | relative_url }}') center no-repeat; background-size: cover;"></div>
{% endif %}
</header>
<div class="post-content visible">
{% if page.subtitle %}
<h2 class="post-subtitle">{{ page.subtitle }}</h2>
{% endif %}
<article class="markdown-body">
{{ page.content }}
</article>
{% if site.social-share %}
<div class="social-share-wrapper">
<div class="social-share"></div>
</div>
{% endif %}
</div>
<section class="author-detail">
<section class="post-footer-item author-card">
<div class="avatar">
<img src="{{ site.avatar | relative_url }}" alt="">
</div>
<div class="author-name" rel="author">{{ site.author }}</div>
<div class="bio">
<p>{{ site.bio }}</p>
</div>
{% if site.sns.size > 0 %}
<ul class="sns-links">
{% for s in site.sns %}
<li>
<a href="{{ s[1] }}" target="_blank">
<i class="iconfont icon-{{ s[0] }}"></i>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</section>
<section class="post-footer-item read-next">
{% if page.next.url %}
<div class="read-next-item">
<a href="{{ page.next.url | relative_url }}" class="read-next-link"></a>
<section>
<span>{{ page.next.title }}</span>
<p>{{ page.next.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
</section>
{% if page.next.cover %}
<div class="filter"></div>
<img src="{{ page.next.cover | relative_url }}" alt="">
{% endif %}
</div>
{% endif %}
{% if page.previous.url %}
<div class="read-next-item">
<a href="{{ page.previous.url | relative_url }}" class="read-next-link"></a>
<section>
<span>{{ page.previous.title }}</span>
<p>{{ page.previous.excerpt | strip_html | strip_newlines | truncate: 60}}</p>
</section>
{% if page.previous.cover %}
<div class="filter"></div>
<img src="{{ page.previous.cover | relative_url }}" alt="">
{% endif %}
</div>
{% endif %}
</section>
{% if site.comments.disqus %}
<section class="post-footer-item comment">
<div id="disqus_thread"></div>
</section>
{% endif %}
</section>
{% include footer.html %}
<script src="{{ "/assets/js/social-share.min.js" | relative_url }}"></script>
<script>
socialShare('.social-share', {
sites: [
{% for i in site.social-share-items %}
'{{ i }}'
{% if forloop.last == false %},
{% endif %}
{% endfor %}
],
wechatQrcodeTitle: "分享到微信朋友圈",
wechatQrcodeHelper: '<p>扫码后点击右上角</p><p>将本文分享至朋友圈</p>'
});
</script>
{% if site.comments.disqus %}
<script>
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
/*
var disqus_config = function () {
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
*/
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '{{ site.comments.disqus_url }}';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
{% endif %}
<script src="{{ "/assets/js/prism.js" | relative_url }}"></script>
<script src="{{ "/assets/js/index.min.js" | relative_url }}"></script>
</body>
</html>

View File

@ -0,0 +1,26 @@
---
layout: post
title: 'Hello Jekyll'
date: 2017-04-18
author: Jekyll
cover: 'http://on2171g4d.bkt.clouddn.com/jekyll-banner.png'
tags: jekyll
---
> Transform your plain text into static websites and blogs.
### Welcome
This site aims to be a comprehensive guide to Jekyll. Well cover topics such as getting your site up and running, creating and managing your content, customizing the way your site works and looks, deploying to various environments, and give you some advice on participating in the future development of Jekyll itself.
### So what is Jekyll, exactly?Permalink
Jekyll is a simple, blog-aware, static site generator. It takes a template directory containing raw text files in various formats, runs it through a converter (like [Markdown](https://daringfireball.net/projects/markdown/)) and our [Liquid](https://github.com/Shopify/liquid/wiki) renderer, and spits out a complete, ready-to-publish static website suitable for serving with your favorite web server. Jekyll also happens to be the engine behind GitHub Pages, which means you can use Jekyll to host your projects page, blog, or website from GitHubs servers for free.
### Helpful HintsPermalink
Throughout this guide there are a number of small-but-handy pieces of information that can make using Jekyll easier, more interesting, and less hazardous. Heres what to look out for.
### Video Test
<iframe type="text/html" width="100%" height="385" src="http://www.youtube.com/embed/gfmjMWjn-Xg" frameborder="0"></iframe>

View File

@ -0,0 +1,125 @@
---
layout: post
title: 'H2O theme for Jekyll'
subtitle: '或许是最漂亮的Jekyll主题'
date: 2017-04-18
categories: 技术
cover: 'http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-postcover.jpg'
tags: jekyll 前端开发 设计
---
正如我在[微博](http://weibo.com/1374146504/profile?topnav=1&wvr=6)上所说的,使用[Jekyll](http://jekyll.com.cn/)半年以来一直没有令我满意的主题模板所以开始计划自己写一套好看又好用的主题模板。设计之初就明确了极简主义风格采用扁平化了通过卡片式设计来进行区块分明的布局参考了Medium的ui样式和知乎专栏的视觉风格。
## H2O
[源码及使用文档 →](https://github.com/kaeyleo/jekyll-theme-H2O)
![](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-realhome.jpg)
新主题名叫"H2O"基于Jekyll 3.0.x使用```gem update jekyll```升级JekyllMarkdown的代码高亮不再支持pygments转而使用rouge咱已经默认配置了 ```highlighter: rouge``` 。用到的技术栈也很简单引入jQuery类库使用Sass编写样式使用Gulp来编译Sass、合并压缩css、js开源在[Github](https://github.com/kaeyleo/jekyll-theme-H2O)上稍作配置即可用于你的Jekyll博客上。
![Design with Sketch](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-sketchdesign.png)
使用Sketch完成H2O主题的原型设计
![My Jekyll themes](http://on2171g4d.bkt.clouddn.com/jekyll-theme-vs.jpg)
比之前漂亮不少吧下面聊聊H2O的新特性。
## 新特性
### 主题配色
支持两种主题配色——蓝色和粉色。
![](https://github.com/kaeyleo/jekyll-theme-H2O/blob/master/screenshot/jekyll-theme-h2o-themecolor.jpg?raw=true)
### 侧边栏
相比自己上一个版本的博客主题,首页增加了侧边栏,方便展示博主的个人信息和文章标签。
### 社交图标
使用阿里的图标管理平台[Iconfont](http://iconfont.cn/)整理了一套<strike>墙内外</strike>常用的社交图标包括微博、知乎、掘金、简书、Github等十多个网站鼠标悬停会显示该站的主题色。
![social iconfont](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-snstext.jpg)
### 前后文导航
![Next post navigator](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-nextpostnav.png)
### 自定义文章封面
在Markdown的[文章头信息](http://jekyll.com.cn/docs/frontmatter/)里添加cover参数来配置文章的封面图片如果没有配置封面则默认【主题色+底纹】的组合作为文章封面。值得一提的是H2O有两种粉、蓝主题色和六种底纹电路板、食物、云海、钻石等等供你选择。
### 头图个性化底纹
在没有图片的情况下单纯显示颜色会不会太无趣了点于是想到了加入底纹元素底纹素材是SVG格式的保存在css样式里加载比图片快很多。
![](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-headerpatterns.jpg)
### 代码高亮
模板引入了[Prism.js](http://prismjs.com),一款轻量、可扩展的代码语法高亮库。
很多知名网站如[MDN](https://developer.mozilla.org/)、[css-tricks](https://css-tricks.com/)也在用它JavaScript 之父 [Brendan Eich](https://brendaneich.com/) 也在个人博客上使用。
![代码高亮](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-highlight.png)
遵循 [HTML5](https://www.w3.org/TR/html5/grouping-content.html#the-pre-element) 标准Prism 使用语义化的 `<pre>` 元素和 `<code>` 元素来标记代码区块:
```
<pre><code class="language-css">p { color: red }</code></pre>
```
在Markdown中你可以这样写
```
```css
p { color: red }
```
```
支持语言:
- HTML
- CSS
- Sass
- JavaScript
- CoffeeScript
- Java
- C-like
- Swift
- PHP
- Go
- Python
### 第三方评论
由于多说关闭,又对国内其他第三方评论插件无感,所以将[Disqus](https://disqus.com/)列为首选(目前模板也只提供了这个),请自备梯子。
### 移动端优化
响应式设计,对手机和平板等移动设备做了优化。
![](http://on2171g4d.bkt.clouddn.com/jekyll-theme-h2o-realm.png)
### 关于阅读体验
我认为在内容质量相同的情况下,出色的沉浸式阅读体验是博客的核心。
H2O在这方面还有很多需要完善的地方比如<strike>代码高亮</strike>、夜间模式、查看大图...
### 其他特性:
- 网页标题SEO优化
- 标签索引,点击标签跳转到标签目录,即可查看对应的全部文章
- 漂亮
- 好看
- 美
## 最后
本想趁这次机会将整站https化的但折腾了半天发现弹性web托管并不支持所以暂时搁置https的想法。另外博客统计工具一直使用的是[百度统计](https://tongji.baidu.com)这次新增了Google Analytics。
这次从0到1独自设计、开发再到发布大约用了一周时间也算完成一个小小的开源项目了后续也将持续完善和更新欢迎[Star](https://github.com/kaeyleo/jekyll-theme-H2O)。

View File

@ -0,0 +1,29 @@
---
layout: post
title: MathJax Test
date: 2017-07-30
categories: test
tags: mathjax
---
mathjax in markdown :)
**这是一个不`align`的公式**
$$
\forall \alpha \in A, \quad a \cdot b = 0
$$
**这是一个`align`的公式**
$$
\text{for OTP : $\qquad$ if }\quad E(k,\:m)=c\\
\begin{align}
k\oplus m &= c \\
k &= m\oplus c
\end{align}
\\
\#\{\;k \in \mathscr K : \quad E(k,\:m)=c \;\}=1 \quad \forall m,\:c
$$
**注意:**公式块要想有较好的显示效果,必须在公式块标记符`$$`**前后**留有空行,否则公式将不能正常居中。行内公式无此问题。

1
assets/css/app.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,636 @@
@font-face {
font-family: octicons-link;
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
}
.markdown-body {
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
line-height: 1.5;
color: #24292e;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.5;
word-wrap: break-word;
}
.markdown-body .pl-c {
color: #969896;
}
.markdown-body .pl-c1,
.markdown-body .pl-s .pl-v {
color: #0086b3;
}
.markdown-body .pl-e,
.markdown-body .pl-en {
color: #795da3;
}
.markdown-body .pl-smi,
.markdown-body .pl-s .pl-s1 {
color: #333;
}
.markdown-body .pl-ent {
color: #63a35c;
}
.markdown-body .pl-k {
color: #a71d5d;
}
.markdown-body .pl-s,
.markdown-body .pl-pds,
.markdown-body .pl-s .pl-pse .pl-s1,
.markdown-body .pl-sr,
.markdown-body .pl-sr .pl-cce,
.markdown-body .pl-sr .pl-sre,
.markdown-body .pl-sr .pl-sra {
color: #183691;
}
.markdown-body .pl-v,
.markdown-body .pl-smw {
color: #ed6a43;
}
.markdown-body .pl-bu {
color: #b52a1d;
}
.markdown-body .pl-ii {
color: #f8f8f8;
background-color: #b52a1d;
}
.markdown-body .pl-c2 {
color: #f8f8f8;
background-color: #b52a1d;
}
.markdown-body .pl-c2::before {
content: "^M";
}
.markdown-body .pl-sr .pl-cce {
font-weight: bold;
color: #63a35c;
}
.markdown-body .pl-ml {
color: #693a17;
}
.markdown-body .pl-mh,
.markdown-body .pl-mh .pl-en,
.markdown-body .pl-ms {
font-weight: bold;
color: #1d3e81;
}
.markdown-body .pl-mq {
color: #008080;
}
.markdown-body .pl-mi {
font-style: italic;
color: #333;
}
.markdown-body .pl-mb {
font-weight: bold;
color: #333;
}
.markdown-body .pl-md {
color: #bd2c00;
background-color: #ffecec;
}
.markdown-body .pl-mi1 {
color: #55a532;
background-color: #eaffea;
}
.markdown-body .pl-mc {
color: #ef9700;
background-color: #ffe3b4;
}
.markdown-body .pl-mi2 {
color: #d8d8d8;
background-color: #808080;
}
.markdown-body .pl-mdr {
font-weight: bold;
color: #795da3;
}
.markdown-body .pl-mo {
color: #1d3e81;
}
.markdown-body .pl-ba {
color: #595e62;
}
.markdown-body .pl-sg {
color: #c0c0c0;
}
.markdown-body .pl-corl {
text-decoration: underline;
color: #183691;
}
.markdown-body .octicon {
display: inline-block;
vertical-align: text-top;
fill: currentColor;
}
.markdown-body a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
.markdown-body a:active,
.markdown-body a:hover {
outline-width: 0;
}
.markdown-body strong {
font-weight: inherit;
}
.markdown-body strong {
font-weight: bolder;
}
.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}
.markdown-body img {
display: block;
border-style: none;
margin: 0 auto;
}
.markdown-body img {
display: block;
margin: 32px auto;
max-width: 100%;
background-color: #fff;
border-style: none;
box-sizing: content-box;
}
.markdown-body svg:not(:root) {
overflow: hidden;
}
.markdown-body code,
.markdown-body kbd,
.markdown-body pre {
font-family: monospace, monospace;
font-size: 1em;
}
.markdown-body hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
.markdown-body input {
font: inherit;
margin: 0;
}
.markdown-body input {
overflow: visible;
}
.markdown-body [type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
.markdown-body * {
box-sizing: border-box;
}
.markdown-body input {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
.markdown-body a {
color: inherit;
text-decoration: underline;
}
.markdown-body strong {
font-weight: 600;
}
.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #dfe2e5;
}
.markdown-body hr::before {
display: table;
content: "";
}
.markdown-body hr::after {
display: table;
clear: both;
content: "";
}
.markdown-body table {
margin: 32px auto;
border-spacing: 0;
border-collapse: collapse;
overflow: auto;
}
.markdown-body td,
.markdown-body th {
padding: 0;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25;
}
.markdown-body h1 {
margin-top: 36px;
font-size: 28px;
font-weight: 600;
}
.markdown-body h2 {
margin-top: 28px;
font-size: 24px;
font-weight: 600;
}
.markdown-body h3 {
font-size: 20px;
font-weight: 600;
}
.markdown-body h4 {
font-size: 16px;
font-weight: 600;
}
.markdown-body h5 {
font-size: 14px;
font-weight: 600;
}
.markdown-body h6 {
font-size: 12px;
font-weight: 600;
}
.markdown-body p {
margin-bottom: 16px;
font-size: 17px;
line-height: 1.8;
text-align: justify;
}
.markdown-body blockquote {
margin: 0;
}
.markdown-body ul {
list-style: disc;
}
.markdown-body ul ul {
list-style: circle;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 0;
margin-top: 0;
margin-bottom: 0;
}
.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}
.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}
li p:nth-child(2) {
margin-bottom: 16px !important;
}
.markdown-body dd {
margin-left: 0;
}
.markdown-body .octicon {
vertical-align: text-bottom;
}
.markdown-body .pl-0 {
padding-left: 0 !important;
}
.markdown-body .pl-1 {
padding-left: 4px !important;
}
.markdown-body .pl-2 {
padding-left: 8px !important;
}
.markdown-body .pl-3 {
padding-left: 16px !important;
}
.markdown-body .pl-4 {
padding-left: 24px !important;
}
.markdown-body .pl-5 {
padding-left: 32px !important;
}
.markdown-body .pl-6 {
padding-left: 40px !important;
}
.markdown-body::before {
display: table;
content: "";
}
.markdown-body::after {
display: table;
clear: both;
content: "";
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.markdown-body a:not([href]) {
color: inherit;
text-decoration: none;
}
.markdown-body .anchor {
float: left;
padding-right: 4px;
margin-left: -20px;
line-height: 1;
}
.markdown-body .anchor:focus {
outline: none;
}
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body pre {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body hr {
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: #e1e4e8;
border: 0;
}
.markdown-body blockquote {
padding: 0 1em;
color: #6a737d;
border-left: 0.25em solid #dfe2e5;
}
.markdown-body blockquote>:first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #444d56;
vertical-align: middle;
background-color: #fafbfc;
border: solid 1px #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #1b1f23;
vertical-align: middle;
visibility: hidden;
}
.markdown-body h1:hover .anchor,
.markdown-body h2:hover .anchor,
.markdown-body h3:hover .anchor,
.markdown-body h4:hover .anchor,
.markdown-body h5:hover .anchor,
.markdown-body h6:hover .anchor {
text-decoration: none;
}
.markdown-body h1:hover .anchor .octicon-link,
.markdown-body h2:hover .anchor .octicon-link,
.markdown-body h3:hover .anchor .octicon-link,
.markdown-body h4:hover .anchor .octicon-link,
.markdown-body h5:hover .anchor .octicon-link,
.markdown-body h6:hover .anchor .octicon-link {
visibility: visible;
}
.markdown-body h1 {
font-size: 2em;
}
.markdown-body h2 {
font-size: 1.5em;
}
.markdown-body h3 {
font-size: 1.25em;
}
.markdown-body h4 {
font-size: 1em;
}
.markdown-body h5 {
font-size: 0.875em;
}
.markdown-body h6 {
font-size: 0.85em;
color: #6a737d;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}
.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body li>p {
margin-top: 16px;
}
.markdown-body li+li {
margin-top: 0.25em;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: 600;
}
.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markdown-body table th {
font-weight: 600;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #dfe2e5;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #c6cbd1;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f6f8fa;
}
.markdown-body p code {
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
background-color: rgba(27,31,35,0.05);
border-radius: 3px;
}
.markdown-body .full-commit .btn-outline:not(:disabled):hover {
color: #005cc5;
border-color: #005cc5;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
line-height: 10px;
color: #444d56;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
}
.markdown-body :checked+.radio-label {
position: relative;
z-index: 1;
border-color: #0366d6;
}
.markdown-body .task-list-item {
list-style-type: none;
}
.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}
.markdown-body .task-list-item input {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
.markdown-body hr {
border-bottom-color: #eee;
}

123
assets/css/prism.css Normal file
View File

@ -0,0 +1,123 @@
/* http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+bash+coffeescript+go+java+php+python+sass+scss+swift */
/**
* okaidia theme for JavaScript, CSS and HTML
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
* @author ocodia
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #272822;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #f8f8f2;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #f92672;
}
.token.boolean,
.token.number {
color: #ae81ff;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #a6e22e;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function {
color: #e6db74;
}
.token.keyword {
color: #66d9ef;
}
.token.regex,
.token.important {
color: #fd971f;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

1
assets/css/share.min.css vendored Normal file
View File

@ -0,0 +1 @@
@font-face{font-family:"socialshare";src:url("../fonts/iconfont.eot");src:url("../fonts/iconfont.eot?#iefix") format("embedded-opentype"),url("../fonts/iconfont.woff") format("woff"),url("../fonts/iconfont.ttf") format("truetype"),url("../fonts/iconfont.svg#iconfont") format("svg")}.social-share{font-family:"socialshare" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale}.social-share *{font-family:"socialshare" !important}.social-share .icon-tencent:before{content:"\f07a"}.social-share .icon-qq:before{content:"\f11a"}.social-share .icon-weibo:before{content:"\f12a"}.social-share .icon-wechat:before{content:"\f09a"}.social-share .icon-douban:before{content:"\f10a"}.social-share .icon-heart:before{content:"\f20a"}.social-share .icon-like:before{content:"\f00a"}.social-share .icon-qzone:before{content:"\f08a"}.social-share .icon-linkedin:before{content:"\f01a"}.social-share .icon-diandian:before{content:"\f05a"}.social-share .icon-facebook:before{content:"\f03a"}.social-share .icon-google:before{content:"\f04a"}.social-share .icon-twitter:before{content:"\f06a"}.social-share a{position:relative;text-decoration:none;margin:4px;display:inline-block;outline:none}.social-share .social-share-icon{position:relative;display:inline-block;width:32px;height:32px;font-size:20px;border-radius:50%;line-height:32px;border:1px solid #666;color:#666;text-align:center;vertical-align:middle;transition:background 0.6s ease-out 0s}.social-share .social-share-icon:hover{background:#666;color:#fff}.social-share .icon-weibo{color:#ff763b;border-color:#ff763b}.social-share .icon-weibo:hover{background:#ff763b}.social-share .icon-tencent{color:#56b6e7;border-color:#56b6e7}.social-share .icon-tencent:hover{background:#56b6e7}.social-share .icon-qq{color:#56b6e7;border-color:#56b6e7}.social-share .icon-qq:hover{background:#56b6e7}.social-share .icon-qzone{color:#FDBE3D;border-color:#FDBE3D}.social-share .icon-qzone:hover{background:#FDBE3D}.social-share .icon-douban{color:#33b045;border-color:#33b045}.social-share .icon-douban:hover{background:#33b045}.social-share .icon-linkedin{color:#0077B5;border-color:#0077B5}.social-share .icon-linkedin:hover{background:#0077B5}.social-share .icon-facebook{color:#44619D;border-color:#44619D}.social-share .icon-facebook:hover{background:#44619D}.social-share .icon-google{color:#db4437;border-color:#db4437}.social-share .icon-google:hover{background:#db4437}.social-share .icon-twitter{color:#55acee;border-color:#55acee}.social-share .icon-twitter:hover{background:#55acee}.social-share .icon-diandian{color:#307DCA;border-color:#307DCA}.social-share .icon-diandian:hover{background:#307DCA}.social-share .icon-wechat{position:relative;color:#7bc549;border-color:#7bc549}.social-share .icon-wechat:hover{background:#7bc549}.social-share .icon-wechat .wechat-qrcode{display:none;border:1px solid #eee;position:absolute;z-index:9;top:-205px;left:-84px;width:200px;height:192px;color:#666;font-size:12px;text-align:center;background-color:#fff;box-shadow:0 2px 10px #aaa;transition:all 200ms;-webkit-tansition:all 350ms;-moz-transition:all 350ms}.social-share .icon-wechat .wechat-qrcode.bottom{top:40px;left:-84px}.social-share .icon-wechat .wechat-qrcode.bottom:after{display:none}.social-share .icon-wechat .wechat-qrcode h4{font-weight:normal;height:26px;line-height:26px;font-size:12px;background-color:#f3f3f3;margin:0;padding:0;color:#777}.social-share .icon-wechat .wechat-qrcode .qrcode{width:105px;margin:10px auto}.social-share .icon-wechat .wechat-qrcode .qrcode table{margin:0 !important}.social-share .icon-wechat .wechat-qrcode .help p{font-weight:normal;line-height:16px;padding:0;margin:0}.social-share .icon-wechat .wechat-qrcode:after{content:'';position:absolute;left:50%;margin-left:-6px;bottom:-13px;width:0;height:0;border-width:8px 6px 6px 6px;border-style:solid;border-color:#fff transparent transparent transparent}.social-share .icon-wechat:hover .wechat-qrcode{display:block}

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/iconfont.eot Normal file

Binary file not shown.

88
assets/fonts/iconfont.svg Normal file
View File

@ -0,0 +1,88 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Sat Nov 28 22:48:50 2015
By Ads
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="896"
descent="-128"
x-height="792"
bbox="-0.097561 -77 1024.92 839"
underline-thickness="50"
underline-position="-100"
unicode-range="U+0078-F20A"
/>
<missing-glyph horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
<glyph glyph-name=".notdef" horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="341"
/>
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="uniF00A" unicode="&#xf00a;"
d="M911 512l-334 1q19 79 23 116q4 45 -3 76q-11 47 -34 90q-6 12 -17 18.5t-24 6.5h-65q-13 0 -23.5 -6.5t-17 -17t-6.5 -23.5v-35v-32v-26q0 -10 -1 -11q-12 -26 -26.5 -52t-29.5 -51.5t-32 -49.5q-6 -9 -11.5 -17t-11.5 -16t-12.5 -16t-13.5 -15q-13 -14 -13 -32v-411
q0 -19 13 -33q28 -28 73 -28q323 1 440 1q13 0 24 6t17 17l119 203q6 11 9 22.5t3 23.5l1 244q0 13 -6.5 24t-17 17t-23.5 6zM155 445h-42q-13 0 -24 -6t-17 -17t-6 -24v-403q0 -19 13.5 -33t33.5 -14h42q13 0 23.5 6.5t17 17t6.5 23.5v403q0 20 -14 33.5t-33 13.5z" />
<glyph glyph-name="uniF01A" unicode="&#xf01a;"
d="M260 740q0 -41 -29.5 -69.5t-76.5 -28.5q-45 0 -74 28.5t-29 69.5q0 43 29 71t76 28t74.5 -28t29.5 -71zM57 -69v633h197v-633h-197zM371 361q0 89 -4 203h170l10 -88h4q61 103 194 103q103 0 165.5 -69t62.5 -204v-375h-197v351q0 137 -100 137q-72 0 -101 -74
q-6 -12 -6 -49v-365h-198v430z" />
<glyph glyph-name="uniF03A" unicode="&#xf03a;"
d="M751 815v-142h-84q-46 0 -62 -19t-16 -58v-101h157l-21 -158h-136v-407h-164v407h-136v158h136v117q0 100 56 154.5t148 54.5q79 0 122 -6z" />
<glyph glyph-name="uniF04A" unicode="&#xf04a;"
d="M629 830h-245q-37 0 -69 -4t-71.5 -19t-71.5 -41q-37 -31 -56.5 -72.5t-19.5 -82.5q0 -46 22.5 -87t68.5 -68t106 -27h7h8q2 0 7.5 0.5t7.5 1t8 0.5q-1 -1 -2 -4t-1.5 -4t-1.5 -4l-2 -5q0 -1 -1 -3.5t-1.5 -4.5t-1 -4.5t-0.5 -5t-0.5 -5t-0.5 -5.5q0 -17 6.5 -33
t11.5 -23t18 -23q-18 -1 -26.5 -1.5t-29 -2.5t-33.5 -4.5t-34 -6.5t-36.5 -9t-34 -12.5t-33.5 -16.5q-48 -28 -69.5 -66.5t-21.5 -75.5q0 -69 66.5 -117.5t188.5 -48.5q74 0 134.5 19t98.5 50.5t58.5 70t20.5 80.5q0 19 -3.5 36t-11.5 32t-15 26.5t-21 24.5t-23 21t-26 22
l-43 32q-9 8 -14 12.5t-10.5 15.5t-5.5 22.5t6 23t11 17t16 16.5q24 18 37.5 30.5t30 33t24 45.5t7.5 56t-8.5 57.5t-24 46.5t-25.5 30t-26 22h74zM524 120q0 -36 -19.5 -64t-59.5 -44.5t-95 -16.5q-94 0 -151.5 39.5t-57.5 102.5q0 83 102 119q57 19 125 19h6h4
q3 0 4.5 -0.5t3.5 -0.5h5q2 0 4 -1q75 -51 102 -81t27 -72zM429 494q-33 -33 -80 -33q-36 0 -66 21t-47 53.5t-26 67t-9 65.5q0 54 26 86q14 17 36.5 27.5t46.5 10.5q46 0 81.5 -37t51.5 -84.5t16 -92.5v-10q0 -4 -1 -10.5t-2 -12.5t-3.5 -13t-5.5 -13.5t-7.5 -13
t-10.5 -11.5zM865 653v118h-59v-118h-119v-58h119v-118h59v118h118v58h-118z" />
<glyph glyph-name="uniF05A" unicode="&#xf05a;"
d="M540 185h370v370h-369l-1 85h285v114h-285v85h-142v-284h-256v-370h199v-258zM284 279v175h484v-175h-484zM853 100q-17 0 -33 -6.5t-27.5 -18t-18 -27.5t-6.5 -33.5t6.5 -33.5t18 -27.5t27.5 -18.5t33 -7q35 0 60 25.5t25 61t-25 60.5t-60 25zM597.5 100
q-35.5 0 -60.5 -25t-25 -60.5t25 -61t60.5 -25.5t60 25.5t24.5 61t-24.5 60.5t-60 25zM171 100q-14 0 -27 -4t-23.5 -12t-18.5 -18.5t-12 -24t-4 -27.5q0 -35 24.5 -60.5t60 -25.5t60.5 25.5t25 60.5q0 18 -7 34t-18 27.5t-27 18t-33 6.5z" />
<glyph glyph-name="uniF06A" unicode="&#xf06a;" horiz-adv-x="1025"
d="M1024 702q-58 -26 -121 -34q33 20 57 50t36 67q-63 -37 -134 -51q-62 66 -153 66q-57 0 -105.5 -28t-76.5 -76.5t-28 -105.5q0 -8 0.5 -16t2 -16t2.5 -16q-129 7 -241.5 65t-191.5 155q-13 -24 -20.5 -51t-7.5 -55q0 -36 11.5 -69t32.5 -60t49 -46q-50 2 -95 26v-2
q0 -76 48 -134t121 -72q-27 -8 -56 -8q-5 0 -10 1h-10q-5 1 -9.5 1.5t-9.5 1.5q20 -63 74 -103.5t122 -42.5q-36 -28 -77.5 -48t-88 -31t-95.5 -11q-25 0 -50 3q147 -94 322 -94q112 0 210 35.5t168 95t120.5 136.5t75 161.5t24.5 169.5q0 14 -1 27q8 5 15.5 11t14.5 12
l14 14q7 6 13.5 12.5t13 14t12 14.5t11.5 15t11 16z" />
<glyph glyph-name="uniF07A" unicode="&#xf07a;"
d="M435 826q-94 -21 -163.5 -85.5t-98.5 -155.5t-8 -186q7 -34 21 -66q4 -9 12.5 -15t18 -7t18.5 3q15 6 20.5 20.5t-0.5 28.5q-11 25 -17 53q-17 74 6 146t78 123t129.5 67.5t145.5 -6.5t121.5 -78.5t67 -130t-6 -146.5t-77.5 -123t-130 -67q-44 -10 -89 -5q-15 1 -27 -9
t-13.5 -25t8.5 -27.5t25 -13.5q56 -6 112 7q94 20 164 85t98.5 155.5t8 185t-84.5 164.5t-154.5 99t-184.5 9zM542 339q57 13 88 62t18 106q-8 37 -33 64.5t-60.5 39t-72.5 3.5q-57 -13 -88 -62t-19 -106q5 -21 16 -41q-70 -81 -105 -197t-16 -239q2 -16 14.5 -25t28.5 -7
q1 1 2 1q14 3 22.5 15.5t6.5 26.5q-17 105 12.5 204.5t88.5 168.5q46 -25 97 -14z" />
<glyph glyph-name="uniF08A" unicode="&#xf08a;"
d="M767 277q-9 -8 -11 -13.5t0 -16.5l4 -24q-183 2 -297 18q-6 2 0 5l289 201q11 7 -1 9q-7 1 -19 3t-21 3l-9 1q-90 11 -190 11q-170 0 -303 -30h8q225 0 374 -23q7 -2 0 -6l-289 -206l-5 -4q-2 -4 5 -5q45 -6 94 -9q59 -4 116 -4q176 0 312 32l5 1q-19 -15 -63 -30
l42 -226q2 -12 -1.5 -19t-11 -7.5t-18.5 4.5l-241 140q-24 15 -49 -1l-240 -139q-16 -9 -25 -2.5t-5 24.5l53 284q3 9 1.5 14t-8.5 12l-210 193q-9 8 -10.5 16t4.5 13t18 6l268 30q15 2 21 5.5t12 14.5l126 262q9 17 20.5 17t19.5 -17l118 -262q5 -13 11 -17t21 -6l277 -27
q18 -2 21.5 -12t-9.5 -23z" />
<glyph glyph-name="uniF09A" unicode="&#xf09a;"
d="M704 547q-87 0 -163 -38t-120 -103q-22 -32 -33.5 -67t-11.5 -73q0 -41 14 -78h-18q-64 0 -124 18l-124 -56l30 102q-64 43 -101 105t-37 134q0 124 104.5 213t251.5 89q128 0 227 -70t122 -176h-17zM218 557q8 -7 17 -10.5t19 -3.5q22 0 36.5 14.5t14.5 35.5q0 11 -4 20
t-11 16q-2 2 -4 3l-4 4l-4 2l-4 2l-4 2h-6l-4 2h-6q-21 0 -36 -15q-7 -7 -10.5 -16t-3.5 -20q0 -7 1.5 -13.5t5 -12t7.5 -10.5zM1008 266q0 -126 -116 -204l23 -87l-105 49q-50 -16 -106 -16q-124 0 -213 75.5t-89 182.5q0 70 40.5 129t110.5 93q23 11 47.5 18.5t50.5 11.5
t53 4q126 0 215 -75t89 -181zM526.5 629.5q-14.5 14.5 -35 14.5t-34.5 -15q-7 -7 -11 -16t-4 -19q0 -20 14.5 -34.5t35 -14.5t35.5 14q7 8 10.5 16.5t3.5 18.5q0 21 -14.5 35.5zM603 312q9 0 16.5 3.5t13.5 9.5q13 13 13 29q0 8 -3.5 15.5t-9.5 13.5q-12 13 -30 13
q-6 0 -11 -1.5t-10 -4.5t-9 -7q-13 -13 -13 -28q0 -12 6 -21.5t16 -15.5q5 -3 10 -4.5t11 -1.5zM775 323q12 -13 30.5 -13t31.5 13q3 3 5 6.5t4 7.5t2.5 8t0.5 8q0 6 -1.5 11t-4 10t-6.5 9q-13 13 -31.5 13t-30.5 -13q-5 -4 -7.5 -9t-4 -10t-1.5 -11q0 -9 3 -16.5t10 -13.5z
" />
<glyph glyph-name="uniF10A" unicode="&#xf10a;"
d="M138 773h746v-84h-746v84zM820 273v328h-617v-328h617zM292 517h439v-160h-439v160zM686 83q41 63 76 143l-90 33q-35 -97 -81 -176h-156q-39 103 -88 176l-83 -33q51 -77 83 -143h-230v-83h789v83h-220z" />
<glyph glyph-name="uniF11A" unicode="&#xf11a;"
d="M911 223q-5 31 -17 61t-25.5 50.5t-26.5 37t-21 24.5l-8 9q5 44 -2.5 73t-17.5 36l-10 8q-2 62 -18.5 112.5t-39.5 81.5t-54 53.5t-57 32.5t-54 15.5t-38.5 6t-17.5 0.5q-6 0 -16.5 -0.5t-39 -6t-54 -15.5t-57 -32.5t-54.5 -53.5t-39.5 -81.5t-17.5 -112.5q-2 -1 -4.5 -3
t-9.5 -10t-10.5 -20.5t-7 -34t0.5 -49.5l-9 -9q-5 -5 -19.5 -23.5t-26.5 -38t-24.5 -50t-17.5 -61.5q-1 -4 -1 -10t1 -22t3.5 -28t9 -21t15.5 -8t25 17t37 50q23 -62 64 -117q-3 -1 -8 -3.5t-17.5 -10t-21.5 -17t-16 -26t-5 -34.5q0 -2 0.5 -4.5t3 -10t8 -14t17.5 -14.5
t28 -13.5t42.5 -9t58.5 -2.5q13 1 32.5 4t59.5 17t55 36h30q31 -44 141 -56l6 -1q45 -1 78 5.5t47.5 15.5t23 21.5t9 17.5t0.5 8q2 18 -4.5 34t-16.5 26t-20.5 17.5t-18.5 10.5l-8 3q9 11 17 23.5t14 23.5l12 22q6 11 9.5 19.5t6.5 15t4 9.5l1 4q21 -34 37 -50t25.5 -17
t15.5 8t8.5 21t3.5 28t1 23v9v0z" />
<glyph glyph-name="uniF12A" unicode="&#xf12a;" horiz-adv-x="1026"
d="M0 242q0 65 40 140t113 147q96 97 195.5 134.5t140.5 -3.5q36 -36 11 -119q-2 -9 0 -12t5 -4t8 0t8 2l3 1q80 34 141.5 34t87.5 -35q25 -35 0 -101q-1 -8 -3 -11t3 -7.5t7 -5.5t9 -3q33 -10 59.5 -26.5t45 -47t19.5 -66.5q0 -39 -20.5 -79t-62.5 -79t-96 -66.5t-129 -48
t-155 -17.5t-157.5 19.5t-137 52.5t-98.5 87t-37 114zM104 201q5 -55 51 -97t118.5 -62t156.5 -12q128 13 211 80.5t76 151.5q-5 54 -50 96t-120 62.5t-157 12.5q-127 -13 -211 -80.5t-75 -151.5zM237 151q-24 52 3 106q27 53 86.5 80t120.5 10q63 -16 90.5 -67.5
t1.5 -109.5t-90.5 -85t-127.5 -7q-62 19 -84 73zM283 166q5 -21 24.5 -30t43 -1t35.5 28q11 18 6 38.5t-25 28.5q-20 9 -42.5 0.5t-33.5 -25.5q-13 -20 -8 -39zM403 247q-10 -19 8 -27q8 -2 16 1t12 10q6 8 2.5 16t-10.5 10q-7 3 -16 0t-12 -10zM666 746q-3 16 5 30.5
t25 16.5q70 14 139.5 -6.5t118.5 -76.5q50 -56 65 -128.5t-8 -137.5q-5 -16 -19.5 -23t-30 -2t-22.5 19.5t-3 29.5q16 47 6 98t-46 90q-36 40 -85 54.5t-98 5.5q-17 -3 -30 6t-17 24zM699 616q-3 15 5.5 26t20.5 14q35 8 68.5 -2.5t57.5 -37t31 -62.5t-3 -68
q-5 -12 -17.5 -19t-25.5 -2t-20 17.5t-2 25.5q11 36 -13.5 62.5t-61.5 20.5q-13 -3 -25 4t-15 21z" />
<glyph glyph-name="uniF20A" unicode="&#xf20a;"
d="M945 677q-23 37 -54.5 64t-68.5 42.5t-79 18.5q-148 7 -228 -101l-1 2q-1 1 -2 1q0 -3 -3 -3q-80 108 -228 101q-60 -3 -113 -36t-89 -89q-26 -41 -36 -89.5t-5 -99t25 -102.5t54 -98q53 -69 89 -110q122 -134 282 -240l21 -15h6l21 15q78 52 150 113t132 127
q11 13 24 28.5t22.5 28t22 28t20.5 25.5q69 94 79.5 200.5t-41.5 188.5z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
assets/fonts/iconfont.ttf Normal file

Binary file not shown.

BIN
assets/fonts/iconfont.woff Normal file

Binary file not shown.

1
assets/icons/author.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1492075766917" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13139" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><defs><style type="text/css"></style></defs><path d="M512 102.56c-226.144 0-409.44 183.296-409.44 409.44s183.296 409.44 409.44 409.44 409.44-183.296 409.44-409.44c0-226.144-183.296-409.44-409.44-409.44zM512 136.672c206.944 0 375.328 168.352 375.328 375.328 0 91.04-32.608 174.624-86.752 239.68-37.408-15.616-125.76-46.272-180.416-62.432-4.672-1.472-5.408-1.696-5.408-21.12 0-16.032 6.592-32.16 13.024-45.824 6.976-14.848 15.232-39.808 18.208-62.208 8.288-9.632 19.584-28.64 26.848-64.832 6.368-31.904 3.392-43.52-0.832-54.4-0.448-1.152-0.896-2.272-1.248-3.424-1.6-7.488 0.608-46.336 6.048-76.512 3.776-20.704-0.96-64.704-29.472-101.088-17.984-23.008-52.416-51.232-115.296-55.168l-34.496 0.032c-61.824 3.904-96.256 32.128-114.24 55.136-28.48 36.384-33.216 80.416-29.44 101.088 5.504 30.176 7.648 69.024 6.112 76.384-0.32 1.28-0.8 2.4-1.28 3.552-4.192 10.912-7.2 22.496-0.8 54.4 7.232 36.192 18.528 55.2 26.848 64.832 2.944 22.4 11.2 47.36 18.208 62.208 5.088 10.848 7.488 25.632 7.488 46.528 0 19.424-0.736 19.648-5.088 21.024-56.544 16.704-146.528 49.216-180.096 63.904-55.2-65.344-88.576-149.728-88.576-241.76 0-206.944 168.352-375.328 375.328-375.328zM249.952 780.352c38.432-15.68 115.008-43.008 165.344-57.856 29.248-9.216 29.248-33.856 29.248-53.664 0-16.416-1.12-40.608-10.72-61.056-6.592-14.016-14.144-38.048-15.808-56.832-0.352-4.384-2.432-8.48-5.76-11.36-4.832-4.224-14.656-19.712-20.928-50.976-4.96-24.736-2.848-30.144-0.832-35.392 0.864-2.24 1.696-4.448 2.368-6.912 4.096-14.976-0.48-64.16-5.44-91.456-2.176-11.872 0.576-45.568 22.752-73.952 19.904-25.44 50.016-39.616 88.448-42.08l32.352-0.032c39.456 2.496 69.568 16.672 89.504 42.112 22.208 28.384 24.896 62.08 22.72 73.984-4.928 27.264-9.536 76.48-5.44 91.424 0.704 2.496 1.504 4.704 2.368 6.944 2.048 5.216 4.128 10.656-0.8 35.392-6.272 31.264-16.128 46.752-20.96 50.976-3.296 2.912-5.376 6.976-5.76 11.36-1.632 18.816-9.152 42.816-15.744 56.832-7.552 16.064-16.256 37.472-16.256 60.352 0 19.808 0 44.448 29.568 53.76 48.16 14.24 125.12 40.672 165.76 56.64-67.872 67.2-161.12 108.8-263.936 108.8-101.856 0-194.336-40.864-262.016-106.944z" p-id="13140" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

1
assets/icons/date.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1491895550902" class="icon" style="" fill="#A9B0BC" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1875" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><defs><style type="text/css"></style></defs><path d="M511.034511 919.119301c-56.107879 0-110.546745-10.993378-161.805176-32.674167-49.501414-20.936845-93.952812-50.906413-132.122133-89.075735-38.168298-38.168298-68.137867-82.620719-89.074711-132.12111-21.680788-51.259454-32.674167-105.698321-32.674167-161.806199 0-56.107879 10.993378-110.546745 32.674167-161.806199 20.936845-49.500391 50.906413-93.952812 89.074711-132.12111 38.169321-38.168298 82.620719-68.137867 132.122133-89.074711 51.258431-21.680788 105.698321-32.673144 161.805176-32.673144 56.107879 0 110.546745 10.993378 161.805176 32.673144 49.501414 20.936845 93.952812 50.906413 132.122133 89.074711 38.168298 38.168298 68.137867 82.620719 89.074711 132.12111 21.681812 51.259454 32.674167 105.698321 32.674167 161.806199 0 56.107879-10.992355 110.546745-32.674167 161.806199-20.936845 49.500391-50.906413 93.952812-89.074711 132.12111-38.169321 38.169321-82.620719 68.13889-132.12111 89.075735C621.581256 908.125923 567.142389 919.119301 511.034511 919.119301zM511.034511 125.628232c-208.327746 0-377.812835 169.486112-377.812835 377.813858s169.486112 377.813858 377.812835 377.813858c208.327746 0 377.813858-169.487136 377.813858-377.813858S719.362256 125.628232 511.034511 125.628232z" p-id="1876"></path><path d="M441.79045 323.709613l37.708833 0 0 255.262708-37.708833 0 0-255.262708Z" p-id="1877"></path><path d="M441.79045 541.263487l255.262708 0 0 37.708833-255.262708 0 0-37.708833Z" p-id="1878"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

20
assets/icons/logo.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="98px" height="68px" viewBox="0 0 98 68" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>Combined Shape</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M2,4.03781878 L9.91939502,4.03781878 L9.91939502,20.0140983 L20.1454021,20.0140983 L20.1454021,27.7135101 L9.91939502,27.7135101 L9.91939502,43.6897897 L2,43.6897897 L2,4.03781878 Z M39.008444,35.0446021 L39.008444,4.09281458 L31.089049,4.09281458 L31.089049,43.6897897 L39.008444,43.6897897 L39.008444,43.2307869 C39.4950865,41.5576679 40.4965236,40.7211202 42.0127806,40.7211202 C42.8247489,40.7211202 43.4983033,40.9794698 44.0334642,41.4961769 C44.5686251,42.012884 44.8362015,42.6956652 44.8362015,43.5445411 C44.8362015,44.6517705 44.4209967,45.7405298 43.5905747,46.8108516 C42.7601526,47.8811734 41.2285082,49.3020965 38.9955955,51.0736636 C36.7626828,52.8452306 34.9173281,54.8566673 33.4594761,57.1080338 C32.001624,59.3594003 31.2727089,61.7030007 31.2727089,64.1389055 L52.9742971,64.1389055 L52.9742971,58.1045353 L41.0162791,58.1045353 C41.4591709,57.292567 42.7324656,56.0561794 44.8362015,54.3953352 C47.7888133,52.0701534 49.7817964,50.1786649 50.8152105,48.7208128 C51.8486247,47.2629607 52.365324,45.5744612 52.365324,43.6552635 C52.365324,40.9610052 51.470327,38.7927134 49.6803061,37.1503231 C47.8902851,35.5079328 45.4820973,34.68675 42.4556702,34.68675 C41.2026438,34.68675 40.0535688,34.8060338 39.008444,35.0446021 Z M72.575456,1 L72.892381,1 C79.9070214,1 85.8968429,3.87342407 90.8620252,9.62035842 C94.0735473,13.9305592 95.6792843,18.6210014 95.6792843,23.6918258 L95.6792843,24.0087508 C95.6792843,31.0233912 92.7424759,36.9815206 86.8687709,41.8833175 C82.600827,45.0525828 77.9209488,46.6371916 72.828996,46.6371916 L72.512071,46.6371916 C65.5396874,46.6371916 59.5709941,43.7848957 54.6058118,38.0802182 C52.8732801,35.6504482 51.6584133,33.4214317 50.961175,31.3931019 C50.137166,28.8576897 49.7251677,26.3751358 49.7251677,23.9453658 L49.7251677,23.6284408 C49.7251677,16.740571 52.5668996,10.845826 58.2504486,5.94402909 C62.0958238,3.19733253 65.6030915,1.6549799 68.7723567,1.31692494 C69.7442647,1.10564059 71.0119518,1 72.575456,1 Z M58.852606,23.7552108 C58.852606,27.7273566 60.4055227,31.2134961 63.5114027,34.2137339 C66.2792277,36.5801186 69.1843439,37.7632933 72.2268386,37.7632933 L73.1142284,37.7632933 C75.5651269,37.7632933 78.0582448,36.9287326 80.593657,35.2595862 C83.213583,33.3368986 84.9883449,30.8860369 85.9179961,27.9069276 C86.2137942,27.1251755 86.4250753,25.78354 86.551846,23.8819808 C86.551846,19.9943487 85.0411855,16.5610295 82.0198193,13.5819202 C79.188609,11.0676364 76.0827756,9.81051338 72.702226,9.81051338 C68.7512086,9.81051338 65.243941,11.4585066 62.1803179,14.7545425 C60.8914834,16.4448173 60.0780508,17.8815293 59.7399959,19.0647217 C59.1483997,20.7127396 58.852606,22.2762204 58.852606,23.7552108 Z" id="path-1"></path>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.236384737 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="99px" height="67px" viewBox="0 0 99 67" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>Combined Shape</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="100%" y1="100%" x2="0%" y2="0%" id="linearGradient-1">
<stop stop-color="#0089FF" offset="0%"></stop>
<stop stop-color="#02DEF2" offset="100%"></stop>
</linearGradient>
</defs>
<g id="logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M0,3.18261719 L8.296875,3.18261719 L8.296875,19.9204102 L19.0103073,19.9204102 L19.0103073,27.9868164 L8.296875,27.9868164 L8.296875,44.7246094 L0,44.7246094 L0,3.18261719 Z M38.7724609,35.6673467 L38.7724609,3.24023438 L30.4755859,3.24023438 L30.4755859,44.7246094 L38.7724609,44.7246094 L38.7724609,44.2437281 C39.2822994,42.4908595 40.3314703,41.6144375 41.92,41.6144375 C42.7706709,41.6144375 43.4763305,41.8851015 44.037,42.4264375 C44.5976695,42.9677735 44.878,43.6830997 44.878,44.5724375 C44.878,45.7324433 44.4430043,46.8730986 43.573,47.9944375 C42.7029956,49.1157764 41.098345,50.6044282 38.759,52.4604375 C36.419655,54.3164468 34.486341,56.423759 32.959,58.7824375 C31.431659,61.141116 30.668,63.5964247 30.668,66.1484375 L53.404,66.1484375 L53.404,59.8264375 L40.876,59.8264375 C41.3400023,58.9757666 42.673989,57.6804462 44.878,55.9404375 C47.9713488,53.5044253 50.0593279,51.5227785 51.142,49.9954375 C52.2246721,48.4680965 52.766,46.6991142 52.766,44.6884375 C52.766,41.8657567 51.8283427,39.5941128 49.953,37.8734375 C48.0776573,36.1527622 45.5546825,35.2924375 42.384,35.2924375 C41.0712478,35.2924375 39.8674018,35.417407 38.7724609,35.6673467 Z M73.9394531,0 L74.2714844,0 C81.6204795,0 87.8958073,3.01038656 93.0976562,9.03125 C96.4622564,13.5468976 98.1445312,18.4609109 98.1445312,23.7734375 L98.1445312,24.1054688 C98.1445312,31.4544638 95.0677391,37.6965889 88.9140625,42.8320312 C84.442686,46.1523604 79.5397402,47.8125 74.2050781,47.8125 L73.8730469,47.8125 C66.5683229,47.8125 60.3151302,44.8242486 55.1132812,38.8476562 C53.298168,36.3020706 52.0253943,33.9668075 51.2949219,31.8417969 C50.4316363,29.1855336 50,26.5846481 50,24.0390625 L50,23.7070312 C50,16.4908493 52.9771838,10.3151298 58.9316406,5.1796875 C62.9603066,2.30206895 66.634749,0.686199687 69.9550781,0.33203125 C70.9733124,0.110675977 72.3014241,0 73.9394531,0 Z M59.5625,23.8398438 C59.5625,28.0013229 61.1894369,31.6536301 64.4433594,34.796875 C67.3431135,37.2760541 70.3867028,38.515625 73.5742188,38.515625 L74.5039062,38.515625 C77.0716274,38.515625 79.6835805,37.6412848 82.3398438,35.8925781 C85.0846491,33.8782451 86.9440055,31.3105625 87.9179688,28.1894531 C88.2278661,27.3704386 88.4492181,25.9648537 88.5820312,23.9726562 C88.5820312,19.8997192 86.9993648,16.30275 83.8339844,13.1816406 C80.8678237,10.5475129 77.61395,9.23046875 74.0722656,9.23046875 C69.932922,9.23046875 66.2584796,10.957014 63.0488281,14.4101562 C61.698561,16.1809984 60.8463559,17.6861917 60.4921875,18.9257812 C59.8723927,20.6523524 59.5625,22.2903568 59.5625,23.8398438 Z" id="Combined-Shape" fill="url(#linearGradient-1)"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="99px" height="67px" viewBox="0 0 99 67" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>Combined Shape</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="100%" y1="100%" x2="38.1041974%" y2="38.1041974%" id="linearGradient-1">
<stop stop-color="#FFC83E" offset="0%"></stop>
<stop stop-color="#FA709A" offset="100%"></stop>
</linearGradient>
</defs>
<g id="logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M0,3.18261719 L8.296875,3.18261719 L8.296875,19.9204102 L19.0103073,19.9204102 L19.0103073,27.9868164 L8.296875,27.9868164 L8.296875,44.7246094 L0,44.7246094 L0,3.18261719 Z M38.7724609,35.6673467 L38.7724609,3.24023438 L30.4755859,3.24023438 L30.4755859,44.7246094 L38.7724609,44.7246094 L38.7724609,44.2437281 C39.2822994,42.4908595 40.3314703,41.6144375 41.92,41.6144375 C42.7706709,41.6144375 43.4763305,41.8851015 44.037,42.4264375 C44.5976695,42.9677735 44.878,43.6830997 44.878,44.5724375 C44.878,45.7324433 44.4430043,46.8730986 43.573,47.9944375 C42.7029956,49.1157764 41.098345,50.6044282 38.759,52.4604375 C36.419655,54.3164468 34.486341,56.423759 32.959,58.7824375 C31.431659,61.141116 30.668,63.5964247 30.668,66.1484375 L53.404,66.1484375 L53.404,59.8264375 L40.876,59.8264375 C41.3400023,58.9757666 42.673989,57.6804462 44.878,55.9404375 C47.9713488,53.5044253 50.0593279,51.5227785 51.142,49.9954375 C52.2246721,48.4680965 52.766,46.6991142 52.766,44.6884375 C52.766,41.8657567 51.8283427,39.5941128 49.953,37.8734375 C48.0776573,36.1527622 45.5546825,35.2924375 42.384,35.2924375 C41.0712478,35.2924375 39.8674018,35.417407 38.7724609,35.6673467 Z M73.9394531,0 L74.2714844,0 C81.6204795,0 87.8958073,3.01038656 93.0976562,9.03125 C96.4622564,13.5468976 98.1445312,18.4609109 98.1445312,23.7734375 L98.1445312,24.1054688 C98.1445312,31.4544638 95.0677391,37.6965889 88.9140625,42.8320312 C84.442686,46.1523604 79.5397402,47.8125 74.2050781,47.8125 L73.8730469,47.8125 C66.5683229,47.8125 60.3151302,44.8242486 55.1132812,38.8476562 C53.298168,36.3020706 52.0253943,33.9668075 51.2949219,31.8417969 C50.4316363,29.1855336 50,26.5846481 50,24.0390625 L50,23.7070312 C50,16.4908493 52.9771838,10.3151298 58.9316406,5.1796875 C62.9603066,2.30206895 66.634749,0.686199687 69.9550781,0.33203125 C70.9733124,0.110675977 72.3014241,0 73.9394531,0 Z M59.5625,23.8398438 C59.5625,28.0013229 61.1894369,31.6536301 64.4433594,34.796875 C67.3431135,37.2760541 70.3867028,38.515625 73.5742188,38.515625 L74.5039062,38.515625 C77.0716274,38.515625 79.6835805,37.6412848 82.3398438,35.8925781 C85.0846491,33.8782451 86.9440055,31.3105625 87.9179688,28.1894531 C88.2278661,27.3704386 88.4492181,25.9648537 88.5820312,23.9726562 C88.5820312,19.8997192 86.9993648,16.30275 83.8339844,13.1816406 C80.8678237,10.5475129 77.61395,9.23046875 74.0722656,9.23046875 C69.932922,9.23046875 66.2584796,10.957014 63.0488281,14.4101562 C61.698561,16.1809984 60.8463559,17.6861917 60.4921875,18.9257812 C59.8723927,20.6523524 59.5625,22.2903568 59.5625,23.8398438 Z" id="Combined-Shape" fill="url(#linearGradient-1)"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
assets/img/hero.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

BIN
assets/img/profile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

1
assets/js/index.min.js vendored Normal file
View File

@ -0,0 +1 @@
$(document).ready(function(){function e(e,a){var t=e.width(),n=a.width(),o=e.height(),s=a.height();if(o<s){e.css({width:"auto",height:"100%"}),t=e.width(),n=a.width();var r=(t-n)/2;e.css("margin-left","-"+r+"px")}else{var c=(s-o)/2;e.css("margin-top",c+"px")}e.fadeIn()}function a(){var e=$("#search_input"),a=$(".search_result");e.focus(function(){$(".icon-search").css("color","#3199DB"),a.show()}),e.keyup(t(this.autoComplete)),$(document).click(function(e){"search_input"!==e.target.id&&"search_result"!==e.target.className&&"search_item"!==e.target.className&&($(".icon-search").css("color","#CAD3DC"),a.hide())})}function t(e,a){var t;return a=a||120,function(){var n=this,o=arguments,s=function(){e.apply(n,o)};clearTimeout(t),t=setTimeout(s,a)}}function n(e){e+="\n\n著作权归作者所有。\n商业转载请联系作者获得授权,非商业转载请注明出处。\n原文: "+location.href,$(".post-content").on("copy",function(a){(window.clipboardData||a.originalEvent.clipboardData).setData("text/plain",e),a.preventDefault()})}var o=$(".g-nav");if($("#menu-toggle").on("click",function(e){o.slideToggle(200),$(document).on("click",function(){o.slideUp(200)}),e.stopPropagation()}),o.on("click",function(e){e.stopPropagation()}),$(window).width()>695){var s=$(".g-header"),r=s.outerHeight(),c=$(".g-logo"),i=o.find("a"),l=$(".g-banner").attr("data-theme"),u=$(document).scrollTop();$(document).scroll(function(){var e=$(this).scrollTop(),a="nav-"+l;e>r?(e>3*r&&s.addClass("headerUp"),s.css({"background-color":"rgba(255, 255, 255, .98)","box-shadow":"0 1px 12px rgba(0, 0, 0, .08)"}),c.css({'background':"url(/assets/icons/logo_"+l+".svg) no-repeat center","background-size":"100% 100%"}),i.css("color","#666"),o.addClass(a)):(s.removeClass("headerUp"),s.css({"background-color":"transparent","box-shadow":"none"}),c.css({'background':"url(/assets/icons/logo.svg) no-repeat center","background-size":"100% 100%"}),i.css("color","#fff"),o.removeClass(a)),u>e?s.addClass("headerDown"):s.removeClass("headerDown"),u=e})}$(".read-next-item section").each(function(){var e=$(this).height(),a=$(".read-next-item").height();$(this).css("margin-top",(a-e)/2+"px"),$(this).fadeIn()}),$(".read-next-item img").each(function(){e($(this),$(".read-next-item"))}),function(){for(var e=parseInt($("#total_pages").val()),a=parseInt($("#current_pages").val()),t=$("#base_url").val(),n="",o=a-3;o<a;o++)o>0&&1!==o?n+='<a href="'+t+"page"+o+'" class="page-link page-num">'+o+"</a>":1===o&&(n+='<a href="'+t+'" class="page-link page-num">'+o+"</a>");n+='<span class="page-link page-num active">'+a+"</span>";for(var s=a+1;s<=a+3;s++)s<=e&&(n+='<a href="'+t+"page"+s+'" class="page-link page-num">'+s+"</a>");$("#page-link-container").html(n)}(),a.prototype.autoComplete=function(){var e=this.value.toLowerCase();e.length?$(".icon-search").css("color","#3199DB"):$(".icon-search").css("color","#CAD3DC"),$.getJSON("../../search.json").done(function(a){var t="";for(var n in a){var o=a[n],s=o.title,r=o.tags,c=(o.url,s+r);""!==e&&c.toLowerCase().indexOf(e)>=0&&(t+='<a class="search_item" href="'+o.url+'">'+o.title+"</a>")}$(".search_result").html(t)})},new a,"true"===$("#nm-switch").val()&&function(){var e=$("body"),a=new Date,t=a.getHours();(t>=0&&t<=6||23===t)&&e.addClass("night-mode")}(),$(".post-content").on("mouseup",function(e){var a=window.getSelection();a.toString().length>=30&&n(a)})});

15
assets/js/prism.js Normal file

File diff suppressed because one or more lines are too long

1
assets/js/social-share.min.js vendored Normal file

File diff suppressed because one or more lines are too long

16
assets/js/util.js Normal file
View File

@ -0,0 +1,16 @@
// Author: Ray-Eldath
// refer to:
// - https://github.com/theme-next/hexo-theme-next/blob/master/source/js/src/utils.js
class utils {
static getContentVisibilityHeight() {
var docHeight = $('.visible').height(),
winHeight = $(window).height(),
contentVisibilityHeight = (docHeight > winHeight) ? (docHeight - winHeight) : ($(document).height() - winHeight);
return contentVisibilityHeight;
}
static isMobile() {
return window.screen.width < 767;
}
}

248
dev/js/index.js Normal file
View File

@ -0,0 +1,248 @@
$(document).ready(function(){
var nav = $('.g-nav');
/**
* Responsive Navigation
*/
$('#menu-toggle').on('click', function(e) {
var duration = 200;
nav.slideToggle(duration);
$(document).on('click', function() {
nav.slideUp(duration);
});
e.stopPropagation();
});
nav.on('click', function(e) {
e.stopPropagation();
});
/*
* Header Bar
*/
if($(window).width() > 695) {
var header = $('.g-header');
var headerHeight = header.outerHeight();
var logo = $('.g-logo');
var navText = nav.find('a');
var themeStyle = $('.g-banner').attr('data-theme');
var scFlag = $(document).scrollTop();
$(document).scroll(function() {
var scrollTop = $(this).scrollTop();
var navClassName = 'nav-' + themeStyle;
if (scrollTop > headerHeight) {
if(scrollTop > 3 * headerHeight) {
header.addClass('headerUp');
}
header.css({
'background-color': 'rgba(255, 255, 255, .98)',
'box-shadow': '0 1px 12px rgba(0, 0, 0, .08)'
});
logo.css({
'background': 'url(/assets/icons/logo_' + themeStyle + '.svg) no-repeat center',
'background-size': '100% 100%'
});
navText.css('color', '#666');
nav.addClass(navClassName);
} else {
header.removeClass('headerUp');
header.css({
'background-color': 'transparent',
'box-shadow': 'none'
});
logo.css({
'background': 'url(/assets/icons/logo.svg) no-repeat center',
'background-size': '100% 100%'
});
navText.css('color', '#fff');
nav.removeClass(navClassName);
}
// scroll action
if (scFlag > scrollTop) {
header.addClass('headerDown');
} else {
header.removeClass('headerDown');
}
scFlag = scrollTop;
});
}
/*
* Post Cover Resize
*/
function postCover(img, container) {
var imgWidth = img.width();
var containerWidth = container.width();
var imgHeight = img.height();
var containerHeight = container.height();
if (imgHeight < containerHeight) {
img.css({
'width': 'auto',
'height': '100%'
});
imgWidth = img.width(),
containerWidth = container.width();
var marginLeft = (imgWidth - containerWidth) / 2;
img.css('margin-left', '-' + marginLeft + 'px');
} else {
var marginTop = (containerHeight - imgHeight) / 2;
img.css('margin-top', marginTop + 'px');
}
img.fadeIn();
}
/**
* The Post Navigator
*/
$('.read-next-item section').each(function() {
var n = $(this).height();
var rn = $('.read-next-item').height();
$(this).css('margin-top', (rn - n) / 2 + 'px');
$(this).fadeIn();
});
$('.read-next-item img').each(function(){
postCover($(this), $('.read-next-item'));
});
/**
* Pagination
*/
function pagination() {
var total = parseInt($('#total_pages').val());
var current = parseInt($('#current_pages').val());
var baseUrl = $('#base_url').val();
var limit = 3;
var link_html = '';
for (var i = current - limit; i < current; i++) {
if (i > 0 && i !== 1) {
link_html += '<a href="' + baseUrl + 'page' + i + '" class="page-link page-num">' + i + '</a>';
} else if (i === 1) {
link_html += '<a href="' + baseUrl + '" class="page-link page-num">' + i + '</a>';
}
}
link_html += '<span class="page-link page-num active">' + current + '</span>';
for (var j = current + 1; j <= current + limit; j++) {
if (j <= total) {
link_html += '<a href="' + baseUrl + 'page' + j + '" class="page-link page-num">' + j + '</a>';
}
}
$('#page-link-container').html(link_html);
}
pagination();
/**
* Search
*/
function Search() {
var self = this;
var input = $('#search_input');
var result = $('.search_result');
input.focus(function() {
$('.icon-search').css('color', '#3199DB');
result.show();
});
input.keyup(debounce(this.autoComplete));
$(document).click(function(e) {
if(e.target.id === 'search_input' || e.target.className === 'search_result' || e.target.className === 'search_item') {
return;
}
$('.icon-search').css('color', '#CAD3DC');
result.hide();
});
}
Search.prototype.autoComplete = function() {
var keywords = this.value.toLowerCase();
if (keywords.length) {
$('.icon-search').css('color', '#3199DB');
} else {
$('.icon-search').css('color', '#CAD3DC');
}
$.getJSON('../../search.json').done(function(data) {
var html = '';
for (var i in data) {
var item = data[i];
var title = item.title;
var tags = item.tags;
var url = item.url;
var k = title + tags;
if (keywords !== '' && k.toLowerCase().indexOf(keywords) >= 0) {
html += '<a class="search_item" href="' + item.url + '">' + item.title + '</a>';
}
}
$('.search_result').html(html);
});
};
function debounce(fn, delay) {
var timer;
delay = delay || 120;
return function () {
var ctx = this;
var args = arguments;
var later = function() {
fn.apply(ctx, args);
};
clearTimeout(timer);
timer = setTimeout(later, delay);
};
}
new Search();
/**
* Night mode
*/
function nightMode() {
var el = $('body');
var className = 'night-mode';
var date = new Date();
var hour = date.getHours();
if (hour <= 6 || hour >= 18) {
el.addClass(className);
}
}
if ($('#nm-switch').val() === 'true') {
nightMode();
}
/**
* Copy and copyright
*/
function setClipboardData(str) {
str += '\n\n著作权归作者所有。\n商业转载请联系作者获得授权,非商业转载请注明出处。\n原文: ' + location.href;
$('.post-content').on('copy', function(e) {
var data = window.clipboardData || e.originalEvent.clipboardData;
data.setData('text/plain', str);
e.preventDefault();
});
}
$('.post-content').on('mouseup', function(e) {
var txt = window.getSelection();
if (txt.toString().length >= 30) {
setClipboardData(txt);
}
});
});

1044
dev/sass/app.css Normal file

File diff suppressed because one or more lines are too long

8
dev/sass/app.scss Normal file
View File

@ -0,0 +1,8 @@
/**
* Jekyll Theme Style
* - author: liaokeyu (liaokeyu.com)
*/
@import 'helper';
@import 'base';
@import 'common';
@import 'layouts'

46
dev/sass/base.scss Normal file
View File

@ -0,0 +1,46 @@
/** Font **/
@font-face {
font-family: "Merriweather";
src: url("../fonts/Merriweather-Black.ttf");
}
@font-face {
font-family: "Merriweather-Light";
src: url("../fonts/Merriweather-Light.ttf");
}
/*** Base ***/
html, body {
height: 100%;
}
html, body, div, span, h1, h2, h3, h4, h5, h6, p, ol, ul, li, textarea,
form, label, legend, table, caption, menu, nav, section, summary,
time, mark, audio, video, iframe, main, header, footer {
padding: 0;
margin: 0;
border: 0;
outline: 0 none;
}
body {
font-family: $fonts;
color: $color-f-secondary;
-webkit-font-smoothing: antialiased;
background-color: $color-bg;
}
ul {
list-style-type: none;
}
a {
color: $color-f-primary;
text-decoration: none;
cursor: pointer;
transition: .2s;
}
::selection {
background-color: rgba(0, 147, 254, .2);
}
::-moz-selection {
background-color: rgba(0, 147, 254, .2);
}
::-webkit-selection {
background-color: rgba(0, 147, 254, .2);
}

872
dev/sass/common.scss Normal file
View File

@ -0,0 +1,872 @@
/*** Main style ***/
.g-container {
width: $g-container-w;
}
.g-header {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: $g-header-h;
padding: 16px 0;
background-color: transparent;
transition: all .6s;
z-index: 1000;
.g-logo {
float: left;
margin-left: 2%;
width: 60px;
height: $g-header-h;
background: url('../icons/logo.svg') no-repeat center;
background-size: 100% 100%;
opacity: .8;
transition: all .2s;
&:hover {
opacity: 1;
}
a {
display: block;
width: 100%;
height: 100%;
}
}
.icon-menu {
display: none;
position: absolute;
top: 22px;
right: 0;
padding: 8px;
font-size: 28px;
color: #fff;
opacity: .8;
border-radius: 3px;
&:active {
background-color: rgba(255, 255, 255, .2);
}
}
.g-nav {
float: right;
margin-right: 2%;
&>ul>li{
float: left;
height: $g-header-h;
line-height: $g-header-h;
text-transform: uppercase;
margin-right: 18px;
&:last-child {
margin-right: 0;
}
&>a {
display: inline-block;
font-size: 14px;
letter-spacing: 1px;
color: #fff;
padding: 0 12px;
opacity: .7;
&:hover {
opacity: 1;
}
}
}
}
.nav-default {
a:hover {
color: $color-theme-default !important;
}
}
.nav-pink {
a:hover {
color: $color-theme-pink !important;
}
}
}
// header scroll
.headerUp{
top: -65px;
}
.headerDown{
top: 0;
}
.g-banner {
height: $g-banner-h;
background-color: #2F3139;
color: #fff;
padding: 0 60px;
}
.home-banner {
position: relative;
text-align: center;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 38, 55, .16);
h2, h3{
position: relative;
z-index: 1;
text-shadow: 0 1px 1px rgba(0, 0, 0, .2);
}
h2 {
padding-top: 190px;
line-height: 38px;
font-size: 42px;
font-family: 'Arial', 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
font-weight: bold;
letter-spacing: 2px;
line-height: 52px;
}
h3 {
font-size: 20px;
font-weight: normal;
letter-spacing: 10px;
margin-top: 8px;
}
}
.banner-theme-default {
background: -webkit-linear-gradient(0deg, #3CD5FF, #007AFF);
background: -o-linear-gradient(0deg, #3CD5FF, #007AFF);
background: -moz-linear-gradient(0deg, #3CD5FF, #007AFF);
background: linear-gradient(100deg, #3CD5FF, #007AFF);
}
.banner-theme-pink {
background: -webkit-linear-gradient(0deg, #FFCE69, #FA709A);
background: -o-linear-gradient(0deg, #FFCE69, #FA709A);
background: -moz-linear-gradient(0deg, #FFCE69, #FA709A);
background: linear-gradient(100deg, #FFCE69, #FA709A);
}
.themeColor-default {
background-color: $color-theme-default;
}
.themeColor-pink {
background-color: $color-theme-pink;
}
.home-content {
margin: 40px auto 60px;
@include clearfix;
}
.article-list {
float: left;
width: 695px;
.article-item {
width: 100%;
margin-bottom: 16px;
@include cardStyle;
&:last-child {
margin-bottom: 0;
}
.post-link {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.post-cover {
position: relative;
width: 100%;
max-height: 300px;
margin-bottom: 14px;
overflow: hidden;
img {
width: 100%;
vertical-align: middle;
}
}
.post-preview {
position: relative;
.post-title {
font-family: 'Merriweather', $fonts;
color: $color-f-primary;
font-size: 24px;
line-height: 32px;
}
.post-subtitle {
margin-top: 3px;
font-size: 18px;
font-weight: normal;
color: $color-brand;
line-height: 26px;
}
.post-excerpt {
margin-top: 8px;
font-size: 16px;
font-family: 'Merriweather-Light', $fonts;
line-height: 26px;
word-break: break-all;
}
}
.post-meta {
height: 22px;
margin-top: 16px;
.post-tags {
float: left;
display: inline-block;
}
.post-date {
float: right;
color: #A9B0BC;
@include timeStyle;
}
}
}
}
.author-card {
@include authorCard;
}
.article-item .post-meta .post-tag, .tags-card .tag, .tags-content .tag{
@include tagStyle;
}
.g-sidebar-wrapper {
float: right;
width: 240px;
}
.g-sidebar {
@include cardStyle;
section {
padding: 30px 0;
border-bottom: 1px solid #E7EAF1;
&:first-child {
padding-top: 0;
}
&:last-child {
border-bottom: none;
padding-bottom: 0;
}
.tag {
margin-bottom: 8px;
}
}
}
.search-card {
position: relative;
margin-top: 16px;
padding: 0;
// float: right;
// width: 240px;
input, .search_item {
font-size: 16px;
color: $color-f-primary;
}
input {
@include cardStyle;
position: relative;
padding: 12px 46px 12px 18px;
margin: 0;
width: 100%;
background-color: #fff;
outline: none;
z-index: 1;
}
::-webkit-input-placeholder {
color: #9EA8B3;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #9EA8B3;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #9EA8B3;
}
.icon-search {
position: absolute;
top: 10px;
right: 18px;
font-size: 26px;
color: #CAD3DC;
transition: .2s;
z-index: 1;
}
.search_result {
position: relative;
margin-top: -2px;
// max-height: 230px;
background-color: #fff;
border-radius: 0 0 4px 4px;
// overflow: scroll;
z-index: 0;
}
.search_item {
padding: 6px 18px;
margin-bottom: 0;
width: 100%;
display: block;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
border-left: 1px solid #E7EAF1;
border-right: 1px solid #E7EAF1;
box-sizing: border-box;
opacity: .8;
transition: .2s;
&:first-child {
padding-top: 14px;
}
&:last-child {
padding-bottom: 14px;
border-radius: 0 0 4px 4px;
border-bottom: 1px solid #E7EAF1;
}
&:hover {
opacity: 1;
background-color: #FAFAFA;
}
}
}
.pagination {
float: left;
position: relative;
left: 50%;
margin: 8px auto 0;
.page-links {
position: relative;
left: -50%;
border: 1px solid #E7EAF1;
border-radius: 3px;
background-color: #fff;
padding: 0 8px;
overflow: auto;
box-shadow: 0 1px 3px rgba(0, 37, 55, .06);
}
.page-link {
display: block;
float: left;
width: 34px;
height: 34px;
margin: 6px;
font-size: 16px;
color: #A9B0BC;
line-height: 34px;
text-align: center;
border-radius: 2px;
cursor: pointer;
&:hover {
color: #8F98AA;
background-color: #EEF0F4;
}
}
.active {
color: #8F98AA;
background-color: #EEF0F4;
}
#page-link-container {
display: inline-block;
float: left;
}
}
.g-footer {
min-height: $g-footer-h;
padding: 20px 0;
border-top: 1px solid #E7EAF1;
text-align: center;
section {
font-size: 14px;
line-height: 20px;
color: #A6ABB2;
a {
color: #A6ABB2;
&:hover {
color: #83888F;
}
}
}
}
.post-header, .markdown-body, .post-wrapper, .author-detail, .social-share-wrapper {
margin: 0 auto;
}
.post-wrapper {
width: $post-content-w;
}
.post-header {
position: relative;
padding: 0;
margin: 0;
color: #fff;
overflow: hidden;
background-color: #4285f4;
z-index: 0;
h1 {
font-size: 32px;
line-height: 42px;
margin-bottom: 12px;
}
.post-tags {
margin: 150px 0 16px;
.post-tag {
@include tagStyle;
color: #fff;
background-color: rgba(255, 255, 255, .26);
box-shadow: none;
margin-bottom: 8px;
&:hover {
color: #fff;
background-color: rgba(255, 255, 255, .4);
}
}
}
.post-meta {
margin-top: 32px;
.post-meta-item {
display: inline-block;
font-size: 16px;
color: #fff;
margin-right: 4px;
opacity: .8;
&:last-child {
margin-right: 0;
}
.iconfont {
font-size: 18px;
margin-right: 4px;
}
a {
color: #fff;
}
}
}
.filter {
position: absolute;
content: '';
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #000;
opacity: .3;
z-index: -1;
}
.post-cover {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -2;
}
}
.bgcolor-default {
background-color: $color-theme-default;
}
.bgcolor-pink {
background-color: $color-theme-pink;
}
.post-no-cover {
height: 360px;
.post-tags {
margin-top: 100px;
}
}
.post-pattern-circuitBoard {
@include postHeaderPattern('circuitBoard');
}
.post-pattern-overlappingCircles {
@include postHeaderPattern('overlappingCircles');
}
.post-pattern-food {
@include postHeaderPattern('food');
}
.post-pattern-glamorous {
@include postHeaderPattern('glamorous');
}
.post-pattern-ticTacToe {
@include postHeaderPattern('ticTacToe');
}
.post-pattern-seaOfClouds {
@include postHeaderPattern('seaOfClouds');
}
.post-content {
position: relative;
width: 100%;
background-color: #fff;
overflow: hidden;
padding: 40px 0 80px;
.post-subtitle {
position: relative;
width: $post-content-w;
font-size: 18px;
color: #a6a6a6;
font-weight: normal;
line-height: 28px;
text-align: center;
padding: 35px 0;
margin: 0 auto 40px;
box-sizing: border-box;
&:before, &:after {
position: absolute;
content: '';
left: 50%;
margin-left: -13%;
width: 26%;
height: 2px;
background-color: #EAECEE;
}
&:before {
top: 0;
}
&:after {
bottom: 0;
}
}
}
// Post style
.markdown-body {
font-family: 'Merriweather-Light', $fonts;
width: $post-content-w;
box-sizing: border-box;
padding: 0 0 32px;
.highlight {
margin: 0 0 16px;
/** overflow: scroll; 修复代码高亮 显示两个 scroll的问题 **/
}
img {
transition: .3s;
}
ul, ol {
li {
p {
margin: 0;
&:first-child {
margin-bottom: 0;
}
}
}
}
}
.social-share-wrapper {
float: left;
position: relative;
left: 50%;
.social-share {
position: relative;
left: -50%;
}
}
.post-footer-item {
margin: 0 auto;
width: $post-content-w;
}
.author-detail {
position: relative;
top: -35px;
.comment {
margin-bottom: 60px;
}
}
.read-next {
display: flex;
width: $post-content-w;
margin: 60px auto;
}
.read-next-item {
position: relative;
flex: 1;
height: 260px;
padding: 0;
top: 0;
background-color: #AAB4CA;
border-radius: 3px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(109, 127, 144, .5);
transition: box-shadow .4s ease, top .3s ease;
&:first-child {
margin-right: 10px;
}
&:hover {
top: -5px;
box-shadow: 0 8px 20px rgba(52, 61, 70, .3);
}
.read-next-link {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 3;
}
section {
display: none;
position: relative;
width: 80%;
margin-left: 10%;
margin-top: 45px;
color: #fff;
z-index: 2;
span {
font-size: 22px;
font-weight: bold;
margin: 0;
}
p {
margin-top: 8px;
font-size: 15px;
line-height: 22px;
opacity: .8;
}
}
.filter {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .22);
z-index: 1;
transition: .3s linear;
}
img {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
-webkit-filter: blur(6px);
z-index: 0;
}
}
.tags-banner {
height: 300px;
text-align: center;
h2 {
font-size: 36px;
line-height: 300px;
}
}
.tags-content {
width: 695px;
margin: -100px auto 0;
}
.tags-list {
padding: 40px 0;
li {
@include cardStyle;
margin-bottom: 12px;
&:first-child {
margin-bottom: 24px;
cursor: default;
}
.tag {
box-shadow: 0 0 .3px #BFC2C6;
margin-bottom: 12px;
}
.tag-name {
display: block;
font-size: 20px;
color: #333;
text-align: center;
margin-bottom: 20px;
}
.tag-post {
display: block;
font-size: 16px;
color: #666;
text-align: center;
margin: 16px auto;
&:hover {
color: #000;
}
}
}
}
// 404 page
.np-banner {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 0 !important;
text-align: center;
h1 {
font-size: 86px;
letter-spacing: 4px;
font-weight: normal;
padding: 160px 0 20px;
}
.subheading {
font-size: 18px;
}
.btn {
display: block;
width: 160px;
height: 38px;
font-size: 16px;
color: #fff;
line-height: 38px;
border-radius: 3px;
border: 1px solid #fff;
margin: 80px auto 0;
opacity: .8;
}
}
// 夜间模式
.night-mode {
background-color: $color-dark-primary;
.g-banner {
background-color: $color-dark-primary;
color: #C8CDD3;
}
.post-header {
.filter {
opacity: .6;
}
}
.article-item, .g-sidebar, .page-links, .search-card input, .search_result,
.search_item, .article-item .post-tag, .tags-card .tag, .tags-list li,
.tags-list .tag {
color: $color-f-dark;
background-color: $color-dark-secondary;
border-color: rgba(255, 255, 255, 0.1);
}
.article-item {
.post-cover img {
-webkit-filter: brightness(.6);
}
.post-preview {
.post-title, .post-subtitle, .post-excerpt {
color: $color-f-dark;
}
}
.post-meta {
.post-tags, .post-date {
color: $color-f-dark;
}
}
}
.pagination {
.page-link{
&:hover {
background-color: rgba(255, 255, 255, .1);
}
}
.active {
background-color: rgba(255, 255, 255, .1);
}
}
.g-sidebar {
section {
border-bottom: 1px solid rgba(255, 255, 255, .1);
&:last-child {
border-bottom: none;
}
}
}
.avatar img {
-webkit-filter: brightness(.6);
}
.author-name, .bio {
color: $color-f-dark;
}
.search_result {
.search_item {
&:last-child {
border-color: rgba(255, 255, 255, 0.1);
}
&:hover {
background-color: transparent;
color: #fff;
}
}
}
.article-item .post-tag, .tags-card .tag {
border: none;
}
.tags-list {
li {
.tag-name, .tag-post {
color: $color-f-dark;
}
}
}
.g-footer {
border-color: rgba(255, 255, 255, 0.1);
section {
color: $color-f-dark;
}
}
.post-content {
background-color: $color-dark-primary;
.post-subtitle {
&:before, &:after {
background-color: #575B63;
}
}
}
.markdown-body {
color: $color-f-dark;
img {
-webkit-filter: brightness(.6);
}
blockquote {
border-left-color: #555A61;
}
}
.read-next-item {
background-color: #484D59;
section {
color: #AEB4BD;
}
.filter {
background-color: rgba(0, 0, 0, .6);
}
}
:not(pre) > code[class*="language-"], pre[class*="language-"] {
background-color: $color-dark-secondary;
}
code[class*="language-"], pre[class*="language-"], .token.punctuation,
.token.operator, .token.entity, .token.url, .language-css .token.string,
.style .token.string, .token.variable {
color: #8F97A7;
}
.token.atrule, .token.attr-value, .token.function {
color: #A9A054;
}
.token.selector, .token.attr-name, .token.string, .token.char,
.token.builtin, .token.inserted {
color: #84AC35;
}
.token.property, .token.tag, .token.constant, .token.symbol, .token.deleted {
color: #D75885;
}
.token.keyword {
color: #61BDCF;
}
}

219
dev/sass/helper.scss Normal file

File diff suppressed because one or more lines are too long

282
dev/sass/layouts.scss Normal file
View File

@ -0,0 +1,282 @@
@media screen and (min-width: 1920px) {
.home-banner {
height: 600px;
h2 {
padding-top: 260px;
font-size: 42px;
}
h3 {
font-size: 22px;
}
}
}
@media screen and (max-width: $g-container-w) {
.g-container {
width: auto;
}
.article-list {
float: none;
margin: 0 auto;
}
.g-sidebar, .search-card {
display: none;
}
.pagination {
.page-num {
display: none;
}
.page-link {
width: 56px;
}
}
}
@media screen and (max-width: 768px) {
.post-wrapper, .markdown-body, .read-next {
width: 92%;
}
.post-content {
.post-subtitle {
width: 92%;
}
}
.author-detail {
.author-card {
width: 92%;
}
}
}
@media screen and (max-width: 695px) {
.g-header {
position: absolute;
top: 0;
padding: 28px 0;
.icon-menu {
display: block;
}
.g-nav {
position: relative;
top: 48px;
right: 1%;
display: none;
width: 120px;
background-color: #fff;
border-radius: 2px;
padding: 8px 16px;
box-shadow: 0 3px 8px rgba(0, 0, 0, .2);
&>ul>li{
float: none;
height: auto;
line-height: normal;
margin-right: 0;
&>a {
display: block;
padding: 16px 0;
font-size: 16px;
font-weight: bold;
color: #A5A8B0;
opacity: 1;
}
}
}
}
.author-detail {
.author-card {
.sns-links {
margin-top: 24px;
li {
width: 36px;
height: 36px;
.iconfont {
font-size: 32px;
line-height: 40px;
}
}
}
}
.comment {
width: 90%;
}
}
.read-next {
display: block;
}
.read-next-item {
margin-bottom: 16px;
&:first-child {
margin-right: 0;
}
&:last-child {
margin-bottom: 0;
}
&:hover {
top: 0;
box-shadow: none;
}
section {
width: 90%;
margin-left: 5%;
margin-top: 45px;
}
}
.g-banner {
padding: 0 20px;
}
.home-banner, .tags-banner {
h3 {
margin-top: 8px;
}
}
.home-content {
margin-top: 0;
}
.article-list, .tags-content {
width: 100%;
}
.tags-content {
margin-top: 0;
}
.tags-banner {
height: 300px;
}
.tags-list {
padding: 0 0 24px;
}
.g-footer {
padding: 30px 0;
}
}
@media screen and (max-width: 500px) {
.home-banner {
height: 400px;
h2 {
padding-top: 180px;
font-size: 28px;
line-height: 48px;
}
h3 {
margin-top: 2px;
font-size: 18px;
letter-spacing: 6px;
}
}
.home-content {
margin-bottom: 32px;
}
.article-list {
.article-item {
padding: 20px 16px;
margin-bottom: 8px;
border-left: none;
border-right: none;
border-radius: 0;
box-shadow: none;
&:first-child {
border-top: none;
}
.post-cover {
max-height: 200px;
}
.post-preview {
.post-title {
font-size: 18px;
line-height: 26px;
}
.post-subtitle {
font-size: 16px;
line-height: 20px;
}
}
.post-meta {
margin-top: 12px;
.post-tags {
display: none;
}
.post-date {
float: left;
margin-left: 5px;
}
}
}
}
.pagination {
.page-links {
box-shadow: none;
}
}
.post-header{
padding: 0;
height: 360px;
}
.post-wrapper {
.post-tags {
margin: 100px 0 8px;
}
h1 {
font-family: "Helvetica Neue", Helvetica, Arial, "Pingfang SC", "Microsoft Yahei", Sans-serif;
}
.post-meta {
margin-top: 16px;
}
}
.post-content {
padding-top: 20px;
.post-subtitle {
padding: 8px 0 24px;
margin-bottom: 32px;
&:before {
height: 0;
}
}
}
.markdown-body {
p, ul>li {
font-size: 16px;
font-weight: 300;
-webkit-font-smoothing: auto;
-moz-osx-font-smoothing: auto;
}
h1, h2, h3, h4 {
margin-top: 24px;
}
table {
margin: 16px auto;
}
img {
margin: 0 auto 16px;
}
strong {
font-weight: 400;
}
blockquote {
p {
font-size: 18px;
letter-spacing: 1px;
color: #888;
word-break: break-all;
}
}
}
}
@media screen and (max-width: 376px) {
.home-banner {
h2 {
font-size: 26px;
line-height: 38px;
}
h3 {
margin-top: 4px;
font-size: 16px;
}
}
}

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

28
gulpfile.js Normal file
View File

@ -0,0 +1,28 @@
var gulp = require('gulp'),
uglify = require('gulp-uglify'), // 压缩js文件
sass = require('gulp-sass'), // 编译sass
cleanCSS = require('gulp-clean-css'), // 压缩css文件
rename = require('gulp-rename'); // 文件重命名
gulp.task('scripts', function(){
gulp.src('dev/js/index.js')
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('assets/js'))
});
gulp.task('sass', function(){
gulp.src('dev/sass/app.scss')
.pipe(sass())
.pipe(gulp.dest('dev/sass'))
.pipe(cleanCSS())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('assets/css'));
});
gulp.task('watch', function(){
gulp.watch('dev/sass/*.scss', ['sass']);
gulp.watch('dev/js/*.js', ['scripts']);
});
gulp.task('default', ['scripts', 'sass', 'watch']);

104
index.html Normal file
View File

@ -0,0 +1,104 @@
---
layout: default
home-title: H2O Theme For Jekyll
description: 或许是最漂亮的Jekyll主题
---
{% include header.html %}
<div
class="g-banner home-banner {{ site.theme-color | prepend: 'banner-theme-' }}"
data-theme="{{ site.theme-color }}"
style="{% if page.header-img %}background: url({{ page.header-img | relative_url }}) no-repeat center center; background-size: cover;{% endif %}"
>
<h2>{{ page.home-title }}</h2>
<h3>{{ page.description }}</h3>
</div>
<main class="g-container home-content">
<div class="article-list">
{% for post in paginator.posts %}
<article class="article-item">
{% if post.cover %}
<div class="post-cover">
<a class="post-link" href="{{ post.url | relative_url }}" title="{{ post.title }}"></a>
<img src="{{ post.cover | relative_url }}" href="{{ post.url | relative_url }}" alt="">
</div>
{% endif %}
<section class="post-preview">
<a class="post-link" href="{{ post.url | relative_url }}" title="{{ post.title }}"></a>
<h2 class="post-title">{{ post.title }}</h2>
{% if post.subtitle %}
<h3 class="post-subtitle">{{ post.subtitle }}</h3>
{% endif %}
{% if post.subtitle.size==0 or post.subtitle==nil %}
<p class="post-excerpt">{{ post.excerpt | strip_html | strip_newlines | truncate: 126}}</p>
{% endif %}
</section>
<footer class="post-meta">
<div class="post-tags">
{% if post.tags.size > 0 %}
{% for tag in post.tags %}
<a href={{ "tags.html#" | append: tag | relative_url }} class="post-tag">{{ tag }}</a>
{% endfor %}
{% endif %}
</div>
<time class="post-date" datetime="{{ post.date | date:"%y-%m-%d" }}">{{ post.date | date_to_string }}</time>
</footer>
</article>
{% endfor %}
{% if paginator.total_pages > 1 %}
{% include pageNav.html %}
{% endif %}
</div>
<aside class="g-sidebar-wrapper">
<div class="g-sidebar">
<section class="author-card">
<div class="avatar">
<img src="{{ site.avatar | relative_url }}" alt="">
</div>
<div class="author-name" rel="author">{{ site.author }}</div>
<div class="bio">
<p>{{ site.bio }}</p>
</div>
{% if site.sns.size > 0 %}
<ul id="sns-links" class="sns-links">
{% for s in site.sns %}
<li>
<a href="{{ s[1] }}" target="_blank">
<i class="iconfont icon-{{ s[0] }}"></i>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</section>
{% if site.recommend-tags and site.tags.size>0 %}
<section class="tags-card">
{% for tag in site.tags %}
{% if forloop.index > site.recommend-condition-size %}
{% break %}
{% endif %}
<a href="{{ "tags.html#" | append: tag[0] | relative_url }}" class="tag">{{ tag[0]}}</a>
{% endfor %}
</section>
{% endif %}
</div>
{% if site.search %}
<div class="search-card">
<input id="search_input" type="text" placeholder="Search..." autocomplete="off">
<i class="iconfont icon-search"></i>
<div class="search_result"></div>
</div>
{% endif %}
</aside>
</main>
{% include footer.html %}

3091
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "a",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"gulp": "^3.9.1",
"gulp-clean-css": "^3.0.4",
"gulp-rename": "^1.2.2",
"gulp-sass": "^3.1.0",
"gulp-uglify": "^2.1.2"
},
"dependencies": {}
}

30
rss.xml Normal file
View File

@ -0,0 +1,30 @@
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ site.title | xml_escape }}</title>
<description>{{ site.description | xml_escape }}</description>
<link>{{ site.url }}{{ "/" | relative_url }}/</link>
<atom:link href="{{ "/feed.xml" | relative_url | prepend: site.url }}" rel="self" type="application/rss+xml" />
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
<generator>Jekyll v{{ jekyll.version }}</generator>
{% for post in site.posts limit:10 %}
<item>
<title>{{ post.title | xml_escape }}</title>
<description>{{ post.content | xml_escape }}</description>
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
<link>{{ post.url | relative_url | prepend: site.url }}</link>
<guid isPermaLink="true">{{ post.url | relative_url | prepend: site.url }}</guid>
{% for tag in post.tags %}
<category>{{ tag | xml_escape }}</category>
{% endfor %}
{% for cat in post.categories %}
<category>{{ cat | xml_escape }}</category>
{% endfor %}
</item>
{% endfor %}
</channel>
</rss>

BIN
screenshot/1494404591.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

13
search.json Normal file
View File

@ -0,0 +1,13 @@
---
layout: null
---
[
{% for post in site.posts %}
{
"title" : "{{ post.title | escape }}",
"tags" : "{% for tag in post.tags %}{% if forloop.rindex != 1 %}{{ tag }} {% else %}{{ tag }}{% endif %}{% endfor %}",
"url" : "{{ post.url | relative_url }}"
} {% unless forloop.last %},{% endunless %}
{% endfor %}
]

34
tags.html Normal file
View File

@ -0,0 +1,34 @@
---
title: Tags
layout: default
---
{% include header.html %}
<div class="g-banner tags-banner {{ site.postPatterns | prepend: 'post-pattern-' }} {{ site.theme-color | prepend: 'bgcolor-' }}" data-theme="{{ site.theme-color }}">
<h2>TAGS</h2>
</div>
<main class="tags-content">
<ul class="tags-list">
<li>
{% if site.recommend-tags and site.tags.size>0 %}
{% for tag in site.tags %}
<a href="#{{ tag[0] }}" class="tag">{{ tag[0]}}</a>
{% endfor %}
{% endif %}
</li>
{% for tag in site.tags %}
<li>
<span class="tag-name" id="{{ tag[0] }}">「{{ tag[0] }}」</span>
{% for post in tag[1] %}
<a class="tag-post" href="{{ post.url | relative_url }}" title="{{ post.title }}">{{ post.title }}</a>
{% endfor %}
</li>
{% endfor%}
</ul>
</main>
{% include footer.html %}