删除旧主题
@ -1,148 +0,0 @@
|
||||
# Xups 主题安装及 Hexo 使用教程
|
||||

|
||||
|
||||
## 主题的一些特性
|
||||
|
||||
1. 扁平。思路源于大前端 WordPress 主题。
|
||||
2. 自带博客评论系统。博客主题自带评论系统,基于 github issues 实现,了解更多请点击[基于 github issues实现的评论框](http://jelon.top/posts/xups-comment-box/)。
|
||||
|
||||
## 使用指引
|
||||
|
||||
1. 安装hexo
|
||||
|
||||
```
|
||||
npm i hexo-cli -g
|
||||
hexo init blog
|
||||
cd blog
|
||||
npm install
|
||||
```
|
||||
|
||||
2. 将主题拉到本地,并解压
|
||||
|
||||
```
|
||||
cd themes
|
||||
git clone https://github.com/jangdelong/hexo-theme-xups.git
|
||||
```
|
||||
|
||||
3. 配置 _config.yml 的 theme 配置
|
||||
|
||||
```
|
||||
theme: hexo-theme-xups
|
||||
```
|
||||
|
||||
4. 运行 `hexo s --watch`
|
||||
|
||||
```
|
||||
cd ..
|
||||
hexo generate # 或者 hexo g
|
||||
hexo s --watch
|
||||
```
|
||||
|
||||
运行上述命令后,浏览器打开 [http://localhost:4000](http://localhost:4000) 即可本地访问我们的网站
|
||||
|
||||
## 创建文章
|
||||
|
||||
有两种方法创建文章,可任选其一:
|
||||
|
||||
> 注意:文件名不要出现中文!!!
|
||||
|
||||
1. 使用`hexo new` 命令
|
||||
|
||||
``` bash
|
||||
$ hexo new "My New Post"
|
||||
```
|
||||
|
||||
2. 拷贝现有的文章进行修改
|
||||
|
||||
hexo使用markdown来编辑文章,在source目录下,拷贝任意md文件进行创建新的文章。具体可参考下hexo的官方说明
|
||||
|
||||
## 文章规范
|
||||
|
||||
1. 使用markdown写博文
|
||||
2. 建议图片进行单独 cdn 存储
|
||||
3. 标准配图
|
||||
- xups主题现默认有0-9共10张博客配图
|
||||
- 博客封面配图:200x140,命名:xxx_thumbnail
|
||||
4. 指明文章的标题、作者信息、封面图片地址、博客摘要
|
||||
|
||||
```
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
author:
|
||||
tags:
|
||||
categories:
|
||||
- Web技术
|
||||
- 生活琐事
|
||||
thumbnail:
|
||||
blogexcerpt:
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
> 另外, 如果您需保留原主题的关于页(about)、留言页面(comment)、实验室页(lab)的话, 请将 __source/ 目录下的 about/、comment/、lab/ 三个目录及里面的页面放到您的 Hexo 程序的 source 目录下(注意不是theme主题下的目录);将 __scaffolds 目录下的 draft.md、page.md、post.md 放到 Hexo 程序的 scaffolds 目录(注意不是theme主题下的目录)。
|
||||
|
||||
|
||||
5. 利用`<!-- more --> `或者`post.blogexcerpt`设置文章的摘要
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
title: 文章标题
|
||||
blogexcerpt: 这里是自定义文章摘要
|
||||
...
|
||||
---
|
||||
|
||||
这里是文章正文内容
|
||||
...
|
||||
|
||||
```
|
||||
|
||||
这部分是文章摘要,这部分是文章摘要。在hexo模版里可通过 `<%- post.blogexcerpt || post.excerpt || post.content %>` 来引用。
|
||||
- post.blogexcerpt:自定义摘要
|
||||
- post.excerpt:通过`<!-- more -->`分隔符来获取的文章摘要
|
||||
- post.content:如不设置摘要情况,则直接输出文章全部内容
|
||||
|
||||
## 评论系统
|
||||
|
||||
1. 创建 Github Application
|
||||
2. 创建仓库
|
||||
3. 主题 _config.yml 配置
|
||||
|
||||
```python
|
||||
#----------------------------
|
||||
# 是否开启评论
|
||||
#----------------------------
|
||||
comment:
|
||||
enable: false # 是否开启配置
|
||||
owner: jangdelong # 你的 github 账户名
|
||||
repo: blog_comments # github repository
|
||||
client_id: xxxxxxxxxx # github application client id
|
||||
client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # github application secret
|
||||
```
|
||||
4. 评论框使用
|
||||
|
||||
```html
|
||||
<div id="comments" class="comment">
|
||||
</div>
|
||||
<script>
|
||||
JELON.Comment({
|
||||
container: 'comments', // 评论框容器id或对象,留空是默认为 comments
|
||||
label: '<%- post.slug %>' || '<%- post.path %>', // 文章标签
|
||||
owner: '<%- theme.comment.owner %>', // GitHub application 创建者
|
||||
repo: '<%- theme.comment.repo %>', // issue 所在仓库名
|
||||
clientId: '<%- theme.comment.client_id %>', // GitHub application client_id
|
||||
clientSecret: '<%- theme.comment.client_secret %>' // GitHub application client_secret
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
## 其他
|
||||
|
||||
- [Jelon前端小站](http://jelon.top)
|
||||
|
||||
## LICENCE
|
||||
|
||||
The MIT License (MIT)
|
||||
@ -1,10 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
author:
|
||||
tags:
|
||||
categories:
|
||||
- Web技术
|
||||
- 生活琐事
|
||||
thumbnail:
|
||||
blogexcerpt:
|
||||
---
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
---
|
||||
@ -1,10 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
author:
|
||||
tags:
|
||||
categories:
|
||||
- Web技术
|
||||
- 生活琐事
|
||||
thumbnail:
|
||||
blogexcerpt:
|
||||
---
|
||||
@ -1,150 +0,0 @@
|
||||
#############################
|
||||
# Xups for Hexo 主题配置文件
|
||||
# Jelon
|
||||
# http://jelon.top
|
||||
#############################
|
||||
|
||||
#----------------------------
|
||||
# 头部导航
|
||||
#----------------------------
|
||||
menu:
|
||||
home:
|
||||
name: 首页
|
||||
link: /
|
||||
icon: icon-home
|
||||
lab:
|
||||
name: 归档
|
||||
link: /archives/
|
||||
icon: icon-drawer
|
||||
about:
|
||||
name: 关于
|
||||
link: /about/
|
||||
icon: icon-user-tie
|
||||
rss:
|
||||
name: RSS
|
||||
link: /atom.xml
|
||||
icon: icon-rss
|
||||
|
||||
#----------------------------
|
||||
# 副导航
|
||||
#----------------------------
|
||||
subnav:
|
||||
github: "#"
|
||||
weibo: "#"
|
||||
rss: "#"
|
||||
zhihu: "#"
|
||||
|
||||
#----------------------------
|
||||
# RSS
|
||||
#----------------------------
|
||||
rss: /atom.xml
|
||||
feed:
|
||||
type: atom
|
||||
path: atom.xml
|
||||
limit: 20
|
||||
hub:
|
||||
content:
|
||||
content_limit: 140
|
||||
content_limit_delim: ' '
|
||||
|
||||
#----------------------------
|
||||
# Favicon
|
||||
#----------------------------
|
||||
favicon: /favicon.ico
|
||||
|
||||
#----------------------------
|
||||
# 头像url
|
||||
#----------------------------
|
||||
avatar: https://i.loli.net/2018/05/04/5aeb37415a0dc.jpg
|
||||
|
||||
#----------------------------
|
||||
# 是否开启分享
|
||||
#----------------------------
|
||||
share:
|
||||
enable: true
|
||||
list:
|
||||
1: weibo
|
||||
2: qqzone
|
||||
3: qq
|
||||
4: douban
|
||||
|
||||
#----------------------------
|
||||
# 是否开启评论
|
||||
#----------------------------
|
||||
comment:
|
||||
enable: true
|
||||
owner: sookie2010
|
||||
repo: hexo_blog
|
||||
client_id: 90e8f648da2a669f7975
|
||||
client_secret: 7d2b602616387748ef0df10f7a8a626bdfd1034c
|
||||
|
||||
#----------------------------
|
||||
# 是否开启云标签
|
||||
#----------------------------
|
||||
tagcloud:
|
||||
enable: true
|
||||
start_color: e87474
|
||||
end_color: 524ac5
|
||||
|
||||
#----------------------------
|
||||
# 是否开启文章归档
|
||||
#----------------------------
|
||||
archives:
|
||||
enable: true
|
||||
date_format: YYYY年MM月
|
||||
|
||||
#----------------------------
|
||||
# 常用链接
|
||||
#----------------------------
|
||||
links:
|
||||
enable: true
|
||||
list:
|
||||
1:
|
||||
name: 实验室
|
||||
link: /lab/
|
||||
target: _self
|
||||
|
||||
#----------------------------
|
||||
# 头部链接
|
||||
#----------------------------
|
||||
head_links:
|
||||
enable: true
|
||||
list:
|
||||
sup:
|
||||
0:
|
||||
name: Github
|
||||
link: https://github.com/sookie2010
|
||||
last:
|
||||
name: Hosted by Coding Pages
|
||||
link: https://pages.coding.me
|
||||
sub:
|
||||
sinaweibo:
|
||||
name: 新浪微博
|
||||
link: https://weibo.com/2633013641
|
||||
qqweibo:
|
||||
name: Facebook
|
||||
link: https://www.facebook.com/profile.php?id=100016469831631
|
||||
#----------------------------
|
||||
# SEO
|
||||
#----------------------------
|
||||
SEO:
|
||||
keywords: 前端, Web, Java
|
||||
description: 个人前端小站
|
||||
|
||||
#----------------------------
|
||||
# 百度分析
|
||||
#----------------------------
|
||||
baidu_analytics: false
|
||||
|
||||
#----------------------------
|
||||
# 高亮样式
|
||||
#----------------------------
|
||||
highlight_theme: night
|
||||
#----------------------------
|
||||
# CDN
|
||||
# 如: //7xs305.com1.z0.glb.clouddn.com/
|
||||
# 主要以下两个目录进行 cdn 存储
|
||||
# - img 图片资源下的 thumbnail 目录
|
||||
# - css 样式资源下的 fonts 目录
|
||||
#----------------------------
|
||||
CDN: https://blog-cdn.nos-eastchina1.126.net/
|
||||
@ -1,53 +0,0 @@
|
||||
<!-- 自定义关于页 -->
|
||||
|
||||
<p style="color: #444;">
|
||||
<span class="icon-cogs"></span>
|
||||
关于我
|
||||
</p>
|
||||
|
||||
<ul style="list-style-type: none;">
|
||||
<li>
|
||||
<span class="icon-profile"></span>
|
||||
查看<a href="javascript: alert('更新中...');">个人介绍</a>
|
||||
</li>
|
||||
<li>
|
||||
<span class="icon-newspaper"></span>
|
||||
现工作于北京,任职前端开发
|
||||
</li>
|
||||
<li>
|
||||
<span class="icon-envelop"></span>
|
||||
联系邮箱 init_pro#aliyun.com('#'改为'@')
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p style="color: #444;">
|
||||
<span class="icon-cogs"></span>
|
||||
关于博客
|
||||
</p>
|
||||
|
||||
<ul style="list-style-type: none;">
|
||||
<li>
|
||||
<span class="icon-files-empty"></span>
|
||||
博客采用<a href="https://hexo.io/">Hexo</a>静态博客系统、主题为<a href="https://github.com/jangdelong/hexo-theme-xups" target="_blank">Xups</a> (<a href="https://hexo.io/themes/" target="_blank">Hexo 官网</a>已收录)
|
||||
</li>
|
||||
<li>
|
||||
<span class="icon-files-empty"></span>
|
||||
博客内容主要是学习工作过程中的一些Web总结和日志琐事,除非特殊声明,博客内容皆为个人原创,转载烦请标注文章来源
|
||||
</li>
|
||||
<li>
|
||||
<span class="icon-files-empty"></span>
|
||||
为了提升博客的访问速度,博客的字体文件以及绝大部分图片采用了某 CDN 存储,代码托管采用 <a target="_blank" href="https://coding.net/">Coding</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p style="color: #444;">
|
||||
<span class="icon-cogs"></span>
|
||||
Github账号
|
||||
</p>
|
||||
|
||||
<ul style="list-style-type: none;">
|
||||
<li>
|
||||
<span class="icon-github"></span>
|
||||
<a href="https://github.com/sookie2010" target="_blank">我的Github</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -1,7 +0,0 @@
|
||||
<%- page.content %>
|
||||
<style>
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
@ -1,65 +0,0 @@
|
||||
<!-- 文章 -->
|
||||
<article class="post">
|
||||
<header>
|
||||
<!-- 分类 -->
|
||||
<% if (post.categories && post.categories.length) { %>
|
||||
<%-
|
||||
list_categories(post.categories, {
|
||||
show_count: false,
|
||||
class: 'cat',
|
||||
style: 'none',
|
||||
separator: '|'
|
||||
})
|
||||
%>
|
||||
<% } else { %>
|
||||
<a href="javascript: void(0);" class="cat">未分类</a>
|
||||
<% } %>
|
||||
<!-- 文章标题 -->
|
||||
<%- partial('post/title', { class_name: 'post-title' }) %>
|
||||
</header>
|
||||
<p class="post-meta">
|
||||
<%- post.author || config.author %> 发表于
|
||||
<%- partial('post/date', { date_format: 'YYYY-MM-DD' }) %>
|
||||
|
||||
<span class="post-tags">
|
||||
标签:
|
||||
<%- partial('post/tag') %>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<div class="post-content">
|
||||
<div class="post-excerpt">
|
||||
<% if (index == true) { %>
|
||||
<%- post.blogexcerpt || post.excerpt || post.content %>
|
||||
<% } %>
|
||||
<p class="more">
|
||||
<a href="<%- url_for(post.permalink) %>">阅读全文</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="post-thumbnail" data-img="<%- post.photos[0] %>">
|
||||
<a href="<%= post.permalink %>" title="<%= post.title %>">
|
||||
<%
|
||||
var numSum = 0
|
||||
let dateNum = parseInt(date(post.date, 'YYYYMMDDHHmmss'))
|
||||
let mutipart = 10
|
||||
while(dateNum % mutipart != dateNum) {
|
||||
numSum += Math.floor(dateNum % mutipart / (mutipart/10))
|
||||
mutipart *= 10
|
||||
}
|
||||
if (post.thumbnail) {
|
||||
%>
|
||||
<!--
|
||||
<%- image_tag(post.thumbnail, { class: "thumbnail" }) %>
|
||||
-->
|
||||
<img class="thumbnail" src="<%- url_for('img/default-image.jpg') %>" data-echo="<%= post.thumbnail %>" alt="<%= post.title %>" >
|
||||
<% } else if (post.photos.length) { %>
|
||||
<img class="thumbnail" src="<%- url_for('img/default-image.jpg') %>" data-echo="<%= url_for(post.photos[0]) %>" alt="<%= post.title %>" >
|
||||
<% } else if (theme.CDN) { %>
|
||||
<img class="thumbnail" src="<%- url_for('img/default-image.jpg') %>" data-echo="<%- url_for(theme.CDN + 'thumbnail/' + numSum%10 + '.jpg') %>" alt="默认配图" >
|
||||
<% } else { %>
|
||||
<img class="thumbnail" src="<%- url_for('img/default-image.jpg') %>" data-echo="<%- url_for('img/thumbnail/' + numSum%10 + '.jpg') %>" alt="默认配图" >
|
||||
<% } %>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@ -1,63 +0,0 @@
|
||||
<h3 class="widget-hd">
|
||||
<strong>
|
||||
<% if (pagination == 1) { %>
|
||||
最近动态
|
||||
<% } else if (pagination == 2) { %>
|
||||
<%- page.category %> 分类下的文章
|
||||
<% } else if (pagination == 3) { %>
|
||||
<%- page.tag %> 标签下的文章
|
||||
<% } else { %>
|
||||
文章归档
|
||||
<% } %>
|
||||
</strong>
|
||||
</h3>
|
||||
<%
|
||||
if(pagination) {
|
||||
page.posts.each(function(post) {
|
||||
%>
|
||||
<%-partial('archive-post', { post: post }) %>
|
||||
<%
|
||||
})
|
||||
} else {
|
||||
let lastYear, lastMonth;
|
||||
|
||||
let currentPosts = [];
|
||||
site.posts.each(function(post) {
|
||||
if((post.date.year() == page.year || !page.year) && (post.date.month()+1 == page.month || !page.month)) {
|
||||
currentPosts.push(post)
|
||||
}
|
||||
})
|
||||
currentPosts.sort(function(a, b){ return b.date - a.date;});
|
||||
currentPosts.forEach(function(post) {
|
||||
if(post.date.year() !== lastYear || post.date.month()+1 !== lastMonth) {
|
||||
if(lastYear && lastMonth) { %> </ul> <% }
|
||||
%>
|
||||
<h3 class="widget-date">
|
||||
<strong><%= post.date.year() %>年<%= post.date.month()+1 %>月</strong>
|
||||
</h3>
|
||||
<ul class="archive-wapper">
|
||||
<%
|
||||
}
|
||||
%>
|
||||
<li class="archive-item">
|
||||
<a href="<%=url_for(post.permalink) %>">
|
||||
<span class="title"><%=post.title %></span>
|
||||
<span class="date">---- <%=date(post.date, 'YYYY-MM-DD HH:mm') %></span>
|
||||
</a>
|
||||
</li>
|
||||
<%
|
||||
lastYear = post.date.year();
|
||||
lastMonth = post.date.month()+1;
|
||||
})
|
||||
%> </ul> <%
|
||||
}
|
||||
%>
|
||||
|
||||
<% if (pagination && page.total >= 1){ %>
|
||||
<nav class="page-navigator">
|
||||
<%- paginator({
|
||||
prev_text: '前一页',
|
||||
next_text: '后一页'
|
||||
}) %>
|
||||
</nav>
|
||||
<% } %>
|
||||
@ -1,35 +0,0 @@
|
||||
<!-- 文章 -->
|
||||
<article class="post article">
|
||||
<header class="text-center">
|
||||
<h3 class="post-title"><span><%= post.title %></span></h3>
|
||||
</header>
|
||||
<p class="post-meta text-center">
|
||||
<%- post.author || '柠烟夏季' %> 发表于
|
||||
<%- partial('post/date', { date_format: 'YYYY-MM-DD HH:mm' }) %>
|
||||
</p>
|
||||
<div class="post-content">
|
||||
<%- post.content %>
|
||||
</div>
|
||||
<p class="post-meta">
|
||||
<span class="post-cat">分类:
|
||||
<%-
|
||||
list_categories(post.categories, {
|
||||
show_count: false,
|
||||
class: 'cat',
|
||||
style: 'none',
|
||||
separator: '|'
|
||||
})
|
||||
%>
|
||||
</span>
|
||||
<span class="post-tags">
|
||||
标签:
|
||||
<%- partial('post/tag') %>
|
||||
</span>
|
||||
</p>
|
||||
</article>
|
||||
<!-- 分享按钮 -->
|
||||
<%- partial('post/share') %>
|
||||
|
||||
<%- partial('post/nav', { post: post }) %>
|
||||
<!-- 文章评论 -->
|
||||
<%- partial('post/comment') %>
|
||||
@ -1,11 +0,0 @@
|
||||
<% if (theme.baidu_analytics) { %>
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "//hm.baidu.com/hm.js?fd459238242776d173cdc64918fb32f2";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
<% } %>
|
||||
@ -1,13 +0,0 @@
|
||||
<footer class="footer">
|
||||
©
|
||||
<% if (new Date().getFullYear() == 2016) { %>
|
||||
<%- new Date().getFullYear() %>
|
||||
<% } else { %>
|
||||
2016-<%- new Date().getFullYear() %>
|
||||
<% } %>
|
||||
<a href="<%- url_for() %>">Power By Hexo</a>
|
||||
</footer>
|
||||
<div class="back-to-top" id="JELON__backToTop" title="返回顶部">返回顶部</div>
|
||||
|
||||
<script src="<%=config.root %>js/lib/require.min.js" defer async="true"
|
||||
data-main="<%=config.root %>js/main.js"></script>
|
||||
@ -1,55 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<!--
|
||||
..
|
||||
.' @`._
|
||||
~ ...._.' ,__.-;
|
||||
_..------/` .-' ~
|
||||
: __./' , .'-'--.._
|
||||
~ `---(.-'''---. \`._ `. ~
|
||||
_.--'( .______.'.-' `-.` `.
|
||||
: `-..____`-. ;
|
||||
`. ```` 稻花香里说丰年, ; ~
|
||||
`-.__ 听取人生经验。 __.-'
|
||||
````-----.......-----''' ~
|
||||
~ ~
|
||||
-->
|
||||
<head>
|
||||
<meta charset="UTF-8" >
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" >
|
||||
<meta name="baidu-site-verification" content="dIcXMeY8Ya" />
|
||||
<%
|
||||
var title = page.title;
|
||||
|
||||
if (is_archive()) {
|
||||
title = '文章归档';
|
||||
if (is_month()){
|
||||
title += ': ' + page.year + '/' + page.month;
|
||||
} else if (is_year()) {
|
||||
title += ': ' + page.year;
|
||||
}
|
||||
} else if (is_category()) {
|
||||
title = '`' + page.category + '`分类下的文章';
|
||||
} else if (is_tag()) {
|
||||
title = '`' + page.tag + '`标签下的文章';
|
||||
}
|
||||
%>
|
||||
<title><% if (title) { %><%= title %> | <% } %><%= config.title %></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" >
|
||||
<meta name="keywords" content="<%- theme.SEO.keywords %>" >
|
||||
<meta name="description" content="<%- theme.SEO.description %>" >
|
||||
|
||||
<% if (theme.rss) { %>
|
||||
<link rel="alternative" href="<%- theme.rss %>" title="<%= config.title %>" type="application/atom+xml" >
|
||||
<% } %>
|
||||
<% if (config.favicon) { %>
|
||||
<link rel="shortcut icon" href="<%- url_for(config.favicon) %>" >
|
||||
<% } else { %>
|
||||
<link rel="shortcut icon" href="<%- url_for(theme.favicon) %>" >
|
||||
<% } %>
|
||||
<%- css('css/style') %>
|
||||
<!--[if lt IE 9]>
|
||||
<%- js('js/html5') %>
|
||||
<![endif]-->
|
||||
<%- partial('baidu-analytics') %>
|
||||
</head>
|
||||
@ -1,65 +0,0 @@
|
||||
<header class="header">
|
||||
<section class="container header-main">
|
||||
<div class="logo">
|
||||
<a href="<%- url_for() %>">
|
||||
<div class="cover">
|
||||
<div class="name"><%= config.title %></div>
|
||||
<div class="description"><%= config.subtitle %></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="dropnav icon-paragraph-justify" id="JELON__btnDropNav"></div>
|
||||
<!-- 导航栏 -->
|
||||
<ul class="menu hidden" id="JELON__menu">
|
||||
<% for (var i in theme.menu) { %>
|
||||
<li rel="<%= url_for(path) %>" class="item <%= url_for(theme.menu[i].link) == url_for(path).substring(0, url_for(path).lastIndexOf('/') + 1) ? 'current' : '' %>">
|
||||
<a href="<%= url_for(theme.menu[i].link) %>" title="<%= theme.menu[i].name %>" class="<%= theme.menu[i].icon %>"> <%= theme.menu[i].name %></a>
|
||||
</li>
|
||||
<% } %>
|
||||
</ul>
|
||||
<!-- 搜索框 -->
|
||||
<div id="search-box">
|
||||
<div class="icon"><span class="icon-search"></span></div>
|
||||
<div class="input-box"><input type="text" id="search-input" v-model="queryText" @focus="searchInit" placeholder="站内搜索"/></div>
|
||||
<!-- 搜索结果区 -->
|
||||
<div id="search-result-box" >
|
||||
<ul class="search-result-list" v-if="searchResult.length && !searchIniting">
|
||||
<li v-for="(article,index) in searchResult" :key="index">
|
||||
<a :href='article.url' class='search-result-title' target='_blank'>{{article.title || '无标题'}}</a>
|
||||
<p class="search-result" v-html="article.matchContent"></p>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索未初始化完毕时显示 -->
|
||||
<div style="text-align:center;padding:10px 0" v-else-if="searchIniting">
|
||||
<img src="<%= config.root%>img/loading-bar.gif" style="height:8px;width:auto"/>
|
||||
</div>
|
||||
<!-- 无匹配时显示 -->
|
||||
<p class="search-result" v-else>没有搜索到任何结果</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile clearfix">
|
||||
<div class="feeds fl">
|
||||
<% if (theme.head_links.enable) { %>
|
||||
<%
|
||||
var supList = theme.head_links.list.sup,
|
||||
subList = theme.head_links.list.sub;
|
||||
%>
|
||||
<p class="links">
|
||||
<% for (var i in supList) { %>
|
||||
<a href="<%= supList[i]['link'] %>" target="_blank"><%= supList[i]['name'] %></a>
|
||||
<% if (i != 'last') { %>|<% } %>
|
||||
<% } %>
|
||||
</p>
|
||||
<p class="sns">
|
||||
<% for (var j in subList) { %>
|
||||
<a href="<%= subList[j]['link'] %>" class="<%= j %>" target="_blank"><b>■</b> <%= subList[j]['name'] %></a>
|
||||
<% } %>
|
||||
</p>
|
||||
<% } %>
|
||||
</div>
|
||||
<div class="avatar fr">
|
||||
<img src="<%- theme.avatar %>" alt="avatar" title="Sookie">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</header>
|
||||
@ -1,14 +0,0 @@
|
||||
<% if (theme.comment.enable) { %>
|
||||
<%- js('js/comment') %>
|
||||
<div id="comments" class="comment"></div>
|
||||
<script>
|
||||
JELON.Comment({
|
||||
container: 'comments',
|
||||
label: '<%- post.slug %>' || '<%- post.path %>',
|
||||
owner: '<%- theme.comment.owner %>',
|
||||
repo: '<%- theme.comment.repo %>',
|
||||
clientId: '<%- theme.comment.client_id %>',
|
||||
clientSecret: '<%- theme.comment.client_secret %>'
|
||||
});
|
||||
</script>
|
||||
<% } %>
|
||||
@ -1 +0,0 @@
|
||||
<time datetime="<%= date_xml(post.date) %>"><%= date(post.date, date_format) %></time>
|
||||
@ -1,40 +0,0 @@
|
||||
<!-- 上一篇/下一篇 -->
|
||||
<% if (post.prev || post.next) { %>
|
||||
<div class="article-nav clearfix">
|
||||
<% if (post.prev) { %>
|
||||
<span class="prev fl">
|
||||
上一篇<br >
|
||||
<a href="<%- url_for(post.prev.path) %>">
|
||||
<% if (post.prev.title) { %>
|
||||
<%= post.prev.title %>
|
||||
<% } else { %>
|
||||
无标题
|
||||
<% } %>
|
||||
</a>
|
||||
</span>
|
||||
<% } else { %>
|
||||
<span class="prev fl">
|
||||
上一篇<br >
|
||||
<a href="javascript: void(0);">没有上一篇了</a>
|
||||
</span>
|
||||
<% } %>
|
||||
|
||||
<% if (post.next) { %>
|
||||
<span class="next fr">
|
||||
下一篇<br >
|
||||
<a href="<%- url_for(post.next.path) %>">
|
||||
<% if (post.next.title) { %>
|
||||
<%= post.next.title %>
|
||||
<% } else { %>
|
||||
无标题
|
||||
<% } %>
|
||||
</a>
|
||||
</span>
|
||||
<% } else { %>
|
||||
<span class="next fr">
|
||||
下一篇<br >
|
||||
<a href="javascript: void(0);">没有下一篇了</a>
|
||||
</span>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } %>
|
||||
@ -1,10 +0,0 @@
|
||||
<% if (theme.share.enable) { %>
|
||||
<div class="article-share clearfix text-center">
|
||||
<div class="share-area">
|
||||
<span class="share-txt">分享到:</span>
|
||||
<% for (let i in theme.share.list) { %>
|
||||
<a href="javascript:void(0);" class="share-icon <%= theme.share.list[i] %>" onclick="JELON.Utils.share('<%= theme.share.list[i] %>')"></a>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
@ -1,5 +0,0 @@
|
||||
<% if (post.tags && post.tags.length) { %>
|
||||
<% post.tags.forEach(function(tag, i) { %>
|
||||
<%- link_to(tag.path, tag.name) %><% if (i != post.tags.length - 1) { %> / <% } %>
|
||||
<% }); %>
|
||||
<% } %>
|
||||
@ -1,13 +0,0 @@
|
||||
<% if (post.link) { %>
|
||||
<h3 class="<%= class_name || 'post-title' %>">
|
||||
<a href="<%= url_for(post.link) %>">
|
||||
<%= post.title || post.link %>
|
||||
</a>
|
||||
</h3>
|
||||
<% } else if (post.title) { %>
|
||||
<h3 class="<%= class_name || 'post-title' %>">
|
||||
<a href="<%= url_for(post.permalink) %>">
|
||||
<%= post.title %>
|
||||
</a>
|
||||
</h3>
|
||||
<% } %>
|
||||
@ -1,30 +0,0 @@
|
||||
<!-- 侧栏部分 -->
|
||||
<aside class="sidebar">
|
||||
<section class="widget">
|
||||
<h3 class="widget-hd"><strong>文章分类</strong></h3>
|
||||
<%- partial('_widget/categorys') %>
|
||||
</section>
|
||||
|
||||
<% if (theme.tagcloud.enable) { %>
|
||||
<section class="widget">
|
||||
<h3 class="widget-hd"><strong>热门标签</strong></h3>
|
||||
<%- partial('_widget/tags_cloud') %>
|
||||
</section>
|
||||
<% } %>
|
||||
|
||||
<% if (theme.archives.enable) { %>
|
||||
<section class="widget">
|
||||
<h3 class="widget-hd"><strong>文章归档</strong></h3>
|
||||
<%- list_archives({format: theme.archives.date_format}) %>
|
||||
</section>
|
||||
<% } %>
|
||||
|
||||
<% if (theme.links.enable && theme.links['list']) { %>
|
||||
<!-- 常用链接 -->
|
||||
<section class="widget">
|
||||
<h3 class="widget-hd"><strong>常用链接</strong></h3>
|
||||
<%- partial('_widget/links') %>
|
||||
</section>
|
||||
<% } %>
|
||||
</aside>
|
||||
<!-- / 侧栏部分 -->
|
||||
@ -1,9 +0,0 @@
|
||||
<!-- 文章分类 -->
|
||||
<ul class="widget-bd">
|
||||
<% site.categories.forEach(function(cat){ %>
|
||||
<li>
|
||||
<a href="<%= url_for(cat.path) %>"><%= cat.name %></a>
|
||||
<span class="badge"><%= cat.length %></span>
|
||||
</li>
|
||||
<% }); %>
|
||||
</ul>
|
||||
@ -1,8 +0,0 @@
|
||||
<!-- 常用链接 -->
|
||||
<ul class="widget-bd">
|
||||
<% for (var i in theme.links['list']) { %>
|
||||
<li>
|
||||
<a href="<%= theme.links.list[i].link %>" target="<%= theme.links.list[i].target || '_blank' %>" ><%= theme.links.list[i].name %></a>
|
||||
</li>
|
||||
<% } %>
|
||||
</ul>
|
||||
@ -1,11 +0,0 @@
|
||||
<!-- 标签云 -->
|
||||
<div class="tags-cloud">
|
||||
<%- tagcloud({
|
||||
min_font: 14,
|
||||
max_font: 30,
|
||||
amount: 999,
|
||||
color: true,
|
||||
start_color: '#'+theme.tagcloud.start_color,
|
||||
end_color: '#'+theme.tagcloud.end_color
|
||||
}) %>
|
||||
</div>
|
||||
@ -1,2 +0,0 @@
|
||||
<!-- 文章归档 -->
|
||||
<%- partial('_partial/archive', { pagination: false, index: true }) %>
|
||||
@ -1,2 +0,0 @@
|
||||
<!-- 文章分类 -->
|
||||
<%- partial('_partial/archive', { pagination: 2, index: true }) %>
|
||||
@ -1,6 +0,0 @@
|
||||
<!-- 首页 -->
|
||||
<% if (page.content) { %>
|
||||
<%- page.content %>
|
||||
<% } else { %>
|
||||
<%- partial('_partial/archive', { pagination: 1, index: true }) %>
|
||||
<% } %>
|
||||
@ -1,29 +0,0 @@
|
||||
<%- partial('_partial/head') %>
|
||||
<body class="home">
|
||||
<!--[if lt IE 9]>
|
||||
<div class="browsehappy">
|
||||
当前网页 <strong>不支持</strong>
|
||||
你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>.
|
||||
</div>
|
||||
<![endif]-->
|
||||
|
||||
<!-- 博客头部 -->
|
||||
<%- partial('_partial/header') %>
|
||||
<!-- 看板娘 -->
|
||||
<div class="banner">
|
||||
<div class="banner-tips"></div>
|
||||
<canvas id="live2d" width="280" height="250" class="live2d"></canvas>
|
||||
</div>
|
||||
<!-- 博客正文 -->
|
||||
<div class="container body clearfix">
|
||||
<section class="content">
|
||||
<div class="content-main widget">
|
||||
<%- body %>
|
||||
</div>
|
||||
</section>
|
||||
<%- partial('_partial/sidebar') %>
|
||||
</div>
|
||||
<!-- 博客底部 -->
|
||||
<%- partial('_partial/footer') %>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,13 +0,0 @@
|
||||
<!-- 独立页面 -->
|
||||
<article class="post article">
|
||||
<header class="text-center">
|
||||
<h4 class="post-title"><a href="javascript: void(0);"><%- page.title %></a></h4>
|
||||
</header>
|
||||
<div class="post-content">
|
||||
<% if (page.pageid) { %>
|
||||
<%- partial('_custom/' + page.pageid, { page: page, post: page }) %>
|
||||
<% } else { %>
|
||||
<%- page.content %>
|
||||
<% } %>
|
||||
</div>
|
||||
</article>
|
||||
@ -1,2 +0,0 @@
|
||||
<!-- 文章页 -->
|
||||
<%- partial('_partial/article', { index: false, post: page }) %>
|
||||
@ -1,2 +0,0 @@
|
||||
<!-- 按标签分类 -->
|
||||
<%- partial('_partial/archive', { pagination: 3, index: true }) %>
|
||||
@ -1,83 +0,0 @@
|
||||
/*!
|
||||
* 网站字体及icon
|
||||
* $CDN = hexo-config("CDN") || '//7xs305.com1.z0.glb.clouddn.com/'
|
||||
*/
|
||||
$CDN = (hexo-config("CDN") || './')+'fonts/'
|
||||
|
||||
@font-face
|
||||
font-family "HomizioNova"
|
||||
src url($CDN + 'homizio-nova/light.ttf') format('truetype'),
|
||||
url($CDN + 'homizio-nova/light.eot') format('embedded-opentype')
|
||||
font-weight normal
|
||||
font-style normal
|
||||
@font-face
|
||||
font-family "HomizioNova"
|
||||
src url($CDN + 'homizio-nova/light_italic.ttf') format('truetype'),
|
||||
url($CDN + 'homizio-nova/light_italic.eot') format('embedded-opentype')
|
||||
font-weight normal
|
||||
font-style italic
|
||||
@font-face
|
||||
font-family "HomizioNova"
|
||||
src url($CDN + 'homizio-nova/regular.ttf') format('truetype'),
|
||||
url($CDN + 'homizio-nova/regular.eot') format('embedded-opentype')
|
||||
font-weight bold
|
||||
font-style normal
|
||||
@font-face
|
||||
font-family "HomizioNova"
|
||||
src url($CDN + 'homizio-nova/italic.ttf') format('truetype'),
|
||||
url($CDN + 'homizio-nova/italic.eot') format('embedded-opentype')
|
||||
font-weight bold
|
||||
font-style italic
|
||||
@font-face
|
||||
font-family 'icomoon'
|
||||
src url('./fonts/icomoon/icomoon.eot') format('embedded-opentype'),
|
||||
url('./fonts/icomoon/icomoon.woff') format('woff'),
|
||||
url('./fonts/icomoon/icomoon.ttf') format('truetype'),
|
||||
url('./fonts/icomoon/icomoon.svg') format('svg')
|
||||
font-weight normal
|
||||
font-style normal
|
||||
[class^="icon-"],[class*=" icon-"]
|
||||
font-family 'icomoon'
|
||||
speak none
|
||||
font-style normal
|
||||
font-weight normal
|
||||
font-variant normal
|
||||
text-transform none
|
||||
line-height 1
|
||||
-webkit-font-smoothing antialiased
|
||||
-moz-osx-font-smoothing grayscale
|
||||
|
||||
|
||||
.icon-home:before {
|
||||
content: "\e900";
|
||||
}
|
||||
.icon-drawer:before {
|
||||
content: "\e95c";
|
||||
}
|
||||
.icon-user-tie:before {
|
||||
content: "\e976";
|
||||
}
|
||||
.icon-search:before {
|
||||
content: "\e986";
|
||||
}
|
||||
.icon-cogs:before {
|
||||
content: "\e995";
|
||||
}
|
||||
.icon-lab:before {
|
||||
content: "\e9aa";
|
||||
}
|
||||
.icon-google-plus2:before {
|
||||
content: "\ea8c";
|
||||
}
|
||||
.icon-facebook2:before {
|
||||
content: "\ea91";
|
||||
}
|
||||
.icon-sina-weibo:before {
|
||||
content: "\ea9a";
|
||||
}
|
||||
.icon-rss:before {
|
||||
content: "\ea9b";
|
||||
}
|
||||
.icon-github:before {
|
||||
content: "\eab0";
|
||||
}
|
||||
@ -1,51 +0,0 @@
|
||||
/*!
|
||||
* 全局样式
|
||||
*/
|
||||
.container
|
||||
max-width 1180px
|
||||
min-width 1070px
|
||||
background-color c-fff
|
||||
margin 0 auto 10px
|
||||
text-left()
|
||||
.home
|
||||
//margin-top 78px
|
||||
background-color c-eee
|
||||
.btn
|
||||
background-color #ff5e52
|
||||
border 0
|
||||
color c-fff
|
||||
opacity .8
|
||||
box-sizing border-box
|
||||
&:hover
|
||||
opacity .75
|
||||
.btn-ok
|
||||
background-color #ff5e52
|
||||
.btn-cancel
|
||||
background-color #51cc87
|
||||
.form-control
|
||||
box-sizing border-box
|
||||
|
||||
.browsehappy
|
||||
padding 8px 0
|
||||
background #fbe3e4
|
||||
color #8a1f11
|
||||
text-align center
|
||||
.loading-mask
|
||||
position fixed
|
||||
top 0
|
||||
right 0
|
||||
left 0
|
||||
bottom 0
|
||||
display block
|
||||
width 100%
|
||||
height 100%
|
||||
background-color rgb(255, 255, 255)
|
||||
opacity .8
|
||||
.loading-icon
|
||||
position relative
|
||||
top 50%
|
||||
left 50%
|
||||
width 50px
|
||||
height 50px
|
||||
margin-top -25px
|
||||
margin-left -25px
|
||||
@ -1,157 +0,0 @@
|
||||
html
|
||||
font-family sans-serif
|
||||
-ms-text-size-adjust 100%
|
||||
-webkit-text-size-adjust 100%
|
||||
body
|
||||
margin: 0
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary
|
||||
display block
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video
|
||||
display inline-block
|
||||
vertical-align baseline
|
||||
|
||||
audio:not([controls])
|
||||
display none
|
||||
height 0
|
||||
[hidden],
|
||||
template
|
||||
display none
|
||||
a
|
||||
background-color transparent
|
||||
|
||||
a:active,
|
||||
a:hover
|
||||
outline: 0
|
||||
abbr[title]
|
||||
border-bottom 1px dotted
|
||||
|
||||
b,
|
||||
strong
|
||||
font-weight bold
|
||||
dfn
|
||||
font-style italic
|
||||
h1
|
||||
font-size 2em
|
||||
margin 0.67em 0
|
||||
|
||||
mark
|
||||
background #ff0
|
||||
color #000
|
||||
small
|
||||
font-size 80%
|
||||
sub,
|
||||
sup
|
||||
font-size 75%
|
||||
line-height 0
|
||||
position relative
|
||||
vertical-align baseline
|
||||
sup
|
||||
top -0.5em
|
||||
sub
|
||||
bottom -0.25em
|
||||
img
|
||||
border 0
|
||||
svg:not(:root)
|
||||
overflow hidden
|
||||
|
||||
figure
|
||||
margin 1em 40px
|
||||
|
||||
hr
|
||||
-moz-box-sizing content-box
|
||||
box-sizing content-box
|
||||
height 0
|
||||
pre
|
||||
overflow auto
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp
|
||||
font-family 'Source Code Pro',Consola,monospace
|
||||
font-size 1em
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea
|
||||
color inherit /* 1 */
|
||||
font inherit /* 2 */
|
||||
margin 0 /* 3 */
|
||||
|
||||
button
|
||||
overflow visible
|
||||
|
||||
button,
|
||||
select
|
||||
text-transform none
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"]
|
||||
-webkit-appearance button /* 2 */
|
||||
cursor pointer /* 3 */
|
||||
|
||||
button[disabled],
|
||||
html input[disabled]
|
||||
cursor default
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner
|
||||
border 0
|
||||
padding 0
|
||||
input
|
||||
line-height normal
|
||||
input[type="checkbox"],
|
||||
input[type="radio"]
|
||||
box-sizing border-box /* 1 */
|
||||
padding 0 /* 2 */
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button
|
||||
height auto
|
||||
|
||||
input[type="search"]
|
||||
-webkit-appearance textfield /* 1 */
|
||||
-moz-box-sizing content-box
|
||||
-webkit-box-sizing content-box /* 2 */
|
||||
box-sizing content-box
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration
|
||||
-webkit-appearance none
|
||||
|
||||
fieldset
|
||||
border 1px solid #c0c0c0
|
||||
margin 0 2px
|
||||
padding 0.35em 0.625em 0.75em
|
||||
legend
|
||||
border 0
|
||||
padding 0
|
||||
textarea
|
||||
overflow auto
|
||||
|
||||
optgroup
|
||||
font-weight: bold
|
||||
|
||||
table
|
||||
border-collapse collapse
|
||||
border-spacing 0
|
||||
td,
|
||||
th
|
||||
padding 0
|
||||
@ -1,48 +0,0 @@
|
||||
/*!
|
||||
* Reset css
|
||||
*/
|
||||
::selection
|
||||
color c-fff
|
||||
background-color #f99
|
||||
opacity .8
|
||||
::-webkit-scrollbar
|
||||
width 7px
|
||||
height 4px
|
||||
::-webkit-scrollbar-thumb
|
||||
border-radius 4px
|
||||
background rgba(0, 0, 0, .15)
|
||||
::-webkit-scrollbar-track
|
||||
background rgba(0, 0, 0, .06)
|
||||
body
|
||||
font 14px/1.5 "Microsoft Yahei", "微软雅黑", Arial, "宋体"
|
||||
color c-666
|
||||
-webkit-overflow-scrolling touch // iOS下支持弹性滚动
|
||||
-webkit-font-smoothing antialiased // 优化字体渲染、让页面字体更精更清楚
|
||||
-webkit-text-size-adjust 100%
|
||||
-ms-text-size-adjust 100%
|
||||
text-rendering optimizelegibility
|
||||
a
|
||||
color c-666
|
||||
text-decoration none
|
||||
&:link,
|
||||
&:visited,
|
||||
&:active
|
||||
color c-666
|
||||
&:hover
|
||||
color #ff5e52
|
||||
hr
|
||||
border-top 1px solid c-eee
|
||||
.fl
|
||||
float left
|
||||
.fr
|
||||
float right
|
||||
.text-center
|
||||
text-center()
|
||||
.clearfix
|
||||
zoom 1
|
||||
&:after
|
||||
display block
|
||||
width 100%
|
||||
height 0
|
||||
content " "
|
||||
clear both
|
||||
@ -1,65 +0,0 @@
|
||||
$base-style
|
||||
h1
|
||||
font-size: 2em
|
||||
h2
|
||||
font-size: 1.6em
|
||||
h3
|
||||
font-size: 1.4em
|
||||
h4
|
||||
font-size: 1.2em
|
||||
h5
|
||||
font-size: 1em
|
||||
h6
|
||||
font-size: 1em
|
||||
color: #999
|
||||
hr
|
||||
border: 1px dashed #ddd
|
||||
strong
|
||||
font-weight: bold
|
||||
em, cite
|
||||
font-style: italic
|
||||
sup, sub
|
||||
font-size: 0.75em
|
||||
line-height: 0
|
||||
position: relative
|
||||
vertical-align: baseline
|
||||
sup
|
||||
top: -0.5em
|
||||
sub
|
||||
bottom: -0.2em
|
||||
small
|
||||
font-size: 0.85em
|
||||
acronym, abbr
|
||||
border-bottom: 1px dotted
|
||||
ul, ol, dl
|
||||
margin: 0 20px
|
||||
padding: 0
|
||||
line-height: line-height
|
||||
ul, ol
|
||||
ul, ol
|
||||
margin-top: 0
|
||||
margin-bottom: 0
|
||||
ul
|
||||
list-style: disc
|
||||
ol
|
||||
list-style: decimal
|
||||
dt
|
||||
font-weight: bold
|
||||
table
|
||||
display: table;
|
||||
font-size: 12px;
|
||||
background-color: transparent;
|
||||
border: 1px solid #ddd;
|
||||
box-sizing: border-box;
|
||||
word-wrap: break-word;
|
||||
th, td
|
||||
border-bottom: solid 1px #ddd;
|
||||
border-right: solid 1px #ddd;
|
||||
padding: 5px 10px;
|
||||
thead tr
|
||||
background-color: #f6f6f6;
|
||||
blockquote
|
||||
margin 1em 0
|
||||
padding 5px 10px
|
||||
color #666
|
||||
border-left 2px solid #eee
|
||||
@ -1,699 +0,0 @@
|
||||
@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-style
|
||||
.markdown-body
|
||||
-ms-text-size-adjust 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
line-height: 1.5;
|
||||
color: #24292e;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
word-wrap: break-word;
|
||||
|
||||
.markdown-body .pl-c {
|
||||
color: #6a737d;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c1,
|
||||
.markdown-body .pl-s .pl-v {
|
||||
color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-e,
|
||||
.markdown-body .pl-en {
|
||||
color: #6f42c1;
|
||||
}
|
||||
|
||||
.markdown-body .pl-smi,
|
||||
.markdown-body .pl-s .pl-s1 {
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ent {
|
||||
color: #22863a;
|
||||
}
|
||||
|
||||
.markdown-body .pl-k {
|
||||
color: #d73a49;
|
||||
}
|
||||
|
||||
.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: #032f62;
|
||||
}
|
||||
|
||||
.markdown-body .pl-v,
|
||||
.markdown-body .pl-smw {
|
||||
color: #e36209;
|
||||
}
|
||||
|
||||
.markdown-body .pl-bu {
|
||||
color: #b31d28;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ii {
|
||||
color: #fafbfc;
|
||||
background-color: #b31d28;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c2 {
|
||||
color: #fafbfc;
|
||||
background-color: #d73a49;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c2::before {
|
||||
content: "^M";
|
||||
}
|
||||
|
||||
.markdown-body .pl-sr .pl-cce {
|
||||
font-weight: bold;
|
||||
color: #22863a;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ml {
|
||||
color: #735c0f;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mh,
|
||||
.markdown-body .pl-mh .pl-en,
|
||||
.markdown-body .pl-ms {
|
||||
font-weight: bold;
|
||||
color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi {
|
||||
font-style: italic;
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mb {
|
||||
font-weight: bold;
|
||||
color: #24292e;
|
||||
}
|
||||
|
||||
.markdown-body .pl-md {
|
||||
color: #b31d28;
|
||||
background-color: #ffeef0;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi1 {
|
||||
color: #22863a;
|
||||
background-color: #f0fff4;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mc {
|
||||
color: #e36209;
|
||||
background-color: #ffebda;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi2 {
|
||||
color: #f6f8fa;
|
||||
background-color: #005cc5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mdr {
|
||||
font-weight: bold;
|
||||
color: #6f42c1;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ba {
|
||||
color: #586069;
|
||||
}
|
||||
|
||||
.markdown-body .pl-sg {
|
||||
color: #959da5;
|
||||
}
|
||||
|
||||
.markdown-body .pl-corl {
|
||||
text-decoration: underline;
|
||||
color: #032f62;
|
||||
}
|
||||
|
||||
.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 {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
.markdown-body svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.markdown-body code,
|
||||
.markdown-body kbd,
|
||||
.markdown-body pre {
|
||||
font-family: 'Source Code Pro',Consola, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
font: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.markdown-body [type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #0366d6;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
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 {
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.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: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
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-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
|
||||
.markdown-body dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
}
|
||||
|
||||
.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 p,
|
||||
.markdown-body blockquote,
|
||||
.markdown-body ul,
|
||||
.markdown-body ol,
|
||||
.markdown-body dl,
|
||||
.markdown-body table,
|
||||
.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,
|
||||
.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 .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 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 2em;
|
||||
border-bottom: 1px solid #eaecef;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.5em;
|
||||
border-bottom: 1px solid #eaecef;
|
||||
}
|
||||
|
||||
.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 {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.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 img {
|
||||
max-width: 100%;
|
||||
box-sizing: content-box;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
padding: 0;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
background-color: rgba(27,31,35,0.05);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown-body code::before,
|
||||
.markdown-body code::after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
.markdown-body pre>code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
word-break: normal;
|
||||
white-space: pre;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body .highlight {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre {
|
||||
margin-bottom: 0;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre,
|
||||
.markdown-body pre {
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
background-color: #f6f8fa;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown-body pre code {
|
||||
display: inline;
|
||||
max-width: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
line-height: inherit;
|
||||
word-wrap: normal;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body pre code::before,
|
||||
.markdown-body pre code::after {
|
||||
content: normal;
|
||||
}
|
||||
|
||||
.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: #fafbfc;
|
||||
border: solid 1px #d1d5da;
|
||||
border-bottom-color: #c6cbd1;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #c6cbd1;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
@ -1,75 +0,0 @@
|
||||
/*!
|
||||
* Article
|
||||
*/
|
||||
.article-nav
|
||||
padding-bottom 10px
|
||||
color #888
|
||||
.article-share
|
||||
padding 0 0 15px
|
||||
.share-area
|
||||
height 24px
|
||||
line-height 24px
|
||||
margin 0 auto
|
||||
padding-left 10px
|
||||
text-align left
|
||||
border-left 3px solid rgba(255, 153, 153, .8)
|
||||
.share-txt
|
||||
float left
|
||||
height 24px
|
||||
line-height 24px
|
||||
margin-right 5px
|
||||
font-size 12px
|
||||
color c-999
|
||||
.share-icon
|
||||
float left
|
||||
display inline-block
|
||||
width 24px
|
||||
height 24px
|
||||
margin-right 10px
|
||||
background url(../img/share.png) no-repeat 0 0
|
||||
opacity .9
|
||||
&:hover
|
||||
opacity .7
|
||||
&.weibo
|
||||
background-position 0 0
|
||||
&.wechat
|
||||
background-position 0 -32px
|
||||
&.qqzone
|
||||
background-position 0 -65px
|
||||
&.qq
|
||||
background-position 0 -98px
|
||||
&.douban
|
||||
background-position 0 -324px
|
||||
.body
|
||||
box-shadow 0 1px 5px rgba(0, 0, 0, .08)
|
||||
.article
|
||||
padding-top 0 !important
|
||||
padding-bottom 10px
|
||||
border-bottom 0
|
||||
.comments
|
||||
margin-top 20px
|
||||
.page-navigator
|
||||
margin 1em 0
|
||||
padding 0 20px
|
||||
list-style none
|
||||
.extend
|
||||
.page-number
|
||||
display inline-block
|
||||
margin-right 10px
|
||||
padding 3px 10px
|
||||
background-color c-eee
|
||||
opacity .8
|
||||
&.current
|
||||
color c-fff
|
||||
background-color #ff5e52
|
||||
cursor not-allowed
|
||||
.extend
|
||||
a.page-number
|
||||
transition .5s linear
|
||||
&:hover
|
||||
color c-444
|
||||
background-color c-ccc
|
||||
.space
|
||||
display inline-block
|
||||
margin-right 10px
|
||||
padding 3px 0
|
||||
@ -1,92 +0,0 @@
|
||||
.banner
|
||||
position: fixed
|
||||
bottom: 0
|
||||
left: 0
|
||||
z-index: 1
|
||||
font-size: 0
|
||||
transition: all .3s ease-in-out
|
||||
-webkit-transform: translateY(3px)
|
||||
transform: translateY(3px)
|
||||
|
||||
.banner:hover
|
||||
-webkit-transform: translateY(0)
|
||||
transform: translateY(0)
|
||||
|
||||
@media (max-width: 768px)
|
||||
.banner
|
||||
display: none
|
||||
.banner-tips
|
||||
opacity: 0
|
||||
width: 250px
|
||||
height: 70px
|
||||
margin: -20px 20px
|
||||
padding: 5px 10px
|
||||
border: 1px solid rgba(224, 186, 140, 0.62)
|
||||
border-radius: 12px
|
||||
background-color: rgba(236, 217, 188, 0.5)
|
||||
box-shadow: 0 3px 15px 2px rgba(191, 158, 118, 0.2)
|
||||
font-size: 14px
|
||||
text-overflow: ellipsis
|
||||
overflow: hidden
|
||||
position: absolute
|
||||
transition : opacity 0.3s ease-in;
|
||||
animation-delay: 5s
|
||||
animation-duration: 50s
|
||||
animation-iteration-count: infinite
|
||||
animation-name: shake
|
||||
animation-timing-function: ease-in-out
|
||||
|
||||
.banner #live2d
|
||||
position: relative
|
||||
|
||||
@keyframes shake
|
||||
2% {transform: translate(0.5px, -1.5px) rotate(-0.5deg) }
|
||||
4% {transform: translate(0.5px, 1.5px) rotate(1.5deg) }
|
||||
6% {transform: translate(1.5px, 1.5px) rotate(1.5deg) }
|
||||
8% {transform: translate(2.5px, 1.5px) rotate(0.5deg) }
|
||||
10% {transform: translate(0.5px, 2.5px) rotate(0.5deg) }
|
||||
12% {transform: translate(1.5px, 1.5px) rotate(0.5deg) }
|
||||
14% {transform: translate(0.5px, 0.5px) rotate(0.5deg) }
|
||||
16% {transform: translate(-1.5px, -0.5px) rotate(1.5deg) }
|
||||
18% {transform: translate(0.5px, 0.5px) rotate(1.5deg) }
|
||||
20% {transform: translate(2.5px, 2.5px) rotate(1.5deg) }
|
||||
22% {transform: translate(0.5px, -1.5px) rotate(1.5deg) }
|
||||
24% {transform: translate(-1.5px, 1.5px) rotate(-0.5deg) }
|
||||
26% {transform: translate(1.5px, 0.5px) rotate(1.5deg) }
|
||||
28% {transform: translate(-0.5px, -0.5px) rotate(-0.5deg) }
|
||||
30% {transform: translate(1.5px, -0.5px) rotate(-0.5deg) }
|
||||
32% {transform: translate(2.5px, -1.5px) rotate(1.5deg) }
|
||||
34% {transform: translate(2.5px, 2.5px) rotate(-0.5deg) }
|
||||
36% {transform: translate(0.5px, -1.5px) rotate(0.5deg) }
|
||||
38% {transform: translate(2.5px, -0.5px) rotate(-0.5deg) }
|
||||
40% {transform: translate(-0.5px, 2.5px) rotate(0.5deg) }
|
||||
42% {transform: translate(-1.5px, 2.5px) rotate(0.5deg) }
|
||||
44% {transform: translate(-1.5px, 1.5px) rotate(0.5deg) }
|
||||
46% {transform: translate(1.5px, -0.5px) rotate(-0.5deg) }
|
||||
48% {transform: translate(2.5px, -0.5px) rotate(0.5deg) }
|
||||
50% {transform: translate(-1.5px, 1.5px) rotate(0.5deg) }
|
||||
52% {transform: translate(-0.5px, 1.5px) rotate(0.5deg) }
|
||||
54% {transform: translate(-1.5px, 1.5px) rotate(0.5deg) }
|
||||
56% {transform: translate(0.5px, 2.5px) rotate(1.5deg) }
|
||||
58% {transform: translate(2.5px, 2.5px) rotate(0.5deg) }
|
||||
60% {transform: translate(2.5px, -1.5px) rotate(1.5deg) }
|
||||
62% {transform: translate(-1.5px, 0.5px) rotate(1.5deg) }
|
||||
64% {transform: translate(-1.5px, 1.5px) rotate(1.5deg) }
|
||||
66% {transform: translate(0.5px, 2.5px) rotate(1.5deg) }
|
||||
68% {transform: translate(2.5px, -1.5px) rotate(1.5deg) }
|
||||
70% {transform: translate(2.5px, 2.5px) rotate(0.5deg) }
|
||||
72% {transform: translate(-0.5px, -1.5px) rotate(1.5deg) }
|
||||
74% {transform: translate(-1.5px, 2.5px) rotate(1.5deg) }
|
||||
76% {transform: translate(-1.5px, 2.5px) rotate(1.5deg) }
|
||||
78% {transform: translate(-1.5px, 2.5px) rotate(0.5deg) }
|
||||
80% {transform: translate(-1.5px, 0.5px) rotate(-0.5deg) }
|
||||
82% {transform: translate(-1.5px, 0.5px) rotate(-0.5deg) }
|
||||
84% {transform: translate(-0.5px, 0.5px) rotate(1.5deg) }
|
||||
86% {transform: translate(2.5px, 1.5px) rotate(0.5deg) }
|
||||
88% {transform: translate(-1.5px, 0.5px) rotate(1.5deg) }
|
||||
90% {transform: translate(-1.5px, -0.5px) rotate(-0.5deg) }
|
||||
92% {transform: translate(-1.5px, -1.5px) rotate(1.5deg) }
|
||||
94% {transform: translate(0.5px, 0.5px) rotate(-0.5deg) }
|
||||
96% {transform: translate(2.5px, -0.5px) rotate(-0.5deg) }
|
||||
98% {transform: translate(-1.5px, -1.5px) rotate(-0.5deg) }
|
||||
0%, 100% {transform: translate(0, 0) rotate(0) }
|
||||
@ -1,203 +0,0 @@
|
||||
.comment
|
||||
margin-top 10px
|
||||
box-sizing border-box
|
||||
.box
|
||||
position relative
|
||||
width 100%
|
||||
.com-avatar
|
||||
position absolute
|
||||
top 2px
|
||||
left 0
|
||||
width 40px
|
||||
height 40px
|
||||
img
|
||||
width 100%
|
||||
height 100%
|
||||
border none
|
||||
border-radius 50%
|
||||
.com-text
|
||||
position relative
|
||||
margin-left 45px
|
||||
height 120px
|
||||
border 2px solid c-eee
|
||||
box-sizing border-box
|
||||
border-radius 2px
|
||||
.switch
|
||||
position absolute
|
||||
right -2px
|
||||
top -2px
|
||||
width 81px
|
||||
height 10px
|
||||
line-height 10px
|
||||
padding 5px 0
|
||||
.switch-item
|
||||
float left
|
||||
width 40px
|
||||
height @height
|
||||
color c-999
|
||||
text-center()
|
||||
font-size 10px
|
||||
cursor pointer
|
||||
opacity .8
|
||||
:first-child
|
||||
border-right 1px solid c-ccc
|
||||
.on
|
||||
color #ff5e52
|
||||
.main
|
||||
margin 0
|
||||
padding 0
|
||||
.text-area-edited
|
||||
display none
|
||||
width 100%
|
||||
height 116px
|
||||
padding 10px
|
||||
border none
|
||||
box-sizing border-box
|
||||
outline none
|
||||
resize none
|
||||
.text-area-preview
|
||||
display none
|
||||
width 100%
|
||||
height 116px
|
||||
padding 10px
|
||||
border none
|
||||
box-sizing border-box
|
||||
overflow auto
|
||||
@extend $base-style
|
||||
p
|
||||
margin 0
|
||||
.show
|
||||
display block
|
||||
.button
|
||||
position absolute
|
||||
bottom -2px
|
||||
right -2px
|
||||
width 100px
|
||||
height 30px
|
||||
line-height @height
|
||||
border-radius 0 0 2px 0
|
||||
color c-fff
|
||||
background-color #ff5e52
|
||||
text-align center
|
||||
opacity .8
|
||||
cursor pointer
|
||||
.button:hover
|
||||
opacity .7
|
||||
.sign-bar
|
||||
height 30px
|
||||
line-height @height
|
||||
text-align right
|
||||
font-size 12px
|
||||
.sign-link
|
||||
margin-left 5px
|
||||
color #ff5e52
|
||||
cursor pointer
|
||||
border none
|
||||
.sign-txt
|
||||
color c-999
|
||||
.tips
|
||||
height 30px
|
||||
line-height @height
|
||||
margin-left 45px
|
||||
font-size 12px
|
||||
color c-999
|
||||
.init
|
||||
color c-999
|
||||
float right
|
||||
.list-wrap
|
||||
margin-top 10px
|
||||
.list-header
|
||||
margin 0
|
||||
padding 0 0 0 15px
|
||||
font-size 12px
|
||||
border-left 2px solid c-eee
|
||||
.comments-num
|
||||
color #ff5e52
|
||||
font-size 14px
|
||||
.list
|
||||
list-style-type none
|
||||
margin 0
|
||||
padding 0
|
||||
.item
|
||||
position relative
|
||||
margin 10px 0
|
||||
border-bottom 1px solid c-eee
|
||||
.user-avatar
|
||||
position absolute
|
||||
top 0
|
||||
left 0
|
||||
width 40px
|
||||
height 40px
|
||||
img
|
||||
width 100%
|
||||
height 100%
|
||||
border none
|
||||
border-radius 50%
|
||||
a
|
||||
border none
|
||||
.user-comment
|
||||
min-height 50px
|
||||
margin-left 50px
|
||||
.user-comment-body
|
||||
margin 5px 0
|
||||
color c-666
|
||||
word-wrap break-word
|
||||
word-break normal
|
||||
@extend $base-style
|
||||
p
|
||||
margin 0
|
||||
a
|
||||
border none
|
||||
color #ff5e52
|
||||
.user-comment-header
|
||||
color c-aaa
|
||||
position relative
|
||||
span
|
||||
margin-right 5px
|
||||
.post-name
|
||||
font-size 12px
|
||||
.post-time
|
||||
font-size 10px
|
||||
.like
|
||||
font-size 10px
|
||||
color #ff5e52
|
||||
cursor pointer
|
||||
.like.liked
|
||||
color c-aaa
|
||||
.like-num
|
||||
font-size 10px
|
||||
.reply
|
||||
position absolute
|
||||
display none
|
||||
right 0
|
||||
top 3px
|
||||
font-size 10px
|
||||
cursor pointer
|
||||
&:hover
|
||||
.user-comment-header
|
||||
.reply
|
||||
display block
|
||||
.page-nav
|
||||
margin-top 10px
|
||||
text-align right
|
||||
.item
|
||||
display inline-block
|
||||
height 10px
|
||||
line-height @height
|
||||
margin 0 2px
|
||||
padding 8px 10px
|
||||
font-size 10px
|
||||
background-color c-eee
|
||||
opacity .8
|
||||
text-align center
|
||||
border none
|
||||
.item.current
|
||||
color c-fff
|
||||
background-color #ff5e52
|
||||
cursor not-allowed
|
||||
.more
|
||||
height 10px
|
||||
line-height @height
|
||||
padding 8px 5px
|
||||
font-size 10px
|
||||
text-align center
|
||||
@ -1,31 +0,0 @@
|
||||
/*!
|
||||
* 底部
|
||||
*/
|
||||
.footer
|
||||
padding 30px
|
||||
color c-aaa
|
||||
background-color c-444
|
||||
font-size 12px
|
||||
text-center()
|
||||
opacity .9
|
||||
a
|
||||
color c-aaa
|
||||
.back-to-top {
|
||||
display: none;
|
||||
width: 40px;
|
||||
height: 39px;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
background: #000 url(../img/scrolltoparrow.png) no-repeat center center;
|
||||
position: fixed;
|
||||
_position: absolute;
|
||||
right: 20px;
|
||||
bottom: 50px;
|
||||
cursor: pointer;
|
||||
opacity: .20;
|
||||
filter: Alpha(opacity=20) !important;
|
||||
text-indent: -9999px;
|
||||
overflow: hidden;
|
||||
z-index: 5
|
||||
}
|
||||
@ -1,199 +0,0 @@
|
||||
/*!
|
||||
* 头部样式
|
||||
*/
|
||||
.header
|
||||
width 100%
|
||||
background-color c-fff
|
||||
box-shadow 1px 1px 5px rgba(0, 0, 0, .1)
|
||||
margin-bottom 10px
|
||||
.header-main
|
||||
position relative
|
||||
height 68px
|
||||
display flex
|
||||
.logo
|
||||
width 160px
|
||||
.menu
|
||||
margin 0
|
||||
padding 10px
|
||||
list-style-type none
|
||||
#search-box
|
||||
padding 10px
|
||||
font-size 16px
|
||||
flex-grow 1
|
||||
line-height 48px
|
||||
position relative
|
||||
.icon
|
||||
position absolute
|
||||
.input-box
|
||||
box-sizing border-box
|
||||
padding 0 3px
|
||||
margin-left 20px
|
||||
> #search-input
|
||||
border none
|
||||
border-bottom 1px solid #9e9e9e
|
||||
background inherit
|
||||
width 50%
|
||||
transition width 0.3s ease-in
|
||||
outline:none
|
||||
&:focus
|
||||
width 80%
|
||||
> #search-result-box
|
||||
position absolute
|
||||
z-index 100
|
||||
line-height 1.2
|
||||
top 48px
|
||||
width 300px
|
||||
max-height 600px
|
||||
overflow-y auto
|
||||
background #f3f3f3
|
||||
box-shadow: -2px 3px 9px 0px #939393;
|
||||
border-radius 5px
|
||||
word-break break-all
|
||||
display none
|
||||
padding 7px
|
||||
ul
|
||||
list-style none
|
||||
padding-left 0
|
||||
margin-top 0
|
||||
a.search-result-title
|
||||
color #3272b5
|
||||
font-size 16px
|
||||
p.search-result
|
||||
font-size 14px
|
||||
margin 0.6em 0
|
||||
strong.search-keyword
|
||||
color #ff776d
|
||||
.logo
|
||||
a
|
||||
position relative
|
||||
display block
|
||||
height 68px
|
||||
line-height @height
|
||||
color c-fff
|
||||
background-color #ff5e52
|
||||
opacity .85
|
||||
text-center()
|
||||
overflow hidden
|
||||
.cover
|
||||
position absolute
|
||||
display block
|
||||
top 0
|
||||
left 0
|
||||
width 100%
|
||||
transition top .5s
|
||||
.name
|
||||
height 100%
|
||||
font-size 28px
|
||||
font-family "HomizioNova", "Microsoft Yahei"
|
||||
font-style italic
|
||||
.description
|
||||
line-height (@height/2)
|
||||
height 100%
|
||||
color c-fff
|
||||
background-color #51cc87
|
||||
opacity .85
|
||||
&:hover .cover
|
||||
top -100%
|
||||
.menu
|
||||
.item
|
||||
float left
|
||||
padding 0 20px
|
||||
height 48px
|
||||
line-height @height
|
||||
font-size 16px
|
||||
a
|
||||
color c-666
|
||||
&:hover
|
||||
color #ff5e52
|
||||
.current a
|
||||
color #ff5e52
|
||||
.profile
|
||||
.avatar
|
||||
width 50px
|
||||
height 50px
|
||||
margin 8px 0
|
||||
border 1px solid c-ddd
|
||||
border-radius 3px
|
||||
> img
|
||||
width 46px
|
||||
height 46px
|
||||
margin 2px
|
||||
.feeds
|
||||
height 68px
|
||||
padding 0 10px
|
||||
color c-666
|
||||
font-size 12px
|
||||
text-right()
|
||||
.links
|
||||
margin 5px 0 0
|
||||
padding 10px 0 3px
|
||||
.sns
|
||||
margin 0 0 5px 0
|
||||
padding 2px 0 10px
|
||||
line-height 14px
|
||||
a
|
||||
margin-left 5px
|
||||
.sinaweibo
|
||||
b
|
||||
color #ff5e52
|
||||
font-size 14px
|
||||
&:hover
|
||||
color #ff5e52
|
||||
.qqweibo
|
||||
b
|
||||
color #1faeff
|
||||
font-size 14px
|
||||
&:hover
|
||||
color #1faeff
|
||||
.wechat
|
||||
position relative
|
||||
b
|
||||
color #4bc916
|
||||
font-size 14px
|
||||
.popover
|
||||
position absolute
|
||||
display none
|
||||
top 28px
|
||||
left 50%
|
||||
width 120px
|
||||
height @width
|
||||
margin-left -60px
|
||||
border 1px solid c-ddd
|
||||
background-color c-fff
|
||||
border-radius 5px
|
||||
z-index 9
|
||||
img
|
||||
width 120px
|
||||
height @width
|
||||
border 0
|
||||
border-radius 5px
|
||||
.arrow
|
||||
position absolute
|
||||
display block
|
||||
top -10px
|
||||
left 50%
|
||||
width 0
|
||||
height 0
|
||||
margin-left -10px
|
||||
border-width 10px
|
||||
border-color transparent
|
||||
border-style solid
|
||||
border-top-width 0
|
||||
border-bottom-color c-ddd
|
||||
&:after
|
||||
position absolute
|
||||
content " "
|
||||
top 1px
|
||||
left 50%
|
||||
margin-left -9px
|
||||
border-width 9px
|
||||
border-color transparent
|
||||
border-style solid
|
||||
border-top-width 0
|
||||
border-bottom-color c-fff
|
||||
&:hover
|
||||
color #4bc916
|
||||
.popover
|
||||
display block
|
||||
.dropnav
|
||||
display none
|
||||
@ -1,142 +0,0 @@
|
||||
// https://github.com/chriskempson/tomorrow-theme
|
||||
$code-block
|
||||
background: highlight-background
|
||||
margin: 20px 0
|
||||
padding: 10px
|
||||
overflow: auto
|
||||
font-size: $code-font-size
|
||||
color: highlight-foreground
|
||||
line-height: $line-height-code-block
|
||||
border: 2px solid #CCC
|
||||
border-radius: 5px
|
||||
|
||||
$line-numbers
|
||||
color: #666
|
||||
|
||||
pre, code
|
||||
font-family: $code-font-family
|
||||
code
|
||||
word-break: break-all
|
||||
background: $gainsboro
|
||||
color: #c7254e
|
||||
border-radius: 4px
|
||||
padding: 0 0.3em
|
||||
pre
|
||||
@extend $code-block
|
||||
code
|
||||
background: none
|
||||
padding: 0
|
||||
.highlight
|
||||
@extend $code-block
|
||||
pre
|
||||
border: none !important
|
||||
margin: 0
|
||||
padding: 1px
|
||||
table
|
||||
margin: 0 !important
|
||||
width: auto !important
|
||||
border: none !important
|
||||
td
|
||||
border: none !important
|
||||
padding: 0 !important
|
||||
figcaption
|
||||
clearfix()
|
||||
font-size: 0.85em
|
||||
color: highlight-comment
|
||||
line-height: 1em
|
||||
margin-bottom: 1em
|
||||
a
|
||||
float: right
|
||||
.gutter pre
|
||||
@extend $line-numbers
|
||||
text-align: right
|
||||
padding-right: 20px
|
||||
.line
|
||||
height: 20px
|
||||
.gist
|
||||
margin: 20px 0
|
||||
border-style: solid
|
||||
border-color: $border-color
|
||||
border-width: 1px 0
|
||||
background: highlight-background
|
||||
padding: 15px $content-desktop-padding 15px 15px
|
||||
.gist-file
|
||||
border: none
|
||||
font-family: $font-family-monospace
|
||||
margin: 0
|
||||
.gist-data
|
||||
background: none
|
||||
border: none
|
||||
.line-numbers
|
||||
@extend $line-numbers
|
||||
background: none
|
||||
border: none
|
||||
padding: 0 20px 0 0
|
||||
.line-data
|
||||
padding: 0 !important
|
||||
.highlight
|
||||
margin: 0
|
||||
padding: 0
|
||||
border: none
|
||||
.gist-meta
|
||||
background: highlight-background
|
||||
color: highlight-comment
|
||||
font: 13px $font-family-base
|
||||
text-shadow: 0 0
|
||||
padding: 0
|
||||
margin-top: 1em
|
||||
margin-left: $content-desktop-padding
|
||||
a
|
||||
color: color-link
|
||||
font-weight: normal
|
||||
&:hover
|
||||
text-decoration: underline
|
||||
|
||||
pre
|
||||
.comment
|
||||
color: highlight-comment
|
||||
.variable
|
||||
.attribute
|
||||
.tag
|
||||
.regexp
|
||||
.ruby .constant
|
||||
.xml .tag .title
|
||||
.xml .pi
|
||||
.xml .doctype
|
||||
.html .doctype
|
||||
.css .id
|
||||
.css .class
|
||||
.css .pseudo
|
||||
color: highlight-red
|
||||
.number
|
||||
.preprocessor
|
||||
.built_in
|
||||
.literal
|
||||
.params
|
||||
.constant
|
||||
color: highlight-orange
|
||||
.ruby .class .title
|
||||
.css .rules .attribute
|
||||
color: highlight-green
|
||||
.string
|
||||
.value
|
||||
.inheritance
|
||||
.header
|
||||
.ruby .symbol
|
||||
.xml .cdata
|
||||
color: highlight-green
|
||||
.title
|
||||
.css .hexcolor
|
||||
color: highlight-aqua
|
||||
.function
|
||||
.python .decorator
|
||||
.python .title
|
||||
.ruby .function .title
|
||||
.ruby .title .keyword
|
||||
.perl .sub
|
||||
.javascript .title
|
||||
.coffeescript .title
|
||||
color: highlight-blue
|
||||
.keyword
|
||||
.javascript .function
|
||||
color: highlight-purple
|
||||
@ -1,129 +0,0 @@
|
||||
/*!
|
||||
* 正文内容
|
||||
*/
|
||||
.content
|
||||
float left
|
||||
width 100%
|
||||
min-height 689px
|
||||
.content-main
|
||||
margin-right 350px
|
||||
padding 20px
|
||||
/*!
|
||||
* Post
|
||||
*/
|
||||
.post
|
||||
padding 25px 0
|
||||
border-bottom 1px solid c-eee
|
||||
overflow hidden
|
||||
header
|
||||
margin 0 0 10px 0
|
||||
> a
|
||||
position relative
|
||||
display inline-block
|
||||
margin-right 6px
|
||||
padding 4px 7px
|
||||
top -3px
|
||||
color c-fff
|
||||
background-color #ff5e52
|
||||
font-size 12px
|
||||
vertical-align baseline
|
||||
opacity .85
|
||||
&:after
|
||||
position absolute
|
||||
display block
|
||||
top 9px
|
||||
right -4px
|
||||
width 0
|
||||
height 0
|
||||
content " "
|
||||
border-left 4px solid #ff5e52
|
||||
border-top 4px solid transparent
|
||||
border-bottom 4px solid transparent
|
||||
.post-title
|
||||
display inline
|
||||
font-size 20px
|
||||
font-weight normal
|
||||
a:hover
|
||||
border-bottom 1px dotted #ff5e52
|
||||
.post-meta
|
||||
color #888
|
||||
font-size 12px
|
||||
.post-views,
|
||||
.post-cat,
|
||||
.post-comments
|
||||
margin-right 15px
|
||||
.post-content
|
||||
position relative
|
||||
color c-444
|
||||
img
|
||||
max-width 100%
|
||||
.post-excerpt
|
||||
position relative
|
||||
min-height 140px
|
||||
margin-right 210px
|
||||
overflow hidden
|
||||
.post-thumbnail
|
||||
position absolute
|
||||
top 0
|
||||
right 0
|
||||
width 200px
|
||||
height 140px
|
||||
overflow hidden
|
||||
.thumbnail
|
||||
display block
|
||||
margin 0 auto
|
||||
width auto
|
||||
height 100%
|
||||
border 0
|
||||
transition .5s
|
||||
a:after
|
||||
content ""
|
||||
position absolute
|
||||
left -70px
|
||||
top 0
|
||||
width 140px
|
||||
height 140px
|
||||
background-image -moz-linear-gradient(0deg,rgba(255,255,255,0),rgba(255,255,255,.5),rgba(255,255,255,0))
|
||||
background-image -webkit-linear-gradient(0deg,rgba(255,255,255,0),rgba(255,255,255,.5),rgba(255,255,255,0))
|
||||
transform skewx(-25deg)
|
||||
-o-transform skewx(-25deg)
|
||||
-moz-transform skewx(-25deg)
|
||||
-webkit-transform skewx(-25deg)
|
||||
&:hover a:after
|
||||
left 130px
|
||||
-webkit-transition all .3s ease-in-out
|
||||
-moz-transition all .3s ease-in-out
|
||||
-o-transition all .3s ease-in-out
|
||||
transition all .3s ease-in-out
|
||||
@extend $base-style
|
||||
a
|
||||
border-bottom 1px dotted #ff5e52
|
||||
.more a
|
||||
position absolute
|
||||
display inline-block
|
||||
right 0
|
||||
bottom 0
|
||||
padding 3px 7px
|
||||
border none
|
||||
color c-fff
|
||||
background-color #51cc87
|
||||
opacity .8
|
||||
&:hover
|
||||
opacity .75
|
||||
blockquote
|
||||
margin 1em 0
|
||||
padding 5px 10px
|
||||
color c-666
|
||||
border-left 4px solid c-eee
|
||||
p
|
||||
margin 0
|
||||
|
||||
.archive-wapper
|
||||
list-style none
|
||||
.archive-item > a
|
||||
display block
|
||||
font-size 16px
|
||||
line-height 30px
|
||||
.date
|
||||
color #999
|
||||
font-size 14px
|
||||
@ -1,109 +0,0 @@
|
||||
/*!
|
||||
* 响应式媒体查询
|
||||
*/
|
||||
/*
|
||||
@media screen and (max-width: 1440px)
|
||||
.container
|
||||
max-width 1140px
|
||||
.content
|
||||
min-height 500px
|
||||
@media screen and (max-width: 1000px) and (min-width: 960px)
|
||||
.container
|
||||
max-width 952px
|
||||
.content
|
||||
min-height 500px
|
||||
*/
|
||||
@media screen and (max-width: 959px)
|
||||
.container
|
||||
margin-bottom 10px
|
||||
padding 0 10px
|
||||
min-width auto
|
||||
.content
|
||||
min-height 500px
|
||||
.sidebar
|
||||
display none
|
||||
.content-main
|
||||
margin-right 0
|
||||
padding 20px 10px
|
||||
.header
|
||||
.header-main
|
||||
height auto
|
||||
.logo
|
||||
float none
|
||||
width 100%
|
||||
.profile
|
||||
display none
|
||||
#search-box
|
||||
display none
|
||||
.menu
|
||||
float none
|
||||
padding 8px 10px
|
||||
border 1px solid rgba(0, 0, 0, .1)
|
||||
background-color #fff
|
||||
border-top 0
|
||||
overflow hidden
|
||||
position absolute
|
||||
right 10px
|
||||
top 69px
|
||||
.item
|
||||
width 50%
|
||||
height auto
|
||||
line-height 1
|
||||
padding 8px 0
|
||||
font-size 14px
|
||||
.hidden
|
||||
display none
|
||||
.dropnav
|
||||
position absolute
|
||||
display block
|
||||
top 21px
|
||||
right 20px
|
||||
width 30px
|
||||
height @width
|
||||
padding 0 2px
|
||||
line-height @height
|
||||
font-size @height
|
||||
color #efe0ce
|
||||
z-index 3
|
||||
cursor pointer
|
||||
&:hover
|
||||
opacity .8
|
||||
.post
|
||||
header .post-title
|
||||
font-size 15px
|
||||
.post-meta
|
||||
text-center()
|
||||
.post-content
|
||||
.post-excerpt
|
||||
margin-right 0
|
||||
.post-thumbnail
|
||||
display none
|
||||
.more a
|
||||
position relative
|
||||
display block
|
||||
padding 6px
|
||||
text-center()
|
||||
.page-navigator
|
||||
padding-left 0
|
||||
.page-number
|
||||
.space
|
||||
.extend
|
||||
margin-right 6px
|
||||
.page-navigator li
|
||||
display inline-block
|
||||
margin-right 7px
|
||||
opacity .8
|
||||
|
||||
.page-navigator li a
|
||||
display block
|
||||
padding 2px 8px
|
||||
background-color #eee
|
||||
.comment
|
||||
.list-wrap
|
||||
.list
|
||||
.user-comment
|
||||
.user-comment-header
|
||||
.reply
|
||||
display block
|
||||
.page-nav .more
|
||||
display none
|
||||
@ -1,98 +0,0 @@
|
||||
/*!
|
||||
* Sidebar
|
||||
*/
|
||||
.sidebar
|
||||
float left
|
||||
width 330px
|
||||
margin-left -350px
|
||||
padding-top 20px
|
||||
padding-bottom 20px
|
||||
.widget
|
||||
position relative
|
||||
margin-bottom 20px
|
||||
clear both
|
||||
.widget
|
||||
ul
|
||||
margin 0
|
||||
padding 0
|
||||
.widget-hd, .widget-date
|
||||
margin 0
|
||||
padding 0
|
||||
border-bottom 2px solid c-eee
|
||||
strong
|
||||
position relative
|
||||
display inline-block
|
||||
bottom -2px
|
||||
color #444
|
||||
border-bottom 2px solid #ff5e52
|
||||
font-weight normal
|
||||
.logout
|
||||
position relative
|
||||
bottom -2px
|
||||
font-size 14px
|
||||
font-weight normal
|
||||
text-decoration underline
|
||||
&:hover
|
||||
text-decoration none
|
||||
.widget-date
|
||||
text-align center
|
||||
border-bottom none
|
||||
strong
|
||||
border-bottom none
|
||||
.widget-bd, .archive-list
|
||||
margin 0
|
||||
padding 0
|
||||
list-style none
|
||||
li
|
||||
display block
|
||||
padding 10px 0
|
||||
line-height 1.5
|
||||
border-bottom 1px solid c-eee
|
||||
font-size 14px
|
||||
overflow hidden
|
||||
text-overflow ellipsis
|
||||
white-space nowrap
|
||||
.badge, .archive-list-count
|
||||
&::before
|
||||
content "("
|
||||
&::after
|
||||
content ")"
|
||||
color #a4a4a4
|
||||
padding .2em .5em
|
||||
a .avatar
|
||||
float left
|
||||
width 36px
|
||||
height 36px
|
||||
margin-right 10px
|
||||
border-radius 50%
|
||||
transform rotate(0)
|
||||
transition .5s
|
||||
a:hover .avatar
|
||||
transform rotate(360deg)
|
||||
opacity .85
|
||||
p
|
||||
margin 0
|
||||
padding 0
|
||||
.tags-cloud > a
|
||||
margin 0 3px
|
||||
position relative
|
||||
word-break: keep-all
|
||||
&::after
|
||||
content ''
|
||||
display block
|
||||
// 开始时候下划线的宽度为100%
|
||||
width 100%
|
||||
height 2px
|
||||
position absolute
|
||||
bottom -3px
|
||||
left: 0
|
||||
background-color #ccc
|
||||
background-color currentColor
|
||||
transition all 0.3s ease-in-out
|
||||
// 通过transform的缩放scale来让初始时x轴为0
|
||||
transform scale3d(0,1,1)
|
||||
// 将坐标原点移到元素的中间,以原点为中心进行缩放
|
||||
transform-origin 50% 0
|
||||
text-decoration underline
|
||||
&:hover::after
|
||||
transform: scale3d(1,1,1);
|
||||
@ -1,74 +0,0 @@
|
||||
$theme_config = hexo-config("highlight_theme")
|
||||
/*!
|
||||
* 高亮样式
|
||||
*/
|
||||
|
||||
if $theme_config == "normal"
|
||||
highlight-background = #f7f7f7
|
||||
highlight-current-line = #efefef
|
||||
highlight-selection = #d6d6d6
|
||||
highlight-foreground = #4d4d4c
|
||||
highlight-comment = #8e908c
|
||||
highlight-red = #c82829
|
||||
highlight-orange = #f5871f
|
||||
highlight-yellow = #eab700
|
||||
highlight-green = #718c00
|
||||
highlight-aqua = #3e999f
|
||||
highlight-blue = #4271ae
|
||||
highlight-purple = #8959a8
|
||||
|
||||
if $theme_config == "night"
|
||||
highlight-background = #1d1f21
|
||||
highlight-current-line = #282a2e
|
||||
highlight-selection = #373b41
|
||||
highlight-foreground = #c5c8c6
|
||||
highlight-comment = #969896
|
||||
highlight-red = #cc6666
|
||||
highlight-orange = #de935f
|
||||
highlight-yellow = #f0c674
|
||||
highlight-green = #b5bd68
|
||||
highlight-aqua = #8abeb7
|
||||
highlight-blue = #81a2be
|
||||
highlight-purple = #b294bb
|
||||
|
||||
if $theme_config == "night eighties"
|
||||
highlight-background = #2d2d2d
|
||||
highlight-current-line = #393939
|
||||
highlight-selection = #515151
|
||||
highlight-foreground = #cccccc
|
||||
highlight-comment = #999999
|
||||
highlight-red = #f2777a
|
||||
highlight-orange = #f99157
|
||||
highlight-yellow = #ffcc66
|
||||
highlight-green = #99cc99
|
||||
highlight-aqua = #66cccc
|
||||
highlight-blue = #6699cc
|
||||
highlight-purple = #cc99cc
|
||||
|
||||
if $theme_config == "night blue"
|
||||
highlight-background = #002451
|
||||
highlight-current-line = #00346e
|
||||
highlight-selection = #003f8e
|
||||
highlight-foreground = #ffffff
|
||||
highlight-comment = #7285b7
|
||||
highlight-red = #ff9da4
|
||||
highlight-orange = #ffc58f
|
||||
highlight-yellow = #ffeead
|
||||
highlight-green = #d1f1a9
|
||||
highlight-aqua = #99ffff
|
||||
highlight-blue = #bbdaff
|
||||
highlight-purple = #ebbbff
|
||||
|
||||
if $theme_config == "night bright"
|
||||
highlight-background = #000000
|
||||
highlight-current-line = #2a2a2a
|
||||
highlight-selection = #424242
|
||||
highlight-foreground = #eaeaea
|
||||
highlight-comment = #969896
|
||||
highlight-red = #d54e53
|
||||
highlight-orange = #e78c45
|
||||
highlight-yellow = #e7c547
|
||||
highlight-green = #b9ca4a
|
||||
highlight-aqua = #70c0b1
|
||||
highlight-blue = #7aa6da
|
||||
highlight-purple = #c397d8
|
||||
@ -1,55 +0,0 @@
|
||||
// 公共变量
|
||||
c-333 = #333
|
||||
c-444 = #444
|
||||
c-555 = #555
|
||||
c-666 = #666
|
||||
c-999 = #999
|
||||
c-aaa = #aaa
|
||||
c-ccc = #ccc
|
||||
c-ddd = #ddd
|
||||
c-eee = #eee
|
||||
c-fff = #fff
|
||||
// 公共函数
|
||||
text-center()
|
||||
text-align center
|
||||
text-left()
|
||||
text-align left
|
||||
text-right()
|
||||
text-align right
|
||||
box-sizing()
|
||||
-ms-box-sizing arguments
|
||||
-moz-box-sizing arguments
|
||||
-webkit-box-sizing arguments
|
||||
-o-box-sizing arguments
|
||||
box-sizing arguments
|
||||
transition()
|
||||
-ms-transition: arguments
|
||||
-moz-transition arguments
|
||||
-webkit-transition arguments
|
||||
-o-transition arguments
|
||||
transition arguments
|
||||
border-radius()
|
||||
-ms-border-radius arguments
|
||||
-moz-border-radius arguments
|
||||
-webkit-border-radius arguments
|
||||
-o-border-radius arguments
|
||||
border-radius arguments
|
||||
transform()
|
||||
-ms-transform arguments
|
||||
-moz-transform arguments
|
||||
-webkit-transform arguments
|
||||
-o-transform arguments
|
||||
transform arguments
|
||||
clearfix()
|
||||
clear both
|
||||
zoom 1
|
||||
|
||||
// 高亮样式变量
|
||||
$code-font-size = 13px
|
||||
$line-height-code-block = 1.6
|
||||
$code-font-family = "Source Code Pro", Consolas, Monaco, Menlo, monospace
|
||||
$gainsboro = #f5ecee
|
||||
$border-color = #ccc
|
||||
$content-desktop-padding = 15px
|
||||
$font-family-base = Consolas, Monaco, Menlo, monospace
|
||||
$font-family-monospace = monospace
|
||||
@ -1,21 +0,0 @@
|
||||
<?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>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
|
||||
<glyph unicode="" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" />
|
||||
<glyph unicode="" glyph-name="user-tie" d="M320 768c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192zM768.078 512h-35.424l-199.104-404.244 74.45 372.244-96 96-96-96 74.45-372.244-199.102 404.244h-35.424c-127.924 0-127.924-85.986-127.924-192v-320h768v320c0 106.014 0 192-127.922 192z" />
|
||||
<glyph unicode="" glyph-name="search" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256z" />
|
||||
<glyph unicode="" glyph-name="cogs" d="M363.722 237.948l41.298 57.816-45.254 45.256-57.818-41.296c-10.722 5.994-22.204 10.774-34.266 14.192l-11.682 70.084h-64l-11.68-70.086c-12.062-3.418-23.544-8.198-34.266-14.192l-57.818 41.298-45.256-45.256 41.298-57.816c-5.994-10.72-10.774-22.206-14.192-34.266l-70.086-11.682v-64l70.086-11.682c3.418-12.060 8.198-23.544 14.192-34.266l-41.298-57.816 45.254-45.256 57.818 41.296c10.722-5.994 22.204-10.774 34.266-14.192l11.682-70.084h64l11.68 70.086c12.062 3.418 23.544 8.198 34.266 14.192l57.818-41.296 45.254 45.256-41.298 57.816c5.994 10.72 10.774 22.206 14.192 34.266l70.088 11.68v64l-70.086 11.682c-3.418 12.060-8.198 23.544-14.192 34.266zM224 96c-35.348 0-64 28.654-64 64s28.652 64 64 64 64-28.654 64-64-28.652-64-64-64zM1024 576v64l-67.382 12.25c-1.242 8.046-2.832 15.978-4.724 23.79l57.558 37.1-24.492 59.128-66.944-14.468c-4.214 6.91-8.726 13.62-13.492 20.13l39.006 56.342-45.256 45.254-56.342-39.006c-6.512 4.766-13.22 9.276-20.13 13.494l14.468 66.944-59.128 24.494-37.1-57.558c-7.812 1.892-15.744 3.482-23.79 4.724l-12.252 67.382h-64l-12.252-67.382c-8.046-1.242-15.976-2.832-23.79-4.724l-37.098 57.558-59.128-24.492 14.468-66.944c-6.91-4.216-13.62-8.728-20.13-13.494l-56.342 39.006-45.254-45.254 39.006-56.342c-4.766-6.51-9.278-13.22-13.494-20.13l-66.944 14.468-24.492-59.128 57.558-37.1c-1.892-7.812-3.482-15.742-4.724-23.79l-67.384-12.252v-64l67.382-12.25c1.242-8.046 2.832-15.978 4.724-23.79l-57.558-37.1 24.492-59.128 66.944 14.468c4.216-6.91 8.728-13.618 13.494-20.13l-39.006-56.342 45.254-45.256 56.342 39.006c6.51-4.766 13.22-9.276 20.13-13.492l-14.468-66.944 59.128-24.492 37.102 57.558c7.81-1.892 15.742-3.482 23.788-4.724l12.252-67.384h64l12.252 67.382c8.044 1.242 15.976 2.832 23.79 4.724l37.1-57.558 59.128 24.492-14.468 66.944c6.91 4.216 13.62 8.726 20.13 13.492l56.342-39.006 45.256 45.256-39.006 56.342c4.766 6.512 9.276 13.22 13.492 20.13l66.944-14.468 24.492 59.13-57.558 37.1c1.892 7.812 3.482 15.742 4.724 23.79l67.382 12.25zM672 468.8c-76.878 0-139.2 62.322-139.2 139.2s62.32 139.2 139.2 139.2 139.2-62.322 139.2-139.2c0-76.878-62.32-139.2-139.2-139.2z" />
|
||||
<glyph unicode="" glyph-name="lab" d="M956.29 155.518l-316.29 527.024v213.458h32c17.6 0 32 14.4 32 32s-14.4 32-32 32h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h32v-213.458l-316.288-527.024c-72.442-120.734-16.512-219.518 124.288-219.518h640c140.8 0 196.73 98.784 124.29 219.518zM241.038 320l206.962 344.938v231.062h128v-231.062l206.964-344.938h-541.926z" />
|
||||
<glyph unicode="" glyph-name="google-plus2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 192c-141.6 0-256 114.4-256 256s114.4 256 256 256c69.2 0 127-25.2 171.6-67l-69.6-66.8c-19 18.2-52.2 39.4-102 39.4-87.4 0-158.8-72.4-158.8-161.6s71.4-161.6 158.8-161.6c101.4 0 139.4 72.8 145.2 110.4h-145.2v87.8h241.8c2.2-12.8 4-25.6 4-42.4 0-146.4-98-250.2-245.8-250.2zM896 448h-64v-64h-64v64h-64v64h64v64h64v-64h64v-64z" />
|
||||
<glyph unicode="" glyph-name="facebook2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h416v448h-128v128h128v64c0 105.8 86.2 192 192 192h128v-128h-128c-35.2 0-64-28.8-64-64v-64h192l-32-128h-160v-448h288c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96z" />
|
||||
<glyph unicode="" glyph-name="sina-weibo" d="M430.2 62c-169.6-16.8-316 60-327 171.2-11 111.4 117.6 215 287 231.8 169.6 16.8 316-60 326.8-171.2 11.2-111.4-117.4-215.2-286.8-231.8zM769.2 431.4c-14.4 4.4-24.4 7.2-16.8 26.2 16.4 41.2 18 76.6 0.2 102-33.2 47.4-124.2 45-228.4 1.2 0 0-32.8-14.2-24.4 11.6 16 51.6 13.6 94.6-11.4 119.6-56.6 56.6-207-2.2-336-131.2-96.4-96.2-152.4-198.8-152.4-287.4 0-169.2 217.2-272.2 429.6-272.2 278.4 0 463.8 161.8 463.8 290.2 0 77.8-65.4 121.8-124.2 140zM954.2 741.4c-67.2 74.6-166.4 103-258 83.6v0c-21.2-4.6-34.6-25.4-30-46.4 4.6-21.2 25.2-34.6 46.4-30 65.2 13.8 135.6-6.4 183.4-59.4s60.8-125.2 40.2-188.4v0c-6.6-20.6 4.6-42.6 25.2-49.4 20.6-6.6 42.6 4.6 49.4 25.2v0.2c28.8 88.4 10.6 190-56.6 264.6zM850.8 648c-32.8 36.4-81.2 50.2-125.6 40.6-18.2-3.8-29.8-22-26-40.2 4-18.2 22-29.8 40-25.8v0c21.8 4.6 45.4-2.2 61.4-19.8 16-17.8 20.4-42 13.4-63.2v0c-5.6-17.6 4-36.8 21.8-42.6 17.8-5.6 36.8 4 42.6 21.8 14 43.4 5.2 93-27.6 129.2zM439.6 263.4c-6-10.2-19-15-29.2-10.8-10.2 4-13.2 15.6-7.4 25.4 6 9.8 18.6 14.6 28.6 10.8 10-3.6 13.6-15 8-25.4zM385.4 194.2c-16.4-26.2-51.6-37.6-78-25.6-26 11.8-33.8 42.2-17.4 67.8 16.2 25.4 50.2 36.8 76.4 25.8 26.6-11.4 35.2-41.6 19-68zM447 379.4c-80.6 21-171.8-19.2-206.8-90.2-35.8-72.4-1.2-153 80.2-179.4 84.4-27.2 184 14.6 218.6 92.6 34.2 76.6-8.4 155.2-92 177z" />
|
||||
<glyph unicode="" glyph-name="rss" d="M136.294 209.070c-75.196 0-136.292-61.334-136.292-136.076 0-75.154 61.1-135.802 136.292-135.802 75.466 0 136.494 60.648 136.494 135.802-0.002 74.742-61.024 136.076-136.494 136.076zM0.156 612.070v-196.258c127.784 0 247.958-49.972 338.458-140.512 90.384-90.318 140.282-211.036 140.282-339.3h197.122c-0.002 372.82-303.282 676.070-675.862 676.070zM0.388 960v-196.356c455.782 0 826.756-371.334 826.756-827.644h196.856c0 564.47-459.254 1024-1023.612 1024z" />
|
||||
<glyph unicode="" glyph-name="github" d="M512.008 947.358c-282.738 0-512.008-229.218-512.008-511.998 0-226.214 146.704-418.132 350.136-485.836 25.586-4.738 34.992 11.11 34.992 24.632 0 12.204-0.48 52.542-0.696 95.324-142.448-30.976-172.504 60.41-172.504 60.41-23.282 59.176-56.848 74.916-56.848 74.916-46.452 31.778 3.51 31.124 3.51 31.124 51.4-3.61 78.476-52.766 78.476-52.766 45.672-78.27 119.776-55.64 149.004-42.558 4.588 33.086 17.852 55.68 32.506 68.464-113.73 12.942-233.276 56.85-233.276 253.032 0 55.898 20.004 101.574 52.76 137.428-5.316 12.9-22.854 64.972 4.952 135.5 0 0 43.006 13.752 140.84-52.49 40.836 11.348 84.636 17.036 128.154 17.234 43.502-0.198 87.336-5.886 128.256-17.234 97.734 66.244 140.656 52.49 140.656 52.49 27.872-70.528 10.35-122.6 5.036-135.5 32.82-35.856 52.694-81.532 52.694-137.428 0-196.654-119.778-239.95-233.79-252.624 18.364-15.89 34.724-47.046 34.724-94.812 0-68.508-0.596-123.644-0.596-140.508 0-13.628 9.222-29.594 35.172-24.566 203.322 67.776 349.842 259.626 349.842 485.768 0 282.78-229.234 511.998-511.992 511.998z" />
|
||||
</font></defs></svg>
|
||||
|
Before Width: | Height: | Size: 8.0 KiB |
@ -1,58 +0,0 @@
|
||||
@charset "UTF-8"
|
||||
@import "_variables"
|
||||
@import "_extend"
|
||||
$comment_config = hexo-config("comment.enable")
|
||||
|
||||
// 字体样式
|
||||
//-----------------------------------------------
|
||||
@import "_base/font"
|
||||
|
||||
// Normalize
|
||||
//-----------------------------------------------
|
||||
@import "_base/normalize"
|
||||
|
||||
// Reset
|
||||
//-----------------------------------------------
|
||||
@import "_base/reset"
|
||||
|
||||
// Global
|
||||
//-----------------------------------------------
|
||||
@import "_base/global"
|
||||
|
||||
// 头部样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/header"
|
||||
|
||||
// 文章列表样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/post"
|
||||
|
||||
// 代码高亮样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/theme"
|
||||
@import "_partial/highlight"
|
||||
|
||||
// 侧栏样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/sidebar"
|
||||
|
||||
// 文章正文样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/article"
|
||||
|
||||
// 博客底部样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/footer"
|
||||
|
||||
// 评论框样式
|
||||
//-----------------------------------------------
|
||||
if $comment_config
|
||||
@import "_partial/comment"
|
||||
|
||||
// 响应式样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/responsive"
|
||||
|
||||
// 看板娘样式
|
||||
//-----------------------------------------------
|
||||
@import "_partial/banner"
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 212 B |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 50 KiB |
@ -1,166 +0,0 @@
|
||||
define(['loadlive2d', 'axios'], function(loadlive2d, axios) {
|
||||
/**
|
||||
* 字符串模板替换
|
||||
* 例如 template:"这是一个{text}内容", context:{text:"有趣的"}
|
||||
* return "这是一个有趣的内容"
|
||||
* @param {String} template 模板内容
|
||||
* @param {Object} context 替换的内容
|
||||
*/
|
||||
function render(template, context) {
|
||||
var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g;
|
||||
return template.replace(tokenReg, function (word, slash1, token, slash2) {
|
||||
if (slash1 || slash2) {
|
||||
return word.replace('\\', '');
|
||||
}
|
||||
var variables = token.replace(/\s/g, '').split('.');
|
||||
var currentObject = context;
|
||||
var i, length, variable;
|
||||
for (i = 0, length = variables.length; i < length; ++i) {
|
||||
variable = variables[i];
|
||||
currentObject = currentObject[variable];
|
||||
if (!currentObject) return '';
|
||||
}
|
||||
return currentObject;
|
||||
});
|
||||
}
|
||||
var re = /x/;
|
||||
console.log(re);
|
||||
re.toString = function() {
|
||||
showMessage('哈哈,你打开了控制台,是想要看看我的秘密吗?', 5000);
|
||||
return '';
|
||||
};
|
||||
|
||||
document.addEventListener('copy', function(){
|
||||
showMessage('你都复制了些什么呀,转载要记得加上出处哦', 5000);
|
||||
})
|
||||
|
||||
var tips = document.querySelector('.banner-tips');
|
||||
var tipTimer = undefined;
|
||||
/**
|
||||
* 显示消息
|
||||
* @param {Object} text 消息内容(如果是数组则显示其中的随机一个元素)
|
||||
* @param {Number} timeout 消失的延迟时间
|
||||
*/
|
||||
function showMessage(text, timeout){
|
||||
if(tipTimer) {
|
||||
window.clearTimeout(tipTimer);
|
||||
tipTimer = undefined;
|
||||
}
|
||||
if(Array.isArray(text)) text = text[Math.floor(Math.random() * text.length + 1)-1];
|
||||
tips.innerHTML = text;
|
||||
tips.style.opacity = 1;
|
||||
hideMessage(timeout);
|
||||
}
|
||||
/**
|
||||
* 隐藏消息
|
||||
* @param {Number} timeout 消失的延迟时间
|
||||
*/
|
||||
function hideMessage(timeout){
|
||||
tipTimer = setTimeout(function(){
|
||||
tips.style.opacity = 0;
|
||||
}, timeout || 5000);
|
||||
}
|
||||
var text, productHref = [
|
||||
'https://www.colorfulsweet.site/',
|
||||
'https://sookie2010.coding.me/',
|
||||
'https://sookie2010.github.io/'
|
||||
];
|
||||
if(document.referrer){
|
||||
var referrer = document.createElement('a');
|
||||
referrer.href = document.referrer;
|
||||
text = 'Hello! 来自 <span style="color:#0099cc;">' + referrer.hostname + '</span> 的朋友';
|
||||
var domain = referrer.hostname.split('.')[1];
|
||||
if (domain == 'baidu') {
|
||||
text = 'Hello! 来自 百度搜索 的朋友<br>你是搜索 <span style="color:#0099cc;">' + referrer.search.split('&wd=')[1].split('&')[0] + '</span> 找到的我吗?';
|
||||
}else if (domain == 'so') {
|
||||
text = 'Hello! 来自 360搜索 的朋友<br>你是搜索 <span style="color:#0099cc;">' + referrer.search.split('&q=')[1].split('&')[0] + '</span> 找到的我吗?';
|
||||
}else if (domain == 'google') {
|
||||
text = 'Hello! 来自 谷歌搜索 的朋友<br>欢迎阅读<span style="color:#0099cc;">『' + document.title.split(' - ')[0] + '』</span>';
|
||||
}
|
||||
}else {
|
||||
if (productHref.indexOf(window.location.href) !== -1) { //如果是主页
|
||||
var now = new Date().getHours();
|
||||
if (now > 23 || now <= 5) {
|
||||
text = '你是夜猫子呀?这么晚还不睡觉,明天起的来吗';
|
||||
} else if (now > 5 && now <= 7) {
|
||||
text = '早上好!一日之计在于晨,美好的一天就要开始了';
|
||||
} else if (now > 7 && now <= 11) {
|
||||
text = '上午好!工作顺利吗,不要久坐,多起来走动走动哦!';
|
||||
} else if (now > 11 && now <= 14) {
|
||||
text = '中午了,工作了一个上午,现在是午餐时间!';
|
||||
} else if (now > 14 && now <= 17) {
|
||||
text = '午后很容易犯困呢,今天的运动目标完成了吗?';
|
||||
} else if (now > 17 && now <= 19) {
|
||||
text = '傍晚了!窗外夕阳的景色很美丽呢,最美不过夕阳红~';
|
||||
} else if (now > 19 && now <= 21) {
|
||||
text = '晚上好,今天过得怎么样?';
|
||||
} else if (now > 21 && now <= 23) {
|
||||
text = '已经这么晚了呀,早点休息吧,晚安~';
|
||||
} else {
|
||||
text = '嗨~ 快来逗我玩吧!';
|
||||
}
|
||||
}else {
|
||||
text = '欢迎阅读<span style="color:#0099cc;">『' + document.title.split('|')[0] + '』</span>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 页面中元素触发的看板娘消息
|
||||
*/
|
||||
function createTrigger(tips) {
|
||||
return function(){
|
||||
var text = tips.text;
|
||||
if(Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1)-1];
|
||||
text = render(text, {text: this.textContent});
|
||||
showMessage(text, 3000);
|
||||
}
|
||||
}
|
||||
function bindElementEvent(url) {
|
||||
axios.get(url).then(function(res){
|
||||
for(var eventName in res.data) {
|
||||
res.data[eventName].forEach(function(tips){
|
||||
Array.prototype.forEach.call(document.querySelectorAll(tips.selector),function(item){
|
||||
item.addEventListener(eventName, createTrigger(tips));
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 一言
|
||||
function getHitokoto(){
|
||||
axios.get('https://v1.hitokoto.cn/?encode=json&charset=utf-8&c=b&c=a&c=e').then(function(res){
|
||||
showMessage(res.data.hitokoto, 5000);
|
||||
setTimeout(getHitokoto, 30000);
|
||||
}).catch(function(){
|
||||
setTimeout(getHitokoto, 45000);
|
||||
})
|
||||
}
|
||||
return {
|
||||
/**
|
||||
* 加载看板娘模型
|
||||
* @param {Sting} modelUrl 模板的json描述文件路径
|
||||
*/
|
||||
init: function(modelUrl){
|
||||
axios.get(modelUrl).then(function(res){
|
||||
var randomIndex = Math.floor(Math.random() * res.data.textures.length);
|
||||
//随机皮肤
|
||||
if(window.location.href.startsWith('http://localhost') || ("ActiveXObject" in window)) {
|
||||
//本地开发调试或者是IE浏览器
|
||||
res.data.textures = ['/resource/model/skin/'+res.data.textures[randomIndex]];
|
||||
} else {
|
||||
//服务器部署运行(使用网易蜂巢对象存储)
|
||||
res.data.textures = ['https://blog-cdn.nos-eastchina1.126.net/live2D/'+res.data.textures[randomIndex]];
|
||||
}
|
||||
loadlive2d('live2d', '/resource/', '', res.data);
|
||||
// loadlive2d("live2d", "/resource/model.json");
|
||||
});
|
||||
// 定时显示"一言"
|
||||
setTimeout(getHitokoto, 10000);
|
||||
// 按照json当中的配置给页面元素绑定事件
|
||||
bindElementEvent("/resource/banner-tips.json");
|
||||
showMessage(text, 6000);
|
||||
},
|
||||
showMessage: showMessage
|
||||
}
|
||||
});
|
||||
@ -1,873 +0,0 @@
|
||||
var JELON = window.JELON || {};
|
||||
;(function (JL) {
|
||||
var constants = {
|
||||
ACCESS_TOKEN_KEY: 'xups-github-comments-token', // access_token key
|
||||
USER_INFO_KEY: 'xups-github-user-info', // 登录用户信息 key
|
||||
PER_PAGE: 10, // 每页的评论数
|
||||
API_HOST: 'https://api.github.com'
|
||||
};
|
||||
var queryUrl = function (key, url, uncode) {
|
||||
url = url || location.href;
|
||||
var reg = new RegExp('(\\?|&|#|&)' + key + '=([^?&#]*)');
|
||||
var result = url.match(reg);
|
||||
if (uncode) {
|
||||
return result ? result[2] : '';
|
||||
}
|
||||
return result ? decodeURIComponent(result[2]) : '';
|
||||
};
|
||||
var $ = JL.$ || function(str) {
|
||||
return /^(\[object HTML)[a-zA-Z]*(Element\])$/.test(Object.prototype.toString.call(str)) ? str : document.getElementById(str);
|
||||
};
|
||||
var addClass = function (elem, className) {
|
||||
if (!elem) return;
|
||||
var classNames;
|
||||
var setClass;
|
||||
var i, l, cl;
|
||||
if (elem instanceof Array) {
|
||||
for (i = 0, l = elem.length; i < l; i++) {
|
||||
elem[i] = arguments.callee.call(this, elem[i], className);
|
||||
}
|
||||
} else if (typeof elem.item === 'function') {
|
||||
var result = [];
|
||||
for (i = 0, l = elem.length; i < l; i++) {
|
||||
result.push(arguments.callee.call(this, elem.item(i), className));
|
||||
}
|
||||
elem = result;
|
||||
} else {
|
||||
elem = $(elem);
|
||||
if (!elem) return;
|
||||
if (className && typeof className === 'string') {
|
||||
classNames = className.split(/\s+/);
|
||||
if (elem.nodeType === 1) {
|
||||
if (!elem.className && classNames.length === 1) {
|
||||
elem.className = className;
|
||||
} else {
|
||||
setClass = ' ' + elem.className + ' ';
|
||||
for (i = 0, cl = classNames.length; i < cl; i++) {
|
||||
if (setClass.indexOf(' ' + classNames[i] + ' ') < 0) {
|
||||
setClass += classNames[i] + ' ';
|
||||
}
|
||||
}
|
||||
elem.className = setClass.trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return elem;
|
||||
};
|
||||
var removeClass = function (elem, className) {
|
||||
if (!elem) return;
|
||||
var classNames, i, l, c, cl;
|
||||
if (elem instanceof Array) {
|
||||
for (i = 0, l = elem.length; i < l; i++) {
|
||||
elem[i] = arguments.callee.call(this, elem[i], className);
|
||||
}
|
||||
} else if (typeof elem.item === 'function') {
|
||||
var result = [];
|
||||
for (i = 0, l = elem.length; i < l; i++) {
|
||||
result.push(arguments.callee.call(this, elem.item(i), className));
|
||||
}
|
||||
elem = result;
|
||||
} else {
|
||||
elem = $(elem);
|
||||
if (!elem) return;
|
||||
if ((className && typeof className === 'string') || className === undefined) {
|
||||
classNames = (className || '').split(/\s+/);
|
||||
if (elem.nodeType === 1 && elem.className) {
|
||||
if (className) {
|
||||
className = (' ' + elem.className + ' ').replace(/[\n\t\r]/g, ' ');
|
||||
for (c = 0, cl = classNames.length; c < cl; c++) {
|
||||
className = className.replace(' ' + classNames[c] + ' ', ' ');
|
||||
}
|
||||
elem.className = className.trim();
|
||||
} else {
|
||||
elem.className = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return elem;
|
||||
};
|
||||
/**
|
||||
* 格式化日期文本,如 yyyy-MM-dd hh:mm:ss
|
||||
*/
|
||||
var formatDate = function (format, date) {
|
||||
if (!date) return '';
|
||||
if (typeof date == 'number') date = new Date(date * 1000);
|
||||
var o = {
|
||||
'M+': date.getMonth() + 1,
|
||||
'd+': date.getDate(),
|
||||
'h+': date.getHours(),
|
||||
'm+': date.getMinutes(),
|
||||
's+': date.getSeconds(),
|
||||
'q+': Math.floor((date.getMonth() + 3) / 3),
|
||||
'S': date.getMilliseconds(),
|
||||
'w': '日一二三四五六'.charAt(date.getDay())
|
||||
};
|
||||
format = format.replace(/y{4}/, date.getFullYear()).replace(/y{2}/, date.getFullYear().toString().substring(2));
|
||||
for (var k in o) {
|
||||
var reg = new RegExp(k);
|
||||
format = format.replace(reg, match);
|
||||
}
|
||||
function match(m) {
|
||||
return m.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length);
|
||||
}
|
||||
return format;
|
||||
};
|
||||
/**
|
||||
* 分享到社交平台
|
||||
* @param {String} type
|
||||
*/
|
||||
var share = function(type) {
|
||||
if(!type) return;
|
||||
switch (type) {
|
||||
case 'weibo' : //微博
|
||||
window.open('http://service.weibo.com/share/share.php?url=' +
|
||||
encodeURIComponent(location.href) + '&title=' + document.title + '&language=zh_cn');
|
||||
break;
|
||||
case 'qqzone' : //QQ空间
|
||||
window.open('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' +
|
||||
encodeURIComponent(location.href) + '&title=' + document.title);
|
||||
break;
|
||||
case 'qq' : //QQ
|
||||
window.open('http://connect.qq.com/widget/shareqq/index.html?url=' +
|
||||
encodeURIComponent(location.href) + '&desc=Silence个人博客&title=' +
|
||||
document.title + '&callback=' + encodeURIComponent(location.href));
|
||||
break;
|
||||
case 'douban' : //豆瓣
|
||||
window.open('http://shuo.douban.com/!service/share?href=' +
|
||||
encodeURIComponent(location.href) + '&name=' + document.title + '&text=' + document.title);
|
||||
break;
|
||||
default : console.warn('未知的分享类型', type)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 过滤字符串中的style link script标签, 防止注入
|
||||
* @param {String} str 需要处理的字符串
|
||||
*/
|
||||
var htmlFilter = function (str) {
|
||||
if (typeof str !== 'string') return;
|
||||
str = str.replace(/(<style.*?<\/style>)/g, '')
|
||||
.replace(/(<link.*\s+href=(?:"[^"]*"|'[^']*')[^<]*>)/g, '')
|
||||
.replace(/<script.*?>.*?<\/script>/g, '');
|
||||
return str;
|
||||
};
|
||||
|
||||
/**
|
||||
* 封装ajax函数
|
||||
* @param {String} opt.method 连接的方式,包括POST和GET两种方式
|
||||
* @param {String} opt.url 发送请求的url
|
||||
* @param {Boolean} opt.async 是否为异步请求,true为异步的,false为同步的
|
||||
* @param {Object} opt.data 发送的参数,格式为对象类型
|
||||
* @param {Function} opt.success 发送并接收成功调用的回调函数
|
||||
* @param {Function} opt.fail 失败回调
|
||||
*/
|
||||
var ajax = function (opt) {
|
||||
opt = opt || {};
|
||||
opt.method = opt.method.toUpperCase() || 'POST';
|
||||
opt.url = opt.url || '';
|
||||
opt.async = opt.async || true;
|
||||
opt.data = opt.data || null;
|
||||
opt.success = opt.success || function () {};
|
||||
var xhr = null;
|
||||
if (window.XMLHttpRequest) {
|
||||
xhr = new XMLHttpRequest();
|
||||
} else {
|
||||
xhr = new ActiveXObject('Microsoft.XMLHTTP');
|
||||
}
|
||||
var params = [];
|
||||
var token = window.localStorage.getItem(constants.ACCESS_TOKEN_KEY);
|
||||
|
||||
for (var key in opt.data) {
|
||||
params.push(key + '=' + opt.data[key]);
|
||||
}
|
||||
var postData = params.join('&');
|
||||
if (opt.method.toUpperCase() === 'POST') {
|
||||
xhr.open(opt.method, opt.url, opt.async);
|
||||
if (window.JSON) {
|
||||
postData = JSON.stringify(opt.data);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
|
||||
} else {
|
||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
|
||||
}
|
||||
if (opt.headers && opt.headers['Accept']) {
|
||||
xhr.setRequestHeader('Accept', opt.headers['Accept']);
|
||||
} else {
|
||||
xhr.setRequestHeader('Accept', 'application/vnd.github.squirrel-girl-preview, application/vnd.github.html+json');
|
||||
}
|
||||
// 登录校验
|
||||
if (token) {
|
||||
xhr.setRequestHeader('Authorization', 'token ' + token);
|
||||
}
|
||||
xhr.send(postData);
|
||||
} else if (opt.method.toUpperCase() === 'GET') {
|
||||
xhr.open(opt.method, opt.url + '?' + postData, opt.async);
|
||||
xhr.setRequestHeader('Accept', 'application/vnd.github.squirrel-girl-preview, application/vnd.github.html+json');
|
||||
// 登录校验
|
||||
if (token) {
|
||||
xhr.setRequestHeader('Authorization', 'token ' + token);
|
||||
}
|
||||
xhr.send(null);
|
||||
}
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status >= 200 && xhr.status < 300) {
|
||||
opt.success && opt.success(xhr.responseText);
|
||||
} else {
|
||||
opt.fail && opt.fail(xhr.status)
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.onerror = function () {
|
||||
opt.fail && opt.fail({ message: '请求错误!' });
|
||||
};
|
||||
};
|
||||
JL.issueComments = 0;
|
||||
JL.issueNumber = 0;
|
||||
JL.Utils = {
|
||||
ajax: ajax,
|
||||
queryUrl: queryUrl,
|
||||
addClass: addClass,
|
||||
removeClass: removeClass,
|
||||
formatDate: formatDate,
|
||||
share: share
|
||||
};
|
||||
JL.Renders = {
|
||||
box: {
|
||||
tpl: [
|
||||
'<section class="box" id="JELON__commentBox">',
|
||||
'<div class="com-avatar"><img id="loginAvatar" src="/img/loading.gif" alt="avatar"></div>',
|
||||
'<div class="com-text">',
|
||||
'<div class="main">',
|
||||
'<textarea class="text-area-edited show" id="JELON__editBox" placeholder="欢迎评论!"></textarea>',
|
||||
'<div class="text-area-preview" id="JELON__previewBox"></div>',
|
||||
'</div>',
|
||||
'<div class="switch">',
|
||||
'<div class="switch-item on" id="JELON__editSwitcher" onclick="JELON.Actions.editPreviewSwitch(\'edit\')">编辑</div>',
|
||||
'<div class="switch-item" id="JELON__previewSwitcher" onclick="JELON.Actions.editPreviewSwitch(\'preview\')">预览</div>',
|
||||
'</div>',
|
||||
'<div class="button" onclick="JELON.Actions.postComment()">提交</div>',
|
||||
'</div>',
|
||||
'</section>'
|
||||
].join(''),
|
||||
update: function () {
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
if (userInfo) {
|
||||
userInfo = JSON.parse(userInfo);
|
||||
} else {
|
||||
userInfo = {};
|
||||
}
|
||||
// 默认头像路径 /img/jelon.jpg
|
||||
$('loginAvatar').src = userInfo.avatar_url || '/img/github.png';
|
||||
}
|
||||
},
|
||||
list: {
|
||||
tpl: [
|
||||
'<section class="list-wrap" id="JELON__commentList">',
|
||||
'<div class="text-center">正在加载评论</div>',
|
||||
'</section>'
|
||||
].join(''),
|
||||
/**
|
||||
* 评论列表模块视图更新
|
||||
* @param {Number} page 评论列表当前页码
|
||||
* @param {Number} comments 当前文章下所有评论总数
|
||||
* @param {Number} list 当前列表下评论列表数据
|
||||
* @param {Function} callback 回调
|
||||
* @return void(0)
|
||||
*/
|
||||
update: function (page, comments, list, callback) {
|
||||
var perNavPageMaxSize = 10;
|
||||
var html = '';
|
||||
var htmlList = [];
|
||||
var pageList = [];
|
||||
var allPages = Math.ceil(comments / constants.PER_PAGE);
|
||||
if (comments === 0) {
|
||||
html = '<div class="text-center">暂无评论</div>';
|
||||
} else {
|
||||
var item = '';
|
||||
var pageItem = '';
|
||||
for (var i = 0, len = list.length; i < len; i++) {
|
||||
item = [
|
||||
'<li class="item">',
|
||||
'<div class="user-avatar">',
|
||||
'<a target="_blank" href="' + list[i].user.html_url + '">',
|
||||
'<img src="' + list[i].user.avatar_url + '" alt="user-avatar">',
|
||||
'</a>',
|
||||
'</div>',
|
||||
'<div class="user-comment">',
|
||||
'<div class="user-comment-header" id="JELON__comment_' + list[i].id + '_reactions">',
|
||||
'<span class="post-name">' + list[i].user.login + '</span>',
|
||||
'<span class="post-time">' + formatDate('yyyy-MM-dd hh:mm', new Date(list[i].created_at)) + '</span>',
|
||||
'<span class="like" onclick="JELON.Actions.like(' + list[i].id + ')">点赞</span>',
|
||||
'<span class="like-num">' + list[i].reactions.heart + '</span>',
|
||||
'<span class="reply" onclick="JELON.Actions.reply(\'' + list[i].user.login + '\', \'' + (list[i].body_html || list[i].body).replace(/<[^>]+>|\s|[\r\n]/g, ' ') + '\')">回复</span>',
|
||||
'</div>',
|
||||
'<div class="user-comment-body">' + (list[i].body_html || list[i].body) + '</div>',
|
||||
'</div>',
|
||||
'</li>'
|
||||
].join('');
|
||||
htmlList.push(item);
|
||||
}
|
||||
if (allPages === 1) {
|
||||
pageItem = '<a href="javascript: void(0);" class="item current">' + page + '</a>';
|
||||
pageList.push(pageItem);
|
||||
} else if (allPages <= perNavPageMaxSize) {
|
||||
for (var i = 1; i <= allPages; i++) {
|
||||
if (i === page) {
|
||||
pageItem = '<a href="javascript: void(0);" class="item current">' + page + '</a>';
|
||||
} else {
|
||||
pageItem = '<a href="javascript: JELON.Actions.pageJump(' + i + ');" class="item">' + i + '</a>';
|
||||
}
|
||||
pageList.push(pageItem);
|
||||
}
|
||||
if (page !== 1) {
|
||||
pageList.unshift('<a href="javascript: JELON.Actions.pageJump(' + (page - 1) + ');" class="item">上页</a>');
|
||||
}
|
||||
if (page !== allPages) {
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page + 1) + ');" class="item">下页</a>');
|
||||
}
|
||||
} else if (allPages > perNavPageMaxSize) {
|
||||
if (page <= perNavPageMaxSize) {
|
||||
for (var i = 1; i <= perNavPageMaxSize; i++) {
|
||||
if (i === page) {
|
||||
pageItem = '<a href="javascript: void(0);" class="item current">' + page + '</a>';
|
||||
} else {
|
||||
pageItem = '<a href="javascript: JELON.Actions.pageJump(' + i + ');" class="item">' + i + '</a>';
|
||||
}
|
||||
pageList.push(pageItem);
|
||||
}
|
||||
if (page !== 1) {
|
||||
pageList.unshift('<a href="javascript: JELON.Actions.pageJump(' + (page - 1) + ');" class="item">上页</a>');
|
||||
}
|
||||
pageList.push('<span class="more">...</span>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page + 1) + ');" class="item">下页</a>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + allPages + ');" class="item">末页</a>');
|
||||
} else if (page > perNavPageMaxSize && page <= allPages - perNavPageMaxSize) {
|
||||
var mod = page % perNavPageMaxSize;
|
||||
var start = Math.floor(page / perNavPageMaxSize) * perNavPageMaxSize + 1;
|
||||
var end = Math.ceil(page / perNavPageMaxSize) * perNavPageMaxSize;
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(1);" class="item">首页</a>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page - 1) + ');" class="item">上页</a>');
|
||||
for (var i = start; i <= end; i++) {
|
||||
if (i === page) {
|
||||
pageItem = '<a href="javascript: void(0);" class="item current">' + page + '</a>';
|
||||
} else {
|
||||
pageItem = '<a href="javascript: JELON.Actions.pageJump(' + i + ');" class="item">' + i + '</a>';
|
||||
}
|
||||
pageList.push(pageItem);
|
||||
}
|
||||
|
||||
pageList.push('<span class="more">...</span>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page + 1) + ');" class="item">下页</a>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + allPages + ');" class="item">末页</a>');
|
||||
} else if (page > perNavPageMaxSize && page > allPages - perNavPageMaxSize) {
|
||||
var start = allPages - perNavPageMaxSize + 1;
|
||||
var end = allPages;
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(1);" class="item">首页</a>');
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page - 1) + ');" class="item">上页</a>');
|
||||
for (var i = start; i <= end; i++) {
|
||||
if (i === page) {
|
||||
pageItem = '<a href="javascript: void(0);" class="item current">' + page + '</a>';
|
||||
} else {
|
||||
pageItem = '<a href="javascript: JELON.Actions.pageJump(' + i + ');" class="item">' + i + '</a>';
|
||||
}
|
||||
pageList.push(pageItem);
|
||||
}
|
||||
if (page !== allPages) {
|
||||
pageList.push('<a href="javascript: JELON.Actions.pageJump(' + (page + 1) + ');" class="item">下页</a>');
|
||||
}
|
||||
}
|
||||
}
|
||||
html = [
|
||||
'<header class="list-header">总共 <span class="comments-num" id="JELON__commentsNum">' + JL.issueComments + '</span> 条评论</header>',
|
||||
'<ul class="list">',
|
||||
htmlList.join(''),
|
||||
'</ul>',
|
||||
'<div class="page-nav">',
|
||||
pageList.join(''),
|
||||
'</div>'
|
||||
].join('');
|
||||
}
|
||||
$('JELON__commentList').innerHTML = html;
|
||||
if (localStorage.getItem(constants.USER_INFO_KEY)) {
|
||||
callback && callback();
|
||||
}
|
||||
},
|
||||
reactionUpdate: function (commentId, reactions) {
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
if (userInfo) {
|
||||
userInfo = JSON.parse(userInfo);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
var userId = userInfo.id;
|
||||
for (var i = 0, len = reactions.length; i < len; i++) {
|
||||
if (userId === reactions[i].user.id) {
|
||||
addClass($('JELON__comment_' + commentId + '_reactions').getElementsByClassName('like')[0], 'liked');
|
||||
$('JELON__comment_' + commentId + '_reactions').getElementsByClassName('like')[0].innerHTML = '已赞';
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
addOne: function (data) {
|
||||
var oLi = document.createElement('li');
|
||||
oLi.className = 'item';
|
||||
var item = [
|
||||
'<div class="user-avatar">',
|
||||
'<a target="_blank" href="' + data.user.html_url + '">',
|
||||
'<img src="' + data.user.avatar_url + '" alt="user-avatar">',
|
||||
'</a>',
|
||||
'</div>',
|
||||
'<div class="user-comment">',
|
||||
'<div class="user-comment-header" id="JELON__comment_' + data.id + '_reactions">',
|
||||
'<span class="post-name">' + data.user.login + '</span>',
|
||||
'<span class="post-time">' + formatDate('yyyy-MM-dd hh:mm', new Date(data.created_at)) + '</span>',
|
||||
'<span class="like" onclick="JELON.Actions.like(' + data.reactions.heart + ')">点赞</span>',
|
||||
'<span class="like-num">' + data.reactions.heart + '</span>',
|
||||
'<span class="reply" onclick="JELON.Actions.reply(\'' + data.user.login + '\', \'' + (data.body_html || data.body).replace(/<[^>]+>|\s|[\r\n]/g, ' ') + '\')">回复</span>',
|
||||
'</div>',
|
||||
'<div class="user-comment-body">' + (data.body_html || data.body) + '</div>',
|
||||
'</div>'
|
||||
].join('');
|
||||
oLi.innerHTML = item;
|
||||
var oUl = $('JELON__commentList').getElementsByTagName('ul')[0];
|
||||
if (oUl) {
|
||||
oUl.insertBefore(oLi, oUl.firstChild);
|
||||
$('JELON__commentsNum').innerHTML = JL.issueComments + 1;
|
||||
} else {
|
||||
$('JELON__commentList').innerHTML = [
|
||||
'<header class="list-header">总共 <span class="comments-num" id="JELON__commentsNum">' + (JL.issueComments + 1) + '</span> 条评论</header>',
|
||||
'<ul class="list">',
|
||||
'<li class="item">',
|
||||
item,
|
||||
'</li>',
|
||||
'</ul>'
|
||||
].join('');
|
||||
}
|
||||
}
|
||||
},
|
||||
signBar: {
|
||||
tpl: [
|
||||
'<div class="sign-bar" id="JELON__commentSignBar">',
|
||||
'</div>'
|
||||
].join(''),
|
||||
update: function () {
|
||||
var token = localStorage.getItem(constants.ACCESS_TOKEN_KEY);
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
var html = '';
|
||||
if (token && userInfo) {
|
||||
userInfo = JSON.parse(userInfo);
|
||||
html = [
|
||||
'<span class="sign-txt" title="' + userInfo.login + '">GitHub 已登录!</span>',
|
||||
'<span class="sign-link" onclick="JELON.Actions.signOut()">退出</span>'
|
||||
].join('');
|
||||
} else {
|
||||
html = [
|
||||
'<span class="sign-txt">GitHub 未登录?</span>',
|
||||
'<a href="https://github.com/login/oauth/authorize?scope=public_repo&redirect_uri=',
|
||||
location.href.indexOf('?') !== -1 ? encodeURIComponent(location.href.substring(0, location.href.indexOf('?'))) : encodeURIComponent(location.href),
|
||||
'&client_id=' + JL.options.clientId + '&client_secret=' + JL.options.clientSecret + '" class="sign-link">',
|
||||
'登录',
|
||||
'</a>'
|
||||
].join('');
|
||||
}
|
||||
$('JELON__commentSignBar').innerHTML = html;
|
||||
}
|
||||
},
|
||||
tips: {
|
||||
tpl: '<section class="tips clearfix" id="JELON__comment_tips">注:评论支持 markdown 语法!</section>',
|
||||
update: function () {
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
var handler = '';
|
||||
// 如果文章还没关联 issue 并且登录账号是自己时
|
||||
if (userInfo && JSON.parse(userInfo).login === JL.options.owner && JL.issueNumber === 0) {
|
||||
handler = '<a href="javascript: JELON.Actions.createIssue();" class="init" title="文章关联 issue">初始化评论</a>';
|
||||
}
|
||||
$('JELON__comment_tips').innerHTML = handler + '注:评论支持 markdown 语法!';
|
||||
}
|
||||
},
|
||||
flashTitle: function (title) {
|
||||
var counter = 0;
|
||||
document.title = title + '...';
|
||||
var timer = setInterval(function () {
|
||||
counter++;
|
||||
if (counter % 3 === 0) {
|
||||
document.title = title + '...';
|
||||
} else if (counter % 3 === 1) {
|
||||
document.title = title + '..';
|
||||
} else if (counter % 3 === 2) {
|
||||
document.title = title + '.';
|
||||
}
|
||||
}, 100);
|
||||
},
|
||||
loading: {
|
||||
create: function (oParent) {
|
||||
oParent = oParent || document.body;
|
||||
var oLoading = document.createElement('div');
|
||||
oLoading.className = 'loading-mask';
|
||||
oLoading.id = 'JELON__loadingMask';
|
||||
oLoading.innerHTML = '<div class="loading-icon"><img src="/img/loading.gif" width="50" height="50" alt="加载中" ></div>';
|
||||
oParent.appendChild(oLoading);
|
||||
},
|
||||
remove: function () {
|
||||
var oLoading = $('JELON__loadingMask');
|
||||
oLoading.parentNode.removeChild(oLoading);
|
||||
}
|
||||
}
|
||||
};
|
||||
JL.Actions = {
|
||||
init: function () {
|
||||
var code = queryUrl('code');
|
||||
JL.Renders.signBar.update();
|
||||
JL.Renders.box.update();
|
||||
// if code,继续GitHub 授权
|
||||
if (code) {
|
||||
JL.Renders.loading.create();
|
||||
JL.Renders.flashTitle('登录中');
|
||||
JL.Requests.getAccessToken({
|
||||
client_id: JL.options.clientId,
|
||||
client_secret: JL.options.clientSecret,
|
||||
code: code
|
||||
}, function (res) {
|
||||
if (res.access_token || res.data) {
|
||||
if (res.data) {
|
||||
res.access_token = res.data.access_token;
|
||||
}
|
||||
localStorage.setItem(constants.ACCESS_TOKEN_KEY, res.access_token); // 保存 access_token 至 localStorage
|
||||
JL.Requests.getUserInfo({ access_token: res.access_token }, function (res) {
|
||||
if (res.login) {
|
||||
localStorage.setItem(constants.USER_INFO_KEY, JSON.stringify(res)); // 保存用户信息到 localStorage
|
||||
location.href = location.href.substring(0, location.href.indexOf('?'));
|
||||
JL.Renders.loading.remove();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 登录失败
|
||||
location.href = location.href.substring(0, location.href.indexOf('?'));
|
||||
JL.Renders.loading.remove();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
JL.Requests.getIssueNumberByLabel(JL.options.label, function (res) {
|
||||
if (res.length > 0) {
|
||||
var number = res[0].number;
|
||||
var comments = res[0].comments; // 该 issue 下所有评论数
|
||||
JL.issueNumber = number;
|
||||
JL.issueComments = comments;
|
||||
JL.Requests.getCommentListByIssueNumber(number, {
|
||||
page: 1,
|
||||
per_page: constants.PER_PAGE
|
||||
}, function (list) {
|
||||
JL.Renders.list.update(1, comments, list, function () {
|
||||
for (var i = 0, len = list.length; i < len; i++) {
|
||||
(function (commentId) {
|
||||
JL.Requests.getReactionsByCommentId(commentId, { content: 'heart' }, function (reactions) {
|
||||
JL.Renders.list.reactionUpdate(commentId, reactions);
|
||||
});
|
||||
}(list[i].id));
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// 授权码失效
|
||||
if (typeof res !== 'object') {
|
||||
localStorage.removeItem(constants.ACCESS_TOKEN_KEY);
|
||||
localStorage.removeItem(constants.USER_INFO_KEY);
|
||||
JL.Renders.signBar.update();
|
||||
JL.Renders.box.update();
|
||||
console.warn('登录失败,请稍后刷新再试');
|
||||
} else {
|
||||
JL.Renders.list.update(1, 0, []);
|
||||
JL.Renders.tips.update();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
signOut: function () {
|
||||
localStorage.removeItem(constants.ACCESS_TOKEN_KEY);
|
||||
localStorage.removeItem(constants.USER_INFO_KEY);
|
||||
JL.Renders.signBar.update();
|
||||
JL.Renders.box.update();
|
||||
},
|
||||
pageJump: function (page) {
|
||||
JL.Requests.getCommentListByIssueNumber(JL.issueNumber, {
|
||||
page: Number(page),
|
||||
per_page: constants.PER_PAGE
|
||||
}, function (list) {
|
||||
JL.Renders.list.update(page, JL.issueComments, list, function () {
|
||||
for (var i = 0, len = list.length; i < len; i++) {
|
||||
(function (commentId) {
|
||||
JL.Requests.getReactionsByCommentId(commentId, { content: 'heart' }, function (reactions) {
|
||||
JL.Renders.list.reactionUpdate(commentId, reactions);
|
||||
});
|
||||
}(list[i].id));
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
editPreviewSwitch: function (flag) {
|
||||
if (flag === 'edit') {
|
||||
removeClass('JELON__previewSwitcher', 'on');
|
||||
addClass('JELON__editSwitcher', 'on');
|
||||
removeClass('JELON__previewBox', 'show');
|
||||
addClass('JELON__editBox', 'show');
|
||||
} else {
|
||||
removeClass('JELON__editSwitcher', 'on');
|
||||
addClass('JELON__previewSwitcher', 'on');
|
||||
removeClass('JELON__editBox', 'show');
|
||||
addClass('JELON__previewBox', 'show');
|
||||
var text = $('JELON__editBox').value.trim();
|
||||
text = htmlFilter(text);
|
||||
if (text) {
|
||||
JL.Requests.markdown({
|
||||
text: text,
|
||||
mode: 'markdown',
|
||||
context: 'github/gollum'
|
||||
}, function (res) {
|
||||
$('JELON__previewBox').innerHTML = res;
|
||||
});
|
||||
} else {
|
||||
$('JELON__previewBox').innerHTML = '';
|
||||
}
|
||||
}
|
||||
},
|
||||
postComment: function () {
|
||||
var accessToken = localStorage.getItem(constants.ACCESS_TOKEN_KEY);
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
if (!accessToken || !userInfo) {
|
||||
alert('请先登录哦..!^_^');
|
||||
return;
|
||||
}
|
||||
var body = $('JELON__editBox').value.trim();
|
||||
body = htmlFilter(body);
|
||||
if (body) {
|
||||
JL.Renders.loading.create();
|
||||
if (JL.issueNumber !== 0) {
|
||||
JL.Requests.createComment(JL.issueNumber, {
|
||||
body: body
|
||||
}, function (res) {
|
||||
if (res.id) {
|
||||
JL.Renders.list.addOne(res);
|
||||
JL.issueComments++;
|
||||
$('JELON__editBox').value = '';
|
||||
$('JELON__previewBox').innerHTML = '';
|
||||
}
|
||||
JL.Renders.loading.remove();
|
||||
});
|
||||
} else {
|
||||
// 如果还没有创建 issue,先创建 issue
|
||||
JL.Requests.createIssue({
|
||||
title: document.title,
|
||||
body: location.href,
|
||||
labels: [ (JL.options.label || location.href) ]
|
||||
}, function (res) {
|
||||
if (res.number) {
|
||||
JL.issueNumber = res.number
|
||||
JL.Requests.createComment(JL.issueNumber, {
|
||||
body: body
|
||||
}, function (json) {
|
||||
if (res.id) {
|
||||
JL.Renders.list.addOne(json);
|
||||
JL.issueComments++;
|
||||
$('JELON__editBox').value = '';
|
||||
$('JELON__previewBox').innerHTML = '';
|
||||
}
|
||||
JL.Renders.loading.remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
like: function (commentId) {
|
||||
var oLiked = $('JELON__comment_' + commentId + '_reactions').getElementsByClassName('liked');
|
||||
var oLike = $('JELON__comment_' + commentId + '_reactions').getElementsByClassName('like')[0];
|
||||
var oNum = $('JELON__comment_' + commentId + '_reactions').getElementsByClassName('like-num')[0];
|
||||
var accessToken = localStorage.getItem(constants.ACCESS_TOKEN_KEY);
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
if (oLiked.length) {
|
||||
return false;
|
||||
} else {
|
||||
if (accessToken && userInfo) {
|
||||
JL.Requests.createReaction(commentId, { content: 'heart' }, function (res) {
|
||||
if (res.content === 'heart') {
|
||||
addClass(oLike, 'liked');
|
||||
oLike.innerHTML = '已赞';
|
||||
oNum.innerHTML = Number(oNum.innerHTML) + 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
createIssue: function () {
|
||||
JL.Renders.loading.create();
|
||||
JL.Requests.createIssue({
|
||||
title: document.title,
|
||||
body: location.href,
|
||||
labels: [ (JL.options.label || location.href) ]
|
||||
}, function (json) {
|
||||
if (json.number) {
|
||||
JL.issueNumber = json.number;
|
||||
JL.Renders.tips.update();
|
||||
}
|
||||
JL.Renders.loading.remove();
|
||||
});
|
||||
},
|
||||
reply: function (people, content) {
|
||||
var accessToken = localStorage.getItem(constants.ACCESS_TOKEN_KEY);
|
||||
var userInfo = localStorage.getItem(constants.USER_INFO_KEY);
|
||||
if (!accessToken || !userInfo) {
|
||||
return;
|
||||
}
|
||||
JL.Actions.editPreviewSwitch('edit');
|
||||
$('JELON__editBox').value = '';
|
||||
$('JELON__editBox').focus();
|
||||
$('JELON__editBox').value = [
|
||||
'@' + people + '\n',
|
||||
'> ' + content + '\n',
|
||||
'\n'
|
||||
].join('');
|
||||
$('JELON__previewBox').innerHTML = '';
|
||||
}
|
||||
};
|
||||
var createSuccessCb = function(callback){
|
||||
return function (res) {
|
||||
if (typeof res === 'string') {
|
||||
if (window.JSON) {
|
||||
res = JSON.parse(res);
|
||||
} else {
|
||||
res = eval('(' + res + ')');
|
||||
}
|
||||
}
|
||||
callback && callback(res);
|
||||
}
|
||||
}
|
||||
JL.Requests = {
|
||||
getIssueNumberByLabel: function (label, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues',
|
||||
method: 'GET',
|
||||
data: {
|
||||
labels: [ label ],
|
||||
rnd: Math.random()
|
||||
},
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
createIssue: function (data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
getCommentListByIssueNumber: function (number, data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/' + number + '/comments',
|
||||
method: 'GET',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
getReactionsByCommentId: function (id, data, callback) {
|
||||
if (typeof data === 'object' && !data.rnd) {
|
||||
data.rnd = Math.random();
|
||||
}
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/comments/' + id + '/reactions',
|
||||
method: 'GET',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
editIssue: function (number, data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.owner + '/issues/' + number,
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
markdown: function (data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/markdown',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: callback,
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
getAccessToken: function (data, callback) {
|
||||
ajax({
|
||||
// url: 'https://gh-oauth.imsun.net/',
|
||||
url: 'https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token',
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Accept': 'application/json'
|
||||
},
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
getUserInfo: function (data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/user',
|
||||
method: 'GET',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
createComment: function (number, data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/' + number + '/comments',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
},
|
||||
createReaction: function (commentId, data, callback) {
|
||||
ajax({
|
||||
url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/comments/' + commentId + '/reactions',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: createSuccessCb(callback),
|
||||
fail: callback
|
||||
});
|
||||
}
|
||||
};
|
||||
JL.Comment = function (options) {
|
||||
JL.options = options || {};
|
||||
var $container = $('comments');
|
||||
if (options.container) {
|
||||
if (typeof options.container === 'object') {
|
||||
$container = options.container;
|
||||
} else if (typeof options.container === 'string') {
|
||||
if (/^#/.test(options.container)) {
|
||||
$container = $(options.container.replace(/^#/, ''));
|
||||
} else {
|
||||
$container = $(options.container);
|
||||
}
|
||||
} else {
|
||||
$container = $('comments');
|
||||
}
|
||||
}
|
||||
$container.innerHTML = [
|
||||
this.Renders.signBar.tpl,
|
||||
this.Renders.box.tpl,
|
||||
this.Renders.tips.tpl,
|
||||
this.Renders.list.tpl
|
||||
].join('');
|
||||
JL.Actions.init();
|
||||
};
|
||||
})(JELON);
|
||||
@ -1 +0,0 @@
|
||||
(function(a,b){function h(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function i(){var a=l.elements;return typeof a=="string"?a.split(" "):a}function j(a){var b={},c=a.createElement,f=a.createDocumentFragment,g=f();a.createElement=function(a){if(!l.shivMethods)return c(a);var f;return b[a]?f=b[a].cloneNode():e.test(a)?f=(b[a]=c(a)).cloneNode():f=c(a),f.canHaveChildren&&!d.test(a)?g.appendChild(f):f},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+i().join().replace(/\w+/g,function(a){return c(a),g.createElement(a),'c("'+a+'")'})+");return n}")(l,g)}function k(a){var b;return a.documentShived?a:(l.shivCSS&&!f&&(b=!!h(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),g||(b=!j(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,f,g;(function(){var c=b.createElement("a");c.innerHTML="<xyz></xyz>",f="hidden"in c,f&&typeof injectElementWithStyles=="function"&&injectElementWithStyles("#modernizr{}",function(b){b.hidden=!0,f=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).display=="none"}),g=c.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var l={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:k};a.html5=l,k(b)})(this,document)
|
||||
@ -1,135 +0,0 @@
|
||||
/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(function() {
|
||||
return factory(root);
|
||||
});
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = factory;
|
||||
} else {
|
||||
root.echo = factory(root);
|
||||
}
|
||||
})(this, function (root) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var echo = {};
|
||||
|
||||
var callback = function () {};
|
||||
|
||||
var offset, poll, delay, useDebounce, unload;
|
||||
|
||||
var isHidden = function (element) {
|
||||
return (element.offsetParent === null);
|
||||
};
|
||||
|
||||
var inView = function (element, view) {
|
||||
if (isHidden(element)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var box = element.getBoundingClientRect();
|
||||
return (box.right >= view.l && box.bottom >= view.t && box.left <= view.r && box.top <= view.b);
|
||||
};
|
||||
|
||||
var debounceOrThrottle = function () {
|
||||
if(!useDebounce && !!poll) {
|
||||
return;
|
||||
}
|
||||
clearTimeout(poll);
|
||||
poll = setTimeout(function(){
|
||||
echo.render();
|
||||
poll = null;
|
||||
}, delay);
|
||||
};
|
||||
|
||||
echo.init = function (opts) {
|
||||
opts = opts || {};
|
||||
var offsetAll = opts.offset || 0;
|
||||
var offsetVertical = opts.offsetVertical || offsetAll;
|
||||
var offsetHorizontal = opts.offsetHorizontal || offsetAll;
|
||||
var optionToInt = function (opt, fallback) {
|
||||
return parseInt(opt || fallback, 10);
|
||||
};
|
||||
offset = {
|
||||
t: optionToInt(opts.offsetTop, offsetVertical),
|
||||
b: optionToInt(opts.offsetBottom, offsetVertical),
|
||||
l: optionToInt(opts.offsetLeft, offsetHorizontal),
|
||||
r: optionToInt(opts.offsetRight, offsetHorizontal)
|
||||
};
|
||||
delay = optionToInt(opts.throttle, 250);
|
||||
useDebounce = opts.debounce !== false;
|
||||
unload = !!opts.unload;
|
||||
callback = opts.callback || callback;
|
||||
echo.render();
|
||||
if (document.addEventListener) {
|
||||
root.addEventListener('scroll', debounceOrThrottle, false);
|
||||
root.addEventListener('load', debounceOrThrottle, false);
|
||||
} else {
|
||||
root.attachEvent('onscroll', debounceOrThrottle);
|
||||
root.attachEvent('onload', debounceOrThrottle);
|
||||
}
|
||||
};
|
||||
|
||||
echo.render = function () {
|
||||
var nodes = document.querySelectorAll('img[data-echo], [data-echo-background]');
|
||||
var length = nodes.length;
|
||||
var src, elem;
|
||||
var view = {
|
||||
l: 0 - offset.l,
|
||||
t: 0 - offset.t,
|
||||
b: (root.innerHeight || document.documentElement.clientHeight) + offset.b,
|
||||
r: (root.innerWidth || document.documentElement.clientWidth) + offset.r
|
||||
};
|
||||
for (var i = 0; i < length; i++) {
|
||||
elem = nodes[i];
|
||||
if (inView(elem, view)) {
|
||||
|
||||
if (unload) {
|
||||
elem.setAttribute('data-echo-placeholder', elem.src);
|
||||
}
|
||||
|
||||
if (elem.getAttribute('data-echo-background') !== null) {
|
||||
elem.style.backgroundImage = "url(" + elem.getAttribute('data-echo-background') + ")";
|
||||
}
|
||||
else {
|
||||
elem.src = elem.getAttribute('data-echo');
|
||||
}
|
||||
|
||||
if (!unload) {
|
||||
elem.removeAttribute('data-echo');
|
||||
elem.removeAttribute('data-echo-background');
|
||||
}
|
||||
|
||||
callback(elem, 'load');
|
||||
}
|
||||
else if (unload && !!(src = elem.getAttribute('data-echo-placeholder'))) {
|
||||
|
||||
if (elem.getAttribute('data-echo-background') !== null) {
|
||||
elem.style.backgroundImage = "url(" + src + ")";
|
||||
}
|
||||
else {
|
||||
elem.src = src;
|
||||
}
|
||||
|
||||
elem.removeAttribute('data-echo-placeholder');
|
||||
callback(elem, 'unload');
|
||||
}
|
||||
}
|
||||
if (!length) {
|
||||
echo.detach();
|
||||
}
|
||||
};
|
||||
|
||||
echo.detach = function () {
|
||||
if (document.removeEventListener) {
|
||||
root.removeEventListener('scroll', debounceOrThrottle);
|
||||
} else {
|
||||
root.detachEvent('onscroll', debounceOrThrottle);
|
||||
}
|
||||
clearTimeout(poll);
|
||||
};
|
||||
|
||||
return echo;
|
||||
|
||||
});
|
||||
@ -1,2 +0,0 @@
|
||||
/*! echo-js v1.7.3 | (c) 2016 @toddmotto | https://github.com/toddmotto/echo */
|
||||
!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):"object"==typeof exports?module.exports=e:t.echo=e(t)}(this,function(t){"use strict";var e,n,o,r,c,a={},u=function(){},d=function(t){return null===t.offsetParent},i=function(t,e){if(d(t))return!1;var n=t.getBoundingClientRect();return n.right>=e.l&&n.bottom>=e.t&&n.left<=e.r&&n.top<=e.b},l=function(){(r||!n)&&(clearTimeout(n),n=setTimeout(function(){a.render(),n=null},o))};return a.init=function(n){n=n||{};var d=n.offset||0,i=n.offsetVertical||d,f=n.offsetHorizontal||d,s=function(t,e){return parseInt(t||e,10)};e={t:s(n.offsetTop,i),b:s(n.offsetBottom,i),l:s(n.offsetLeft,f),r:s(n.offsetRight,f)},o=s(n.throttle,250),r=n.debounce!==!1,c=!!n.unload,u=n.callback||u,a.render(),document.addEventListener?(t.addEventListener("scroll",l,!1),t.addEventListener("load",l,!1)):(t.attachEvent("onscroll",l),t.attachEvent("onload",l))},a.render=function(){for(var n,o,r=document.querySelectorAll("img[data-echo], [data-echo-background]"),d=r.length,l={l:0-e.l,t:0-e.t,b:(t.innerHeight||document.documentElement.clientHeight)+e.b,r:(t.innerWidth||document.documentElement.clientWidth)+e.r},f=0;d>f;f++)o=r[f],i(o,l)?(c&&o.setAttribute("data-echo-placeholder",o.src),null!==o.getAttribute("data-echo-background")?o.style.backgroundImage="url("+o.getAttribute("data-echo-background")+")":o.src=o.getAttribute("data-echo"),c||(o.removeAttribute("data-echo"),o.removeAttribute("data-echo-background")),u(o,"load")):c&&(n=o.getAttribute("data-echo-placeholder"))&&(null!==o.getAttribute("data-echo-background")?o.style.backgroundImage="url("+n+")":o.src=n,o.removeAttribute("data-echo-placeholder"),u(o,"unload"));d||a.detach()},a.detach=function(){document.removeEventListener?t.removeEventListener("scroll",l):t.detachEvent("onscroll",l),clearTimeout(n)},a});
|
||||
@ -1,118 +0,0 @@
|
||||
define(['axios', 'vue'],function(axios, Vue){
|
||||
var articleDatas = null,
|
||||
resultDiv = null,
|
||||
initCallback = function(){};
|
||||
function executeSearch(keywords) {
|
||||
var _this = this;
|
||||
articleDatas.forEach(function(article){
|
||||
var isMatch = true,
|
||||
title = article.title.trim().toLowerCase(),
|
||||
index_title = -1, index_content = -1,
|
||||
first_occur = -1; //关键字在正文当中第一次出现的位置
|
||||
keywords.forEach(function(keyword, i) {
|
||||
index_title = title ? title.indexOf(keyword) : -1;
|
||||
index_content = article.content ? article.content.indexOf(keyword) : -1;
|
||||
if( index_title < 0 && index_content < 0 ){
|
||||
isMatch = false;
|
||||
} else {
|
||||
if (index_content < 0) {
|
||||
index_content = 0;
|
||||
}
|
||||
if (i == 0) {
|
||||
first_occur = index_content;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (isMatch) {
|
||||
var resultItem = {};
|
||||
resultItem.url = article.url;
|
||||
resultItem.title = article.title;
|
||||
if (first_occur >= 0) {
|
||||
// 截取出关键字所在的前后若干字符
|
||||
var start = first_occur - 10;
|
||||
var end = first_occur + 15;
|
||||
if(start <= 0){
|
||||
start = 0;
|
||||
end = 25;
|
||||
}
|
||||
if(end > article.content.length){
|
||||
end = article.content.length;
|
||||
}
|
||||
var matchContent = article.content.substring(start, end);
|
||||
// 高亮关键字
|
||||
keywords.forEach(function(keyword){
|
||||
var keywordReg = new RegExp(keyword, "gi");
|
||||
matchContent = matchContent.replace(keywordReg, "<strong class=\"search-keyword\">"+keyword+"</strong>");
|
||||
})
|
||||
resultItem.matchContent = matchContent
|
||||
}
|
||||
_this.searchResult.push(resultItem)
|
||||
}
|
||||
});
|
||||
}
|
||||
new Vue({
|
||||
el: "#search-box",
|
||||
data: {
|
||||
queryText: null,
|
||||
searchResult: [],
|
||||
searchIniting: false // 搜索是否正在初始化(search.xml文件很大, 异步ajax以及xml解析需要时间)
|
||||
},
|
||||
mounted: function() {
|
||||
resultDiv = document.getElementById("search-result-box");
|
||||
},
|
||||
methods : {
|
||||
searchInit: function() {
|
||||
if(articleDatas || this.searchIniting) return;
|
||||
this.searchIniting = true;
|
||||
var _this = this;
|
||||
axios({
|
||||
url: "/search.xml"
|
||||
}).then(function(response){
|
||||
var xmlDoms = null
|
||||
if(window.DOMParser) {
|
||||
var parser = new DOMParser()
|
||||
xmlDoms = parser.parseFromString(response.data, "application/xml")
|
||||
} else {
|
||||
xmlDoms = new ActiveXObject("Microsoft.XMLDOM");
|
||||
xmlDoms.async = false;
|
||||
xmlDoms.loadXML(response.data);
|
||||
}
|
||||
//找出所有文章的标题 正文 URL
|
||||
articleDatas = Array.prototype.map.call(xmlDoms.getElementsByTagName("entry"), function(item){
|
||||
return {
|
||||
title: item.getElementsByTagName("title")[0].textContent,
|
||||
content: item.getElementsByTagName("content")[0].textContent.trim().replace(/<[^>]+>/g,"").toLowerCase(),
|
||||
url: item.getElementsByTagName("url")[0].textContent,
|
||||
}
|
||||
});
|
||||
_this.searchIniting = false;
|
||||
initCallback.call(_this);
|
||||
}).catch(function(){
|
||||
_this.searchIniting = false;
|
||||
_this.searchInit();
|
||||
});
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
queryText: function(newVal, oldVal) {
|
||||
this.searchResult.length = 0;
|
||||
if(!resultDiv) return;
|
||||
if(newVal && newVal.trim()) {
|
||||
resultDiv.style.display = "block";
|
||||
} else {
|
||||
resultDiv.style.display = "none";
|
||||
return
|
||||
}
|
||||
var keywords = newVal.trim().toLowerCase().split(/[\s\-]+/);
|
||||
var _this = this;
|
||||
if(this.searchIniting) {
|
||||
initCallback = function(){
|
||||
executeSearch.call(this, keywords);
|
||||
}
|
||||
} else {
|
||||
executeSearch.call(this, keywords);
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
@ -1,97 +0,0 @@
|
||||
require.config({
|
||||
baseUrl: '/js/',
|
||||
paths: {
|
||||
echo: 'lib/echo.min',
|
||||
loadlive2d: 'lib/live2d',
|
||||
axios: 'lib/axios.min',
|
||||
bannerGirl: 'banner-girl',
|
||||
vue: 'lib/vue.min',
|
||||
polyfill: 'lib/polyfill.min'
|
||||
},
|
||||
shim: {
|
||||
loadlive2d: {
|
||||
exports: 'loadlive2d'
|
||||
}
|
||||
}
|
||||
});
|
||||
require(['polyfill', 'local-search']);
|
||||
require(['echo'],function(echo, bannerGirl){
|
||||
function deepCopy(c, p) {
|
||||
var c = c || {};
|
||||
for (var i in p) {
|
||||
if (typeof p[i] === 'object') {
|
||||
c[i] = (p[i].constructor === Array) ? [] : {};
|
||||
deepCopy(p[i], c[i]);
|
||||
} else {
|
||||
c[i] = p[i];
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
var JELON = window.JELON || {};
|
||||
JELON = deepCopy(JELON, {
|
||||
name: 'JELON',
|
||||
version: '0.0.2',
|
||||
init: function() {
|
||||
this.toggleMenu();
|
||||
this.backToTop();
|
||||
|
||||
echo.init({
|
||||
offset: 50,
|
||||
throttle: 250,
|
||||
unload: false,
|
||||
callback: function(element, op) {
|
||||
//console.log(element, 'has been', op + 'ed')
|
||||
}
|
||||
});
|
||||
},
|
||||
$: function(str) {
|
||||
return /^(\[object HTML)[a-zA-Z]*(Element\])$/.test(Object.prototype.toString.call(str)) ? str : document.getElementById(str);
|
||||
},
|
||||
toggleMenu: function() {
|
||||
var _this = this,
|
||||
$menu = _this.$(_this.name + '__menu');
|
||||
_this.$(_this.name + '__btnDropNav').onclick = function() {
|
||||
if ($menu.className.indexOf('hidden') === -1) {
|
||||
$menu.className += ' hidden';
|
||||
} else {
|
||||
$menu.className = $menu.className.replace(/\s*hidden\s*/, '');
|
||||
}
|
||||
};
|
||||
},
|
||||
backToTop: function() {
|
||||
var _this = this;
|
||||
if (typeof _this.$(_this.name + '__backToTop') === 'undefined') return;
|
||||
window.onscroll = window.onresize = function() {
|
||||
if (document.documentElement.scrollTop + document.body.scrollTop > 0) {
|
||||
_this.$(_this.name + '__backToTop').style.display = 'block';
|
||||
} else {
|
||||
_this.$(_this.name + '__backToTop').style.display = 'none';
|
||||
}
|
||||
};
|
||||
_this.$(_this.name + '__backToTop').onclick = function() {
|
||||
var Timer = setInterval(GoTop, 10);
|
||||
|
||||
function GoTop() {
|
||||
if (document.documentElement.scrollTop + document.body.scrollTop < 1) {
|
||||
clearInterval(Timer)
|
||||
} else {
|
||||
document.documentElement.scrollTop /= 1.1;
|
||||
document.body.scrollTop /= 1.1
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
/**
|
||||
* 布局初始化
|
||||
*/
|
||||
JELON.init();
|
||||
window.JELON = JELON;
|
||||
});
|
||||
if(!/Android|webOS|iPhone|iPad|BlackBerry/i.test(navigator.userAgent)) {
|
||||
// 只在PC端加载看板娘
|
||||
require(['bannerGirl'], function(bannerGirl){
|
||||
bannerGirl.init('/resource/model.json');
|
||||
});
|
||||
}
|
||||
@ -1,82 +0,0 @@
|
||||
{
|
||||
"mouseenter": [
|
||||
{
|
||||
"selector": ".content-main a[href^='http']",
|
||||
"text": ["要看看 <span style=\"color:#0099cc;\">{text}</span> 么?"]
|
||||
},
|
||||
{
|
||||
"selector": ".logo",
|
||||
"text": ["点击前往首页,想回到上一页可以使用浏览器的后退功能哦"]
|
||||
},
|
||||
{
|
||||
"selector": "#tor_show",
|
||||
"text": ["翻页比较麻烦吗,点击可以显示这篇文章的目录呢"]
|
||||
},
|
||||
{
|
||||
"selector": "#night_mode",
|
||||
"text": ["深夜时要爱护眼睛呀"]
|
||||
},
|
||||
{
|
||||
"selector": "#qrcode",
|
||||
"text": ["手机扫一下就能继续看,很方便呢"]
|
||||
},
|
||||
{
|
||||
"selector": ".com-text",
|
||||
"text": ["要吐槽些什么呢"]
|
||||
},
|
||||
{
|
||||
"selector": ".back-to-top",
|
||||
"text": ["回到开始的地方吧"]
|
||||
},
|
||||
{
|
||||
"selector": "#author",
|
||||
"text": ["该怎么称呼你呢"]
|
||||
},
|
||||
{
|
||||
"selector": "#mail",
|
||||
"text": ["留下你的邮箱,不然就是无头像人士了"]
|
||||
},
|
||||
{
|
||||
"selector": "#url",
|
||||
"text": ["你的家在哪里呢,好让我去参观参观"]
|
||||
},
|
||||
{
|
||||
"selector": "#textarea",
|
||||
"text": ["认真填写哦,垃圾评论是禁止事项"]
|
||||
},
|
||||
{
|
||||
"selector": ".OwO-logo",
|
||||
"text": ["要插入一个表情吗"]
|
||||
},
|
||||
{
|
||||
"selector": "#csubmit",
|
||||
"text": ["要提交了吗,首次评论需要审核,请耐心等待~"]
|
||||
},
|
||||
{
|
||||
"selector": ".ImageBox",
|
||||
"text": ["点击图片可以放大呢"]
|
||||
},
|
||||
{
|
||||
"selector": "#search-box",
|
||||
"text": ["找不到想看的内容?搜索看看吧"]
|
||||
},
|
||||
{
|
||||
"selector": ".page-navigator > a.prev",
|
||||
"text": ["去上一页看看吧"]
|
||||
},
|
||||
{
|
||||
"selector": ".page-navigator > a.next",
|
||||
"text": ["去下一页看看吧"]
|
||||
},
|
||||
{
|
||||
"selector": ".banner #live2d",
|
||||
"text": ["干嘛呢你,快把手拿开", "鼠…鼠标放错地方了!"]
|
||||
}
|
||||
],
|
||||
"click": [
|
||||
{
|
||||
"selector": ".banner #live2d",
|
||||
"text": ["是…是不小心碰到了吧", "萝莉控是什么呀", "你看到我的小熊了吗", "再摸的话我可要报警了!⌇●﹏●⌇", "110吗,这里有个变态一直在摸我(ó﹏ò。)"]
|
||||
}
|
||||
]
|
||||
}
|
||||