167 Commits
v1.2 ... v1.8.0

Author SHA1 Message Date
shenyu
820e492f53 1.8.0 2020-08-15 23:29:17 +08:00
shenyu
d5a8f7b105 1.7.0 2020-08-15 23:29:10 +08:00
shenyu
a1d6ea6caa 1.6.0 2020-08-15 23:29:05 +08:00
shenyu
c383089978 1.5.0 2020-08-15 23:29:01 +08:00
shenyu
d223d30789 1.4.0 2020-08-15 23:28:55 +08:00
shenyu
0d498784fe 1.3.0 2020-08-15 23:28:51 +08:00
shenyu
80091fa674 1.2.0 2020-08-15 23:28:48 +08:00
shenyu
1b1cacee23 1.1.0 2020-08-15 23:28:42 +08:00
shenyu
ca3fe89197 💄 page nav 2020-08-15 23:08:45 +08:00
shenyu
8217da81ab fix: scroll speed 2020-08-08 21:32:36 +08:00
shenyu
40071e8acc 📝 docs: multi language support 2020-08-04 21:12:32 +08:00
shenyu
bb10282d89 📝 docs: multi language support 2020-08-04 21:04:59 +08:00
shenyu
1384ea58a7 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-08-04 19:20:50 +08:00
shenyu
469943c62b fix 2020-08-04 19:20:40 +08:00
Eric Shen
f0a002fd23 Update package.json 2020-08-04 13:23:38 +08:00
shenyu
3e815c0438 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-07-05 20:52:57 +08:00
shenyu
f05527e92d 💄 fix: article fontsize 2020-07-05 20:52:25 +08:00
Eric Shen
b96c126078 Update README.md 2020-06-30 14:47:30 +08:00
shenyu
141208f47e fix: typed warning 2020-06-28 21:59:40 +08:00
shenyu
eb98909f8b docs: README.md 2020-06-13 07:52:13 +08:00
shenyu
69406768b1 fix 2020-06-13 07:45:38 +08:00
shenyu
45456e4b37 Merge branch 'master' into local
# Conflicts:
#	_config.yml
2020-06-13 07:43:39 +08:00
Eric Shen
2b0ebe976b Merge pull request #61 from MiniValine/master
MiniValine darkmode
2020-06-07 20:21:19 +08:00
MHuiG
0b41e237e0 darkmode 2020-06-07 16:49:52 +08:00
shen-yu
1f5956994a fix: _config.yml 2020-06-07 10:46:29 +08:00
Eric Shen
2f5c468007 Merge pull request #60 from MiniValine/master
MiniValine2.7.0更新配置
2020-06-07 10:41:53 +08:00
shen-yu
7cb66de22e 👷 fix: issue template 2020-06-07 10:38:04 +08:00
shen-yu
7a0d513a5b 👷 add: issue template & welcome 2020-06-07 10:33:32 +08:00
H
807060dc82 fix 2020-06-07 10:32:59 +08:00
H
c8e83e34cf Merge branch 'master' into master 2020-06-07 10:30:14 +08:00
MHuiG
dabe749770 MiniValine2.7.0更新配置 2020-06-07 10:25:24 +08:00
MHuiG
9da6ecc35d MiniValine2.7.0更新配置 2020-06-07 10:25:06 +08:00
shen-yu
3ff6f74bff fix: _config.yml 2020-06-07 10:19:54 +08:00
shen-yu
6a925ba53c 📦 update: minivaline 2020-06-07 10:10:49 +08:00
shen-yu
5c501a9db7 📦 update: minivaline 2020-06-07 10:05:53 +08:00
shen-yu
48d03030a8 📦 update: valine 2020-06-07 09:59:30 +08:00
shen-yu
15ffef6fe6 💄 fix: style 2020-06-06 10:44:34 +08:00
shenyu
16a56f6528 Merge branch 'master' into local 2020-06-03 19:43:51 +08:00
shenyu
5119a4c925 branch: local 2020-06-03 19:42:24 +08:00
沈宇
1fe6bd6ca2 📝 docs: katex support 2020-06-03 11:10:59 +08:00
shenyu
319522746e 📝 fix: README.md 2020-06-02 22:11:38 +08:00
shenyu
21f0d86f63 fix: canvas in mobile 2020-06-02 22:05:48 +08:00
shenyu
60c2930d39 fix: _config.yml 2020-06-02 20:49:24 +08:00
shenyu
fb2dbe73a2 🔥 remove: minivaline 2020-06-02 20:48:42 +08:00
shenyu
05af377fa9 📝 update: README.md 2020-06-02 20:45:17 +08:00
shenyu
1609b61336 fix: click effect 2020-06-02 20:41:10 +08:00
沈宇
da27325950 🚀 feat: canvas bg & custom mouse 2020-06-02 16:01:50 +08:00
沈宇
42bd579f19 📝 update: LICENSE 2020-06-02 10:47:32 +08:00
沈宇
ee1211d86b 📝 update: LICENSE 2020-06-02 10:37:55 +08:00
沈宇
f0adf9a62e 🚀 feat: clickBoom2 2020-06-01 18:44:02 +08:00
shenyu
c0ef5fc0ad fix: categories 2020-05-28 23:13:00 +08:00
shenyu
86cd94fc80 🚀 fix: valine 2020-05-27 20:40:52 +08:00
shen-yu
b67d410b86 🚀 update 404.html 2020-05-24 10:30:34 +08:00
shenyu
4711891b4a 🚀 feat: clickBoom 2020-05-23 06:46:58 +08:00
shenyu
9317a2d5d4 🚀 feat: clickBoom 2020-05-23 06:45:12 +08:00
shenyu
de1e586b8c Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-05-03 09:53:23 +08:00
shenyu
4f386df7ee 🎨 fix: styles 2020-05-03 09:53:04 +08:00
沈宇
0c7e535867 📝 docs: README 2020-04-28 14:44:39 +08:00
沈宇
7bf0adfd98 🎨 fix: code 2020-04-23 15:04:32 +08:00
沈宇
a0e92eb20c 📝 docs: rss 2020-04-21 14:38:15 +08:00
沈宇
46fc5df869 🎉 release: v2.1 2020-04-21 14:16:21 +08:00
沈宇
29561f6687 💄 fix: markdown style 2020-04-21 14:04:51 +08:00
shenyu
7034f76024 💄 fix: darkmode 2020-04-16 21:53:51 +08:00
shenyu
f21fbe4e2b fix: footer & languages 2020-04-15 22:17:11 +08:00
沈宇
2e211f7609 add: CDN 2020-04-15 18:10:26 +08:00
沈宇
e4218c40fa 🚀 fix: darkmode style && language 2020-04-15 16:30:10 +08:00
shenyu
c0d20c3732 💄 update: 404 style 2020-04-14 20:06:54 +08:00
shenyu
586f38c9ed feat: Copy Code 2020-04-12 21:17:46 +08:00
沈宇
84f7538acd feat: minivaline 2020-04-10 16:27:35 +08:00
沈宇
424ace4186 Merge pull request #40 from MiniValine/master
Feat: A simple and minimalist comment system.
2020-04-10 16:20:53 +08:00
MHuiG
92b24d4a2b fix 2020-04-10 16:06:54 +08:00
沈宇
40c23e99d5 🌐 language support: Vietnamese 2020-04-09 13:09:21 +08:00
沈宇
8cc982d5f5 🌐 language support: nl, no, pt 2020-04-09 11:30:04 +08:00
MH
43738d5335 Merge pull request #1 from MiniValine/imgbot
[ImgBot] Optimize images
2020-04-08 19:27:19 +08:00
MHuiG
c5c22237f0 Feat: A simple and minimalist comment system 2020-04-08 19:26:39 +08:00
ImgBotApp
9974ff6a56 [ImgBot] Optimize images
*Total -- 698.57kb -> 627.95kb (10.11%)

/logo.png -- 3.88kb -> 1.67kb (56.89%)
/source/images/ayer.png -- 3.88kb -> 1.67kb (56.89%)
/source/images/cover7.jpg -- 8.50kb -> 6.10kb (28.26%)
/source/images/alipay.jpg -- 116.75kb -> 88.95kb (23.81%)
/source/images/sponsor.jpg -- 94.75kb -> 80.73kb (14.8%)
/source/images/404.jpg -- 69.11kb -> 63.15kb (8.63%)
/source/images/cover6.jpg -- 141.00kb -> 134.25kb (4.79%)
/screenshots/hexo-theme-ayer.png -- 241.18kb -> 232.42kb (3.63%)
/source/images/ayer-side.svg -- 5.09kb -> 4.94kb (2.9%)
/source/images/ayer.svg -- 5.09kb -> 4.94kb (2.9%)
/source/images/forkme.png -- 9.33kb -> 9.13kb (2.16%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-04-08 11:06:15 +00:00
shenyu
4c16804821 🌐 language support: de, es, fr, ru, ja, ko, zh-TW 2020-04-06 15:17:17 +08:00
shenyu
cdf2bceb40 🌐 en support 2020-04-04 14:38:01 +08:00
shenyu
85fbcf5702 🐛 fix: tocboc style 2020-04-01 22:30:45 +08:00
shenyu
9ee2605a49 feat: Katex support 2020-03-30 20:27:17 +08:00
shenyu
b07d7c7ec7 🎉 release: v2.0 2020-03-30 20:01:02 +08:00
shenyu
6557b6a34c feat: clickLove 2020-03-30 19:55:19 +08:00
shenyu
6fbda2ece3 💄 404 style 2020-03-29 22:48:12 +08:00
shenyu
79b014ab4a 🚀 feat: custom layoutWidth 2020-03-29 18:18:22 +08:00
shenyu
b4f1246c53 🚀 fix: sidebar style 2020-03-25 23:41:05 +08:00
沈宇
2a080f157c Merge pull request #37 from wangwei1237/master
增加生成的网页中的lang根据config.language来定义的特性
2020-03-25 10:59:42 +08:00
Wang Wei
7ba48368df 增加生成的网页中的lang根据config.language来定义的特性 2020-03-25 10:41:27 +08:00
shenyu
16fe9782f7 🚀 fix: tocbot warning 2020-03-24 22:19:01 +08:00
shenyu
785a9f33e1 🚀 fix: warning 2020-03-24 22:09:20 +08:00
shenyu
55d5c26161 🚀 fix: tocbot warning 2020-03-24 22:03:59 +08:00
shenyu
c1cedb6104 🚀 fix: tocbot warning 2020-03-24 21:57:41 +08:00
shenyu
085292ac1d 🚀 fix: search 2020-03-24 19:53:16 +08:00
沈宇
97e79abc8d 🚀 feat: showThemeInConsole 2020-03-24 14:06:11 +08:00
沈宇
ebe1e25719 🚀 refactor: code 2020-03-24 12:51:01 +08:00
shenyu
1003d95815 🚀 feat: Dark Mode 2020-03-23 23:04:50 +08:00
沈宇
c3588e1752 feat: darkmode 2020-03-23 18:06:38 +08:00
shenyu
66a6390998 🚀 fix: pin top 2020-03-21 17:20:59 +08:00
沈宇
a9473d4d22 🚀 fix: albums display 2020-03-16 11:24:54 +08:00
shenyu
68b1022367 🐛 fix: albums display 2020-03-15 19:04:20 +08:00
沈宇
8eadb41a90 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-03-06 11:21:35 +08:00
沈宇
6b3edff55f 🐛 fix: progressBar && CDN 2020-03-06 11:20:54 +08:00
shenyu
185374380f 🐛 Update Gitalk to 1.6.2 2020-03-04 21:57:50 +08:00
shenyu
6afa47978e 🎉 v1.9 2020-03-02 20:12:01 +08:00
shenyu
718cf389ee 🔖 v1.9 2020-03-02 20:08:57 +08:00
shenyu
eaf683440a 🚀 feat: postcss 2020-03-02 19:32:14 +08:00
沈宇
bc0119d821 🚀 feat: Add Parcel 2020-03-02 13:55:29 +08:00
shenyu
196253f025 fix: music 2020-02-27 19:47:53 +08:00
沈宇
836246b4e0 feat: Music 2020-02-27 15:42:29 +08:00
沈宇
28d8716cf4 fix: icp 2020-02-27 13:55:58 +08:00
沈宇
1f6b859952 fix: beian 2020-02-27 10:21:02 +08:00
沈宇
a32496edbe feat: beian 2020-02-27 10:05:41 +08:00
shenyu
4fcc3ff32b fix: excerpt_all 2020-02-15 23:28:28 +08:00
shenyu
641abe0ae9 docs: README.md 2020-02-14 12:11:58 +08:00
shenyu
00b8d2c47a fix 2020-02-12 14:28:08 +08:00
shenyu
608766a430 fix: style 2020-02-12 14:02:20 +08:00
shenyu
71bc221675 feat: excerpt_all 2020-02-12 12:50:12 +08:00
沈宇
200450fadd Merge pull request #19 from ckyOL/master
Update Gitalk to 1.5.2 to fix bug
2020-02-11 23:16:03 +08:00
ckyOL
3fedba6204 Update Gitalk to 1.5.2 to fix bug 2020-02-11 22:06:45 +08:00
shenyu
f98e95ccf8 fix: style 2020-02-11 13:05:04 +08:00
shenyu
380a5cc4ab fix: table 2020-02-10 16:55:51 +08:00
shenyu
9fac2a8e2c fix: valine notify 2020-02-10 12:29:25 +08:00
shenyu
d1534ef60e fix: style 2020-02-09 17:17:31 +08:00
shenyu
ff240c9011 fix: highlight style 2020-02-09 13:36:33 +08:00
shenyu
c22c19547d fix: README.md 2020-02-08 23:49:40 +08:00
shenyu
eb1ecd74fa fix: style 2020-02-07 15:12:49 +08:00
shenyu
14f1f432c9 feat: Copyright 2020-02-07 12:42:33 +08:00
shenyu
ad93a588f7 feat: Add Share Platform 2020-02-06 23:14:35 +08:00
shenyu
83243b93f4 fix: typed.js warning 2020-02-05 11:27:16 +08:00
shenyu
8070697b20 fix: warning 2020-02-05 11:21:08 +08:00
shenyu
ed5e4803d1 feat: share button enable 2020-02-03 11:40:27 +08:00
shenyu
4c7e107c08 fix: category head.ejs 2020-02-02 10:59:00 +08:00
shenyu
2184d5f5ee fix: subtitle 2020-01-30 14:36:03 +08:00
shenyu
da20d7b3c9 feat: Subtitle typed animation 2020-01-30 14:14:35 +08:00
shenyu
7fcdbf8722 fix: tocbot 2020-01-29 20:36:48 +08:00
shenyu
71e1c2149d fix: style 2020-01-25 12:42:48 +08:00
shenyu
e528545051 release: v1.6 2020-01-24 13:06:25 +08:00
shenyu
3908fbe0e5 feat: valine comment verify 2020-01-24 13:02:50 +08:00
shenyu
db78e3261e fix: sidebar width 2020-01-23 14:19:50 +08:00
shenyu
8f267514b3 fix: sidebar 2020-01-23 14:13:24 +08:00
shenyu
0fb41a4ce2 fix: README.md 2020-01-23 11:30:35 +08:00
shenyu
dd35431d98 docs: images in article support click to fullscreen 2020-01-20 21:02:13 +08:00
沈宇
3d85b0926a feat: Support image display fullscreen 2020-01-20 15:09:23 +08:00
shenyu
661902f0f4 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-01-18 22:14:24 +08:00
shenyu
ef3c7271ef fix: style 2020-01-18 22:13:43 +08:00
沈宇
ad5e15c0e0 docs: fix license 2020-01-15 10:25:12 +08:00
沈宇
459860c16a docs: v1.5 2020-01-15 10:11:33 +08:00
沈宇
8c7a957f6e Create LICENSE 2020-01-15 08:35:30 +08:00
shenyu
7d408946e9 fix: docs 2020-01-15 08:25:50 +08:00
shenyu
df2f61aad0 fix: style 2020-01-15 07:57:43 +08:00
shenyu
bffec8c8d9 fix: style 2020-01-13 22:02:19 +08:00
shenyu
380d4c6501 Merge branch 'master' of https://github.com/Shen-Yu/hexo-theme-ayer 2020-01-13 21:36:53 +08:00
shenyu
8f93d6494e fix: sponsor.jpg 2020-01-13 21:36:32 +08:00
沈宇
f610f83e09 Create FUNDING.yml 2020-01-13 21:30:21 +08:00
shenyu
9dcd4aca7c feat: sponsor 2020-01-13 21:25:44 +08:00
shenyu
77ecc930bd style: Categories,Tags 2020-01-13 20:58:07 +08:00
shenyu
54216601f2 release: v1.3 2020-01-09 21:32:48 +08:00
shenyu
a38c874bb4 feat: close reward and comments in md 2020-01-09 20:26:44 +08:00
shenyu
63497f1ad2 fix:arrow jump&styles 2020-01-09 19:55:59 +08:00
shenyu
42b387c94a fix: wordcount style 2020-01-07 20:13:38 +08:00
shenyu
11a4aaacf2 feat: WordCount 2020-01-07 19:44:35 +08:00
沈宇
ca99e5de86 feat: WordCount 2020-01-07 14:05:02 +08:00
沈宇
758b378e82 fix: change anchor jump to scrollIntoView 2020-01-07 13:12:44 +08:00
沈宇
a8b0534861 Update _extend.styl 2020-01-06 13:19:29 +08:00
shenyu
246cae5164 fix: footer.ejs 2020-01-02 19:35:23 +08:00
shenyu
4e57d75cb9 fix 2019-12-31 22:59:03 +08:00
shenyu
faef444acd fix: README.md 2019-12-31 22:53:01 +08:00
shenyu
38131011fc fix: README.md 2019-12-31 22:48:55 +08:00
129 changed files with 2966 additions and 16862 deletions

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://pic.downk.cc/item/5e1c70bc2fb38b8c3c5b0a2f.png

70
.github/ISSUE_TEMPLATE/bug-report.md vendored Normal file
View File

@@ -0,0 +1,70 @@
---
name: Bug Report
about: Something isn't working as expected
title: ""
labels: Bug
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this issue: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Environment Information
### Node.js and NPM Information
<!-- Paste output from `node -v && npm -v` (粘贴 `node -v && npm -v` 输出的信息) -->
```
```
### Package dependencies Information
<!-- Paste output from `npm ls --depth 0` (粘贴 `npm ls --depth 0` 输出的信息) -->
```
```
### HTML Configuration
<!-- Paste configuration from HTML (粘贴 HTML 配置 中的内容) -->
```
```
### MiniValine Configuration
<!-- Paste configuration from MiniValine (粘贴 MiniValine 配置 中的内容) -->
```
```
## Other Information <!-- (Like Browser, System, Screenshots) -->

View File

@@ -0,0 +1,36 @@
---
name: Feature Request
about: Suggest an idea for this project
title: ""
labels: Feature Request
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this feature: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Other Information <!-- Like Browser, System, Screenshots -->

21
.github/ISSUE_TEMPLATE/other.md vendored Normal file
View File

@@ -0,0 +1,21 @@
---
name: Other
about: Not a question, feature request or bug report
title: ""
labels: ""
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Other Information <!-- Like Browser, System, Screenshots -->

70
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@@ -0,0 +1,70 @@
---
name: Question
about: I have a question for Ayer
title: ""
labels: Question
assignees: ""
---
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/Shen-Yu/hexo-theme-ayer) version of hexo-theme-ayer.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [Ayer Issues](https://github.com/Shen-Yu/hexo-theme-ayer/issues), which does not help me.
---
## Expected behavior <!-- 预期行为 -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- Links to demo site with this issue: N/A
- Links to repository or source code of the blog: N/A
## Steps to reproduce the behavior <!-- 重现步骤 -->
1. N/A
2. N/A
3. N/A
## Environment Information
### Node.js and NPM Information
<!-- Paste output from `node -v && npm -v` (粘贴 `node -v && npm -v` 输出的信息) -->
```
```
### Package dependencies Information
<!-- Paste output from `npm ls --depth 0` (粘贴 `npm ls --depth 0` 输出的信息) -->
```
```
### HTML Configuration
<!-- Paste configuration from HTML (粘贴 HTML 配置 中的内容) -->
```
```
### Ayer Configuration
<!-- Paste configuration from Ayer (粘贴 Ayer 配置 中的内容) -->
```
```
## Other Information <!-- (Like Browser, System, Screenshots) -->

12
.github/config.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# =============================================================================================== #
# Configuration for welcome - https://github.com/behaviorbot/welcome
# Comment to be posted to on first time issues
newIssueWelcomeComment: >
Thanks for opening this issue, maintainers will get back to you as soon as possible!
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: >
Thanks so much for opening your first PR here!
# Comment to be posted to on pull requests merged by a first time user
firstPRMergeComment: >
Congrats on merging your first pull request here! :tada: How awesome!

1
.gitignore vendored
View File

@@ -5,6 +5,7 @@
yarn.lock yarn.lock
package-lock.json package-lock.json
node_modules/ node_modules/
.cache
# Setting # Setting
_config.yml _config.yml

5
.postcssrc Normal file
View File

@@ -0,0 +1,5 @@
{
"plugins": {
"autoprefixer": true
}
}

37
LICENSE Normal file
View File

@@ -0,0 +1,37 @@
The Star And Thank Author License (SATA)
Copyright © 2019 Shen-Yu(shenyu@hotmail.com)
Project Url: https://github.com/Shen-Yu/hexo-theme-ayer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
And wait, the most important, you shall star/+1/like the project(s) in project url
section above first, and then thank the author(s) in Copyright section.
Here are some suggested ways:
- Email the authors a thank-you letter, and make friends with him/her/them.
- Report bugs or issues.
- Tell friends what a wonderful project this is.
- And, sure, you can just express thanks in your mind without telling the world.
Contributors of this project by forking have the option to add his/her name and
forked project url at copyright and project url sections, but shall not delete
or modify anything else in these two sections.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

131
README.md
View File

@@ -1,6 +1,6 @@
<p align="center"><a href="https://shen-yu.gitee.io" target="_blank" rel="noopener noreferrer"><img width="100" src="logo.png" alt="ayer logo"></a></p> <p align="center"><a href="https://shen-yu.gitee.io" target="_blank" rel="noopener noreferrer"><img width="100" src="logo.png" alt="ayer logo"></a></p>
<h3 align="center">一个干净且优雅的 Hexo 主题</h3> <h3 align="center">一个安静且优雅的 Hexo 主题</h3>
<p align="center"> <p align="center">
<a href="https://travis-ci.org/Shen-Yu/hexo-theme-ayer?branch=master" target="_blank" rel="noopener noreferrer"> <a href="https://travis-ci.org/Shen-Yu/hexo-theme-ayer?branch=master" target="_blank" rel="noopener noreferrer">
@@ -9,30 +9,37 @@
<a href="http://standardjs.com" target="_blank" rel="noopener noreferrer"> <a href="http://standardjs.com" target="_blank" rel="noopener noreferrer">
<img alt="js-standard-style" src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg"> <img alt="js-standard-style" src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg">
</a> </a>
<br>
<a href="https://hubble.js.org?owner=Shen-Yu&repo=hexo-theme-ayer&start"><img src="https://img.shields.io/badge/since-2019-409eff.svg" alt="Hubble"></a>
<a href="https://shen-yu.gitee.io" target="_blank" rel="noopener noreferrer">
<img alt="platform" src="https://img.shields.io/badge/platform-PC--ios--android-e68db8.svg">
</a>
<a href="https://gitter.im/hexo-theme-ayer/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge" target="_blank" rel="noopener noreferrer"> <a href="https://gitter.im/hexo-theme-ayer/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge" target="_blank" rel="noopener noreferrer">
<img alt="Gitter" src="https://badges.gitter.im/Join%20Chat.svg"> <img alt="Gitter" src="https://badges.gitter.im/Join%20Chat.svg">
</a> </a>
<br> <br>
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer"> <a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer">
<img alt="GitHub release" src="https://img.shields.io/badge/release-v1.2-blue.svg"> <img alt="GitHub tag (latest by date)" src="https://img.shields.io/github/v/tag/Shen-Yu/hexo-theme-ayer?color=blue">
</a> </a>
<img alt="language" src="https://img.shields.io/badge/language-ejs--stylus-orange.svg"> <img alt="language" src="https://img.shields.io/badge/language-ejs--stylus-green.svg">
<a href="https://hexo.io/zh-cn/" target="_blank" rel="noopener noreferrer"> <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/Shen-Yu/hexo-theme-ayer?color=%23af8ddc">
<img alt="hexo" src="https://img.shields.io/badge/hexo-%3E%3D3.0-blue.svg"> <a href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE" target="_blank" rel="noopener noreferrer"><img alt="LICENSE" src="https://img.shields.io/badge/LICENSE-SATA-efa96e">
</a> </a>
<img alt="platform" src="https://img.shields.io/badge/platform-PC--ios--android-cc2e8b.svg">
</p> </p>
--- ---
:ocean: Ayer is a clean and elegant theme for Hexo, also fast, powerful and responsive. It contains many awesome features, It's perfect for your blog, "Ayer" means "water" in Malaysian and "yesterday" in Spanish. If you have any queries or advice during the process of using, Please contact me! :ocean: Ayer is a clean and elegant theme for Hexo, also fast, powerful and responsive. It contains many awesome features, It's perfect for your blog, "Ayer" means "water" in Malaysian and "yesterday" in Spanish. If you have any queries or advice during the process of using, Please contact me! shenyu@hotmail.com
<b>收藏本主题请点右上角Star谢谢~</b> <b>收藏本主题请点右上角Star谢谢~~ </b>
<b>如果你想给主题添砖加瓦可以点右上角Fork然后给此仓库提交PR</b>
### [Preview 预览](https://shen-yu.gitee.io) ### [Preview 预览](https://shen-yu.gitee.io)
### [中文说明](https://shen-yu.gitee.io/2019/ayer/) ### [中文说明](https://shen-yu.gitee.io/2019/ayer/)
### [国内镜像](https://gitee.com/shen-yu/hexo-theme-ayer)
![Screenshot](screenshots/hexo-theme-ayer.png) ![Screenshot](screenshots/hexo-theme-ayer.png)
### Install ### Install
@@ -56,19 +63,39 @@ cd themes/ayer
git pull git pull
``` ```
### Multi Language Support
zh-CN中文简体 enEnglish zh-TW中文繁体 jaJapanese esSpanish deGerman frFrench ruRussian koKorean viVietnamese nlDutch noNorwegian ptPortuguese
English is default languge, if you want to change, modify `language` option in `_config.yml` file in your blog's root folder.
### Configuration ### Configuration
let me know if you cant find anything. let me know if you have any questions.
``` yml ``` yml
# Menu-Sidebar # Menu-Sidebar
menu: menu:
Home: / Home: /
Archives: /archives Archives: /archives
Categories: /categories
Tags: /tags
Gallery: http://shenyu-vip.lofter.com Gallery: http://shenyu-vip.lofter.com
Travel: /tags/旅行/ Travel: /tags/旅行/
About: /2019/about About: /2019/about
# Subtitle and Typing animation
# https://github.com/mattboldt/typed.js
subtitle:
enable: true
text: A clean and elegant theme
text2: It's perfect for your hexo blog
text3: Have fun! #Supports up to three lines of text
startDelay: 0
typeSpeed: 200
loop: true
backSpeed: 100
showCursor: true
# Favicon and sidebar logo # Favicon and sidebar logo
favicon: /favicon.ico favicon: /favicon.ico
logo: /images/ayer-side.svg logo: /images/ayer-side.svg
@@ -81,11 +108,19 @@ cover:
logo: /images/ayer.svg logo: /images/ayer.svg
# ProgressBar # ProgressBar
progressBar: ture progressBar: true
# Article Setting # Article Setting
# (Use this to excerpt if article is too long<!--more-->) # (Use this to excerpt if article is too long<!--more-->)
excerpt_link: Read More... excerpt_link: Read More...
excerpt_all: false
# Copy code button
copy_btn: true
# Share
share_enable: true
# If you are not in China, maybe you prefer to set:false
share_china: true
# share text # share text
share_text: Share share_text: Share
# search text # search text
@@ -100,6 +135,15 @@ nav_text:
# Catalog in article # Catalog in article
toc: true toc: true
# images in the article support click to fullscreen
image_viewer: true
# https://github.com/willin/hexo-wordcount
word_count:
enable: true
# only display in article page(not in index page)
only_article_visit: true
# Reward Setting # Reward Setting
# type0-close reward 1-only open in article which you have configured reward:true 2-open in all articles # type0-close reward 1-only open in article which you have configured reward:true 2-open in all articles
reward_type: 2 reward_type: 2
@@ -110,12 +154,37 @@ alipay: /images/alipay.jpg
# qrcode image path # qrcode image path
weixin: /images/wechat.jpg weixin: /images/wechat.jpg
# Copyright
# type0-close all 1-only display in article which you have configured copyright: true 2-all articles
copyright_type: 2
# Search # Search
# https://github.com/theme-next/hexo-generator-searchdb
search: true search: true
# RSS # RSS
# leave it empty if you dont' need
rss: /atom.xml rss: /atom.xml
# DarkMode
darkmode: true
# Canvas background style: 0-close1-moveline
canvas_bg: 0
# Custom mouse pointerreplace /images/mouse.cur
mouse:
enable: false
path: /images/mouse.cur
# Click effect: 0-close1-love2-boom3-particles
click_effect: 0
# articleWidth and sidebarWidth
layout:
article_width: 80rem
sidebar_width: 8rem
# Comment1、Valine (recommended)2、Gitalk # Comment1、Valine (recommended)2、Gitalk
# 1、Valine [A fast, simple & powerful comment system](https://github.com/xCss/Valine) # 1、Valine [A fast, simple & powerful comment system](https://github.com/xCss/Valine)
@@ -127,6 +196,7 @@ leancloud:
# Valine Setting # Valine Setting
valine: valine:
enable: true enable: true
verify: false # comment verify
avatar: mp # (https://valine.js.org/avatar.html) avatar: mp # (https://valine.js.org/avatar.html)
placeholder: Add some comments to my article~ # placeholder placeholder: Add some comments to my article~ # placeholder
@@ -144,9 +214,6 @@ github:
# (Set false if you don't need) # (Set false if you don't need)
url: https://github.com/Shen-Yu/hexo-theme-ayer url: https://github.com/Shen-Yu/hexo-theme-ayer
# fancybox(Use for gallery, set false if you don't need)
fancybox: true
# pv&uv statistics # pv&uv statistics
busuanzi: busuanzi:
enable: true enable: true
@@ -161,9 +228,16 @@ google_analytics: ''
# Baidu Analytics # Baidu Analytics
baidu_analytics: '' baidu_analytics: ''
# mathjax # Mathjax Support
mathjax: true mathjax: true
# Katex Support
# note: need change the hexo-renderernpm un hexo-renderer-marked -S && npm i hexo-renderer-markdown-it-katex -S
katex:
enable: false # true
allpost: true
copy_tex: false
# since year # since year
since: 2019 since: 2019
@@ -197,7 +271,7 @@ pageFooter: true
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file): Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
```yml ```yml
feed: feed:m
type: atom type: atom
path: atom.xml path: atom.xml
limit: 20 limit: 20
@@ -214,20 +288,22 @@ pageFooter: true
$ npm uninstall hexo-generator-index --save $ npm uninstall hexo-generator-index --save
$ npm install hexo-generator-index-pin-top --save $ npm install hexo-generator-index-pin-top --save
``` ```
### Categories
### Post poster ``` bash
hexo new page categories
```
Then paste following codes to file: /source/categories/index.md
``` md ``` md
--- ---
title: Post name title: categories
type: categories
photos: [ layout: "categories"
["img_url"],
["img_url"]
]
--- ---
``` ```
### Tags
Same as categories.
### Gallery ### Gallery
Need to write in the head of the markdown, this is not a good way to write, I hope to get a better way to write on github. Need to write in the head of the markdown, this is not a good way to write, I hope to get a better way to write on github.
@@ -256,12 +332,13 @@ Use Tocbot to parse the title tags (h1~h6) in the content and insert the directo
``` md ``` md
--- ---
toc: false no_toc: true
--- ---
``` ```
--- ---
Inspired by [Ocean](https://github.com/zhwangart/hexo-theme-ocean) <br/>
<a src="https://github.com/Shen-Yu/hexo-theme-ayer">Ayer</a> by <a href="https://github.com/Shen-Yu">Eric-Shen</a> is licensed under <a rel="license" href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE">SATA-License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Ayer</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/Shen-Yu/hexo-theme-ayer" property="cc:attributionName" rel="cc:attributionURL">Eric-Shen</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>. The basic idea is, whenever using a project using SATA license, people shall star/like/+1 that project and thank the author. Just imagine Google stared your project and send you a thank-you letter because they used your project in github!

View File

@@ -1,12 +1,26 @@
# 侧边栏菜单 # 侧边栏菜单
menu: menu:
主页: / 主页: /
目录: /archives 归档: /archives
分类: /categories
标签: /tags 标签: /tags
旅行: /tags/旅行/ 旅行: /tags/旅行/
摄影: http://shenyu-vip.lofter.com 摄影: http://shenyu-vip.lofter.com
关于我: /2019/about 关于我: /2019/about
# 站点次标题和打字动效
# https://github.com/mattboldt/typed.js
subtitle:
enable: true # 是否开启动效
text: 面朝大海,春暖花开 # 显示的文字
text2: 愿你一生努力,一生被爱 # 滚动播放,如果不需要可以留空
text3: 想要的都拥有,得不到的都释怀 # 最多支持三段文字
startDelay: 0 # 延迟时间
typeSpeed: 200 # 打字速度
loop: true # 是否循环
backSpeed: 100 # 回退速度
showCursor: true # 是否显示光标
# 网站图标和侧边栏logo # 网站图标和侧边栏logo
favicon: /favicon.ico favicon: /favicon.ico
logo: /images/ayer-side.svg logo: /images/ayer-side.svg
@@ -15,17 +29,27 @@ logo: /images/ayer-side.svg
# enable-是否启用封面path-封面背景图logo-封面logo # enable-是否启用封面path-封面背景图logo-封面logo
cover: cover:
enable: true enable: true
path: /images/cover1.jpg # images目录下附送多张美图可更换 path: /images/cover1.jpg # /source/images目录下附送多张美图可更换
logo: false #/images/ayer.svg如果不要直接设置成false logo: false #/images/ayer.svg如果不要直接设置成false
# 页面顶部进度条 # 页面顶部进度条
progressBar: ture progressBar: true
# 文章配置 # 文章配置
# 文章太长,截断按钮文字(在需要截断的行增加此标记:<!--more-->) # 文章太长,截断按钮文字(在需要截断的行增加此标记:<!--more-->)
excerpt_link: 阅读更多... excerpt_link: 阅读更多...
# 如果你嫌每篇文章手动加more标记比较麻烦又不想在首页全文显示可以把excerpt_all设置成true这样首页只会显示文章归档
excerpt_all: false
# 是否开启代码复制按钮
copy_btn: true
# 是否开启文章分享按钮
share_enable: true
# 国内的社交平台(If you are not in China, maybe you prefer to set:false)
share_china: true
# 文章分享文字 # 文章分享文字
share_text: 分享 share_text: 分享
# 分页文字 # 分页文字
nav_text: nav_text:
page_prev: 上一页 page_prev: 上一页
@@ -36,52 +60,71 @@ nav_text:
# 文章页是否显示目录 # 文章页是否显示目录
toc: true toc: true
# 文章中的图片是否支持点击放大
image_viewer: true
# https://github.com/willin/hexo-wordcount
# 是否开启字数统计(关闭请设置enable为false)
# 也可以单独在md文件里Front-matter设置`no_word_count: true`属性,来自定义关闭字数统计
word_count:
enable: true
# 只在文章详情显示(不在首页显示)
only_article_visit: true
# 打赏 # 打赏
# 打赏type设定0-关闭打赏; 1-文章对应的md文件里有reward:true属性才有打赏 2-所有文章均有打赏 # 打赏type设定0-关闭打赏; 1-文章对应的md文件里有reward:true属性才有打赏 2-所有文章均有打赏
reward_type: 2 reward_type: 2
# 打赏wording # 打赏wording
reward_wording: '请我喝杯咖啡吧~' reward_wording: "请我喝杯咖啡吧~"
# 支付宝二维码图片地址跟你设置logo的方式一样。比如/images/alipay.jpg # 支付宝二维码图片地址跟你设置logo的方式一样。比如/images/alipay.jpg
alipay: /images/alipay.jpg alipay: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/alipay.jpg
# 微信二维码图片地址 # 微信二维码图片地址
weixin: /images/wechat.jpg weixin: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/wechat.jpg
# 版权声明
# 版权声明type设定0-关闭版权声明; 1-文章对应的md文件里有copyright: true属性才有版权声明 2-所有文章均有版权声明
copyright_type: 2
# 是否启用搜索 # 是否启用搜索
# 需要安装hexo-generator-searchdb(https://github.com/theme-next/hexo-generator-searchdb)
search: true search: true
# RSS订阅(先安装hexo-generator-feed插件再去博客根目录config进行配置) # RSS订阅(先安装hexo-generator-feed插件再去博客根目录config进行配置)
# 不想显示可以直接留空
rss: /atom.xml rss: /atom.xml
# 评论1、Valine(推荐)2、Gitalk # 是否启用黑夜模式开关
darkmode: true
# 1、Valine[一款快速、简洁且高效的无后端评论系统](https://github.com/xCss/Valine) # 动态背景效果: 0-关闭1-动态线条(跟随鼠标)
# 启用Valine必须先创建leancloud应用 获取 id|key 填入即可 canvas_bg: 0
leancloud:
enable: true
app_id: #
app_key: #
# Valine配置
valine:
enable: true # 是否启用
avatar: mp # 头像样式(https://valine.js.org/avatar.html)
placeholder: 给我的文章加点评论吧~ # placeholder
# 2、Gitalk(https://github.com/gitalk/gitalk) # 自定义鼠标样式,直接替换/images/mouse.cur文件
gitalk: mouse:
enable: false # true enable: false
clientID: # GitHub Application Client ID path: /images/mouse.cur
clientSecret: # Client Secret
repo: # Repository name
owner: # GitHub ID
admin: # GitHub ID
# GitHub Ribbons(https://github.blog/2008-12-19-github-ribbons/) # 鼠标点击效果0-关闭1-爱心2-爆炸烟花3-粒子烟花
click_effect: 0
# 页面宽度自定义不建议修改可能造成布局混乱article_width文章宽度sidebar_width侧边栏宽度
layout:
article_width: 80rem
sidebar_width: 8rem
# GitHub Ribbons-封面右上角的forkme换样式直接在source/images目录下替换forkme图片
github: github:
# (关闭请设置为false) # (关闭请设置为false)
enable: true
url: https://github.com/Shen-Yu/hexo-theme-ayer url: https://github.com/Shen-Yu/hexo-theme-ayer
# fancybox(仅用于相册展示若需要可配置albums) # 网易云音乐插件
fancybox: true music:
enable: false
# 播放器尺寸类型(1小尺寸、2大尺寸)
type: 1
id: 22707008 # 网易云分享的音乐ID(更换音乐请更改此配置项)
autoPlay: true # 是否开启自动播放
# 访问量统计(不蒜子) # 访问量统计(不蒜子)
busuanzi: busuanzi:
@@ -93,15 +136,91 @@ cnzz:
url: https://s9.cnzz.com/z_stat.php?id=1278069914&web_id=1278069914 url: https://s9.cnzz.com/z_stat.php?id=1278069914&web_id=1278069914
# Google Analytics # Google Analytics
google_analytics: '' google_analytics: ""
# 百度统计 # 百度统计
baidu_analytics: '' baidu_analytics: ""
# 数学公式 # Mathjax数学公式
mathjax: false mathjax: false
# Katex数学公式(allpost设置为false时只有头部设置math:true的文章才开启)
# 需要更换hexo渲染器npm un hexo-renderer-marked -S && npm i hexo-renderer-markdown-it-katex -S
katex:
enable: false # true
allpost: true
copy_tex: false
# 网站成立年份(默认为 2019若填入年份小于当前年份则显示为 2018-2019 类似的格式) # 网站成立年份(默认为 2019若填入年份小于当前年份则显示为 2018-2019 类似的格式)
since: 2015 since: 2015
#是否显示页脚信息(建议保留,有助于本主题的推广) # 是否显示页脚信息(建议保留)
pageFooter: true pageFooter: true
#ICP备案信息尾部显示
icp:
enable: false
url: "http://www.beian.miit.gov.cn/" # 备案链接
text: "浙ICP备88888888" # 备案信息
# 评论1、Valine(推荐)2、Gitalk3、MiniValine
# 1、Valine[一款快速、简洁且高效的无后端评论系统](https://github.com/xCss/Valine)
# 启用Valine必须先创建leancloud应用 获取 id|key 填入即可
leancloud:
enable: true
app_id: #
app_key: #
# Valine配置
valine:
enable: true # 是否启用
avatar: monsterid # 头像样式(https://valine.js.org/avatar.html)
placeholder: 给我的文章加点评论吧~ # placeholder
# 2、Gitalk(https://github.com/gitalk/gitalk)
gitalk:
enable: false # true
clientID: # GitHub Application Client ID
clientSecret: # Client Secret
repo: # Repository name
owner: # GitHub ID
admin: # GitHub ID
# 3、MiniValine
# See: https://github.com/MiniValine/MiniValine
minivaline:
enable: false
mode: DesertsP # DesertsP or xCss
placeholder: Write a Comment # Comment box placeholder
math: true # Support MathJax.
md: true # Support Markdown.
enableQQ: false # Enable QQ avatar API.
NoRecordIP: false # Do not record commenter IP.
visitor: true # Article reading statistics.
maxNest: 6 # Sub-comment maximum nesting depth.
pageSize: 6 # Pagination size.
adminEmailMd5: de8a7aa53d07e6b6bceb45c64027763d # The MD5 of Admin Email to show Admin Flag.[Just Only DesertsP Style mode]
tagMeta: # The String Array of Words to show Flag.[Just Only xCss Style mode]
- 管理员
- 小伙伴
- 访客
master: # The MD5 String Array of master Email to show master Flag.[Just Only xCss Style mode]
- de8a7aa53d07e6b6bceb45c64027763d
friends: # The MD5 String Array of friends Email to show friends Flag.[Just Only xCss Style mode]
- b5bd5d836c7a0091aa8473e79ed4c25e
- adb7d1cd192658a55c0ad22a3309cecf
- 3ce1e6c77b4910f1871106cb30dc62b0
- cfce8dc43725cc14ffcd9fb4892d5bfc
# MiniValine's display language depends on user's browser or system environment
# If you want everyone visiting your site to see a uniform language, you can set a force language value
# Available values: en | zh-CN | (and many more)
# More i18n info: https://github.com/MiniValine/minivaline-i18n
lang:
# Expression Url.
# https://github.com/MiniValine/MiniValine/blob/master/.github/FAQ.md#how-to-customize-emoticons
emoticonUrl:
- https://cdn.jsdelivr.net/npm/alus@latest
- https://cdn.jsdelivr.net/gh/MiniValine/qq@latest
- https://cdn.jsdelivr.net/gh/MiniValine/Bilibilis@latest
- https://cdn.jsdelivr.net/gh/MiniValine/tieba@latest
- https://cdn.jsdelivr.net/gh/MiniValine/twemoji@latest
- https://cdn.jsdelivr.net/gh/MiniValine/weibo@latest

View File

@@ -13,7 +13,19 @@ recent_posts: letzter Beitrag
newer: Neuer newer: Neuer
older: Älter older: Älter
share: Teilen share: Teilen
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Kategorie category: Kategorie
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: Wortzahl
read_time: Lesezeit
minutes: Minuten
reward: Belohnung
sticky: Oben
copyright_title: Copyright-Hinweis
copyright_content: Sofern nicht anders angegeben, liegt das Urheberrecht aller Artikel in diesem Blog beim Autor. Nachdruck bitte Quelle angeben!

View File

@@ -13,7 +13,19 @@ recent_posts: Recent Posts
newer: Newer newer: Newer
older: Older older: Older
share: Share share: Share
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Category category: Category
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: Word count
read_time: Reading time
minutes: min
reward: Donate
sticky: Sticky
copyright_title: Copyright
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

31
languages/en.yml Normal file
View File

@@ -0,0 +1,31 @@
categories: Categories
search: Search
tags: Tags
tagcloud: Tag Cloud
tweets: Tweets
prev: Prev
next: Next
comment: Comments
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Recent Posts
newer: Newer
older: Older
share: Share
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: Category
tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: Word count
read_time: Reading time
minutes: min
reward: Donate
sticky: Sticky
copyright_title: Copyright
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

View File

@@ -13,7 +13,19 @@ recent_posts: Posts recientes
newer: Nuevo newer: Nuevo
older: Viejo older: Viejo
share: Compartir share: Compartir
powered_by: Construido por powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS rss_feed: RSS
category: Categoría category: Categoría
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: El recuento de palabras
read_time: Tiempo de lectura
minutes: minutos
reward: Recompensa
sticky: Arriba
copyright_title: Derechos de autor
copyright_content: Los derechos de autor son propiedad del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.

View File

@@ -13,7 +13,19 @@ recent_posts: Articles récents
newer: Récent newer: Récent
older: Ancien older: Ancien
share: Partager share: Partager
powered_by: Propulsé par powered_by: Powered by %s
theme: Theme - %s
rss_feed: Flux RSS rss_feed: Flux RSS
category: Catégorie category: Catégorie
tag: Mot-clé tag: Mot-clé
site_visitors: Visitors
page_views: Views
post:
word_count: Nombre de mots
read_time: Temps de lecture
minutes: min
reward: Récompense
sticky: Haut
copyright_title: Avis de copyright
copyright_content: Le droit d'auteur appartient à l'auteur. Pour les réimpressions commerciales, veuillez contacter l'auteur pour autorisation. Pour les réimpressions non commerciales, veuillez indiquer la source.

View File

@@ -13,7 +13,19 @@ recent_posts: 最近の投稿
newer: 次の記事 newer: 次の記事
older: 前の記事 older: 前の記事
share: 共有 share: 共有
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSSフィード rss_feed: RSSフィード
category: カテゴリ category: カテゴリ
tag: タグ tag: タグ
site_visitors: Visitors
page_views: Views
post:
word_count: 単語数
read_time: 読書の時間
minutes:
reward: 報酬
sticky: 上へ
copyright_title: 著作権表示
copyright_content: 著作権は著者が所有しています。商業版の複製については、承認について著者に連絡してください。非商業版の複製については、出典を明記してください。

View File

@@ -13,7 +13,19 @@ recent_posts: 최근 포스트
newer: 최신 newer: 최신
older: 이전 older: 이전
share: 공유 share: 공유
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: 카테고리 category: 카테고리
tag: 태그 tag: 태그
site_visitors: Visitors
page_views: Views
post:
word_count: 단어 수
read_time: 독서 시간
minutes:
reward: 보상
sticky:
copyright_title: 저작권 고지
copyright_content: 저작권은 저자가 소유합니다. 상업용 재 인쇄의 경우 승인을 위해 저자에게 문의하십시오. 비상업적 재 인쇄의 경우 출처를 명시하십시오.

View File

@@ -1,4 +1,3 @@
categories: Categorieën categories: Categorieën
search: Zoeken search: Zoeken
tags: Labels tags: Labels
@@ -14,7 +13,19 @@ recent_posts: Recente berichten
newer: Nieuwer newer: Nieuwer
older: Ouder older: Ouder
share: Delen share: Delen
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Categorie category: Categorie
tag: Label tag: Label
site_visitors: Visitors
page_views: Views
post:
word_count: Aantal woorden in artikel
read_time: Leestijd
minutes: min
reward: Doneer
sticky: Sticky
copyright_title: Copyright melding
copyright_content: Copyright is eigendom van de auteur. Neem voor commerciële herdrukken contact op met de auteur voor autorisatie. Geef de bron aan voor niet-commerciële herdrukken.

View File

@@ -13,7 +13,19 @@ recent_posts: Siste innlegg
newer: Newer newer: Newer
older: Older older: Older
share: Share share: Share
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Category category: Category
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: Ordtelling
read_time: Lesetid
minutes: min
reward: Donere
sticky: Sticky
copyright_title: Opphavsrett
copyright_content: Opphavsrett eies av forfatteren. For kommersielle opptrykk, vennligst kontakt forfatteren for godkjenning. For ikke-kommersiell uttrykk, vennligst oppgi kilden.

View File

@@ -13,7 +13,19 @@ recent_posts: Postagens Recentes
newer: Mais Recente newer: Mais Recente
older: Mais Antigo older: Mais Antigo
share: Compartilhar share: Compartilhar
powered_by: Desenvolvido por powered_by: Powered by %s
theme: Theme - %s
rss_feed: Feed RSS rss_feed: Feed RSS
category: Categoria category: Categoria
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: Word count
read_time: Reading time
minutes: min
reward: Donate
sticky: Sticky
copyright_title: direito autoral
copyright_content: Os direitos autorais são de propriedade do autor. Para reimpressões comerciais, entre em contato com o autor para obter autorização. Para reimpressões não comerciais, indique a fonte.

View File

@@ -13,7 +13,19 @@ recent_posts: Недавние записи
newer: Следующий newer: Следующий
older: Предыдущий older: Предыдущий
share: Поделиться share: Поделиться
powered_by: Создано с помощью powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS-каналы rss_feed: RSS-каналы
category: Категория category: Категория
tag: Метка tag: Метка
site_visitors: Visitors
page_views: Views
post:
word_count: Количество слов
read_time: Время чтения
minutes: минут
reward: вознаграждение
sticky: липкий
copyright_title: Авторские права
copyright_content: Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.

31
languages/vi.yml Normal file
View File

@@ -0,0 +1,31 @@
categories: Thể loại
search: Tìm Kiếm
tags: thẻ
tagcloud: thẻ đám mây
tweets: Tweets
prev: trước
next: kế tiếp
comment: bình luận
archive_a: Archives
archive_b: "Archives: %s"
page: Page %d
recent_posts: Bài viết gần đây
newer: mới hơn
older: lớn hơn
share: chia sẻ
powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed
category: Thể loại
tag: thẻ
site_visitors: Visitors
page_views: Views
post:
word_count: Đếm từ
read_time: Thời gian đọc
minutes: min
reward: tặng
sticky: dính
copyright_title: Bản quyền
copyright_content: Bản quyền thuộc sở hữu của tác giả. Đối với tái bản thương mại, xin vui lòng liên hệ với tác giả cho phép. Đối với tái bản phi thương mại, xin vui lòng cho biết nguồn.

View File

@@ -13,7 +13,19 @@ recent_posts: 最新文章
newer: Newer newer: Newer
older: Older older: Older
share: 分享 share: 分享
powered_by: Powered by powered_by: 由 %s 强力驱动
theme: 主题 - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Category category: Category
tag: Tag tag: Tag
site_visitors: 访问人数
page_views: 浏览次数
post:
word_count: 字数统计
read_time: 阅读时长
minutes: 分钟
reward: 打赏
sticky: 置顶
copyright_title: 版权声明
copyright_content: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

View File

@@ -13,7 +13,19 @@ recent_posts: 最新文章
newer: Newer newer: Newer
older: Older older: Older
share: Share share: Share
powered_by: Powered by powered_by: Powered by %s
theme: Theme - %s
rss_feed: RSS Feed rss_feed: RSS Feed
category: Category category: Category
tag: Tag tag: Tag
site_visitors: Visitors
page_views: Views
post:
word_count: 字數統計
read_time: 閱讀時長
minutes: 分鐘
reward: 打賞
sticky: 置頂
copyright_title: 版權聲明
copyright_content: 本博客所有文章除特別聲明外,著作權歸作者所有。轉載請註明出處!

View File

@@ -1,43 +1,66 @@
<%- js('/js/jquery-2.0.3.min') %> <%- js('/js/jquery-2.0.3.min') %>
<%- js('/js/jquery.justifiedGallery.min') %>
<%- js('/js/lazyload.min') %> <%- js('/js/lazyload.min') %>
<%- js('/js/busuanzi-2.3.pure.min') %> <!-- Tocbot -->
<% if (theme.fancybox){ %> <% if (theme.toc && is_post() && !page.no_toc){ %>
<%- js('fancybox/jquery.fancybox.min') %>
<% } %>
<% if (theme.toc && is_post()){ %>
<%- js('/js/tocbot.min') %> <%- js('/js/tocbot.min') %>
<script> <script>
// Tocbot_v4.7.0 http://tscanlin.github.io/tocbot/
tocbot.init({ tocbot.init({
tocSelector: '.tocbot', tocSelector: '.tocbot',
contentSelector: '.article-entry', contentSelector: '.article-entry',
headingSelector: 'h1, h2, h3, h4, h5, h6', headingSelector: 'h1, h2, h3, h4, h5, h6',
hasInnerContainers: true, hasInnerContainers: true,
scrollSmooth: true, scrollSmooth: true,
scrollContainer: 'main',
positionFixedSelector: '.tocbot', positionFixedSelector: '.tocbot',
positionFixedClass: 'is-position-fixed', positionFixedClass: 'is-position-fixed',
fixedSidebarOffset: 'auto', fixedSidebarOffset: 'auto'
}); });
</script> </script>
<% } %> <% } %>
<script>
var ayerConfig = {
mathjax: <%=theme.mathjax %>
}
</script>
<%- js('js/ayer') %>
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
<script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js"></script>
<%- js('dist/main') %>
<!-- ImageViewer -->
<% if (theme.image_viewer){ %>
<%- partial('viewer') %>
<% } %>
<!-- MathJax -->
<% if (theme.mathjax){ %> <% if (theme.mathjax){ %>
<%- partial('mathjax') %> <%- partial('mathjax') %>
<script>
var ayerConfig = {
mathjax: true
}
</script>
<% } %>
<!-- Katex -->
<% if (theme.katex.enable){ %>
<%- partial('katex') %>
<% } %>
<!-- busuanzi -->
<% if (theme.busuanzi && theme.busuanzi.enable){ %>
<%- js('/js/busuanzi-2.3.pure.min') %>
<% } %>
<!-- ClickLove -->
<% if (theme.click_effect===1){ %>
<%- js('/js/clickLove') %>
<% } %>
<!-- ClickBoom1 -->
<% if (theme.click_effect===2){ %>
<script src="https://cdn.jsdelivr.net/npm/animejs@latest/anime.min.js"></script>
<%- js('/js/clickBoom1') %>
<% } %>
<!-- ClickBoom2 -->
<% if (theme.click_effect===3){ %>
<%- js('/js/clickBoom2') %>
<% } %>
<!-- CodeCopy -->
<% if (theme.copy_btn == true) { %>
<%- css('/css/clipboard') %>
<%- partial('post/clipboard') %>
<% } %>
<!-- CanvasBackground -->
<% if (theme.canvas_bg == 1) { %>
<%- js('/js/dz') %>
<% } %> <% } %>
<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>

View File

@@ -9,8 +9,9 @@
else title = __('archive_a'); else title = __('archive_a');
} }
%> %>
<% if (pagination !== 2){ %>
<h1 class="page-type-title"><%- title %></h1> <h1 class="page-type-title"><%- title %></h1>
<% } %>
<% if (pagination == 2){ %> <% if (pagination == 2){ %>
<% page.posts.each(function(post){ %> <% page.posts.each(function(post){ %>
<%- partial('article', {post: post, index: true}) %> <%- partial('article', {post: post, index: true}) %>

View File

@@ -1,64 +1,67 @@
<article id="<%= post.layout %>-<%= post.slug %>" class="article article-type-<%= post.layout %>" itemscope <article
itemprop="blogPost" data-scroll-reveal> id="<%= post.layout %>-<%= post.slug %>"
class="article article-type-<%= post.layout %>"
itemscope
itemprop="blogPost"
data-scroll-reveal
>
<div class="article-inner"> <div class="article-inner">
<% if (post.link || post.title){ %> <% if (post.link || post.title){ %>
<header class="article-header"> <header class="article-header">
<%- partial('post/title', {class_name: 'article-title'}) %> <%- partial('post/title', {class_name: 'article-title'}) %>
</header> </header>
<% } %> <% } %> <% if (index || is_post()) { %>
<% if (index || is_post()) { %>
<div class="article-meta"> <div class="article-meta">
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %> <%- partial('post/date', {class_name: 'article-date', date_format: null})
<%- partial('post/category') %> %> <%- partial('post/category') %> <% if(theme.word_count &&
theme.word_count.enable && !post.no_word_count){%> <%-
partial('post/word') %> <% } %>
</div> </div>
<% } %> <% } %> <% if (theme.toc && is_post()){ %> <%- partial('post/tocbot') %> <%
} %> <% if (theme.excerpt_all&&index){ %> <% }else{ %>
<% if (theme.toc && is_post()){ %>
<%- partial('post/tocbot') %>
<% } %>
<div class="article-entry" itemprop="articleBody"> <div class="article-entry" itemprop="articleBody">
<%- partial('post/justifiedGallery') %> <%- partial('post/justifiedGallery') %> <%- partial('post/gallery') %> <%
<%- partial('post/gallery') %> if (post.excerpt && index){ %> <%- post.excerpt %> <% if
<% if (post.excerpt && index){ %> (theme.excerpt_link){ %>
<%- post.excerpt %> <a class="article-more-link" href="<%- url_for(post.path) %>"
<% if (theme.excerpt_link){ %> ><%= theme.excerpt_link %></a
<a class="article-more-link" href="<%- url_for(post.path) %>"><%= theme.excerpt_link %></a> >
<% } %> <% } %> <% } else { %> <%- post.content %> <% } %>
<% } else { %> <!-- reward -->
<%- post.content %> <% if ((theme.reward_type === 2 || (theme.reward_type === 1 &&
<% } %> post.reward)) && !index && !post.no_reward){ %>
<!-- 打赏 --> <div id="reword-out">
<% if ((theme.reward_type === 2 || (theme.reward_type === 1 && post.reward)) && !index){ %>
<div id="reward-btn"> <div id="reward-btn">
打赏 <%= __('post.reward') %>
</div>
</div> </div>
<% } %> <% } %>
</div> </div>
<% } %>
<!-- copyright -->
<% if (((theme.copyright_type === 2) || (theme.copyright_type === 1 &&
post.copyright)) && !index){ %>
<div class="declare">
<ul class="post-copyright">
<li>
<i class="ri-copyright-line"></i>
<strong><%= __('post.copyright_title') %> </strong>
<%= __('post.copyright_content') %>
</li>
</ul>
</div>
<% } %>
<footer class="article-footer"> <footer class="article-footer">
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>" <% if (!index && theme.share_enable){ %> <%- partial('post/share') %> <% }
class="article-share-link"><%- theme.share_text %></a> %> <%- partial('post/tag') %>
<%- partial('post/tag') %>
</footer> </footer>
</div> </div>
<% if (!index){ %> <% if (!index){ %> <%- partial('post/nav') %> <% } %> <% if (theme.valine &&
<%- partial('post/nav') %> theme.valine.enable && !post.no_valine){ %> <%- partial('post/valine', { key:
<% } %> post.slug, title: post.title, url: config.url+url_for(post.path) }) %> <% } %>
<% if (is_post()) { %> <%- partial('post/gitalk') %> <% } %> <% if
<% if (theme.valine && theme.valine.enable){ %> (theme.minivaline && theme.minivaline.enable && !post.no_minivaline){ %> <%-
<%- partial('post/valine', { partial('post/minivaline') %> <% } %>
key: post.slug,
title: post.title,
url: config.url+url_for(post.path)
}) %>
<% } %>
<% if (is_post()) { %>
<%- partial('post/gitalk') %>
<% } %>
</article> </article>

View File

@@ -1,6 +1,6 @@
<% if (theme.cover.enable) { %> <% if (theme.cover.enable) { %>
<section class="cover"> <section class="cover">
<% if (theme.github && theme.github.url){ %> <% if (theme.github.enable && theme.github.url){ %>
<%# "GitHub Ribbons" %> <%# "GitHub Ribbons" %>
<a class="forkMe" href="<%=theme.github.url%>" <a class="forkMe" href="<%=theme.github.url%>"
target="_blank"><img width="149" height="149" src="<%- url_for('images/forkme.png') %>" target="_blank"><img width="149" height="149" src="<%- url_for('images/forkme.png') %>"
@@ -12,7 +12,13 @@
</div> </div>
<div class="cover-inner text-center text-white"> <div class="cover-inner text-center text-white">
<h1><a href="<%- url_for() %>"><%= config.title %></a></h1> <h1><a href="<%- url_for() %>"><%= config.title %></a></h1>
<h2><%= config.subtitle %></h2> <div id="subtitle-box">
<% if (theme.subtitle.enable) { %>
<span id="subtitle"></span>
<% }else{ %>
<span id="subtitle"><%= theme.subtitle.text %></span>
<% } %>
</div>
<div> <div>
<% if (theme.cover.logo) { %> <% if (theme.cover.logo) { %>
<img <img
@@ -25,7 +31,29 @@
</div> </div>
</div> </div>
<div class="cover-learn-more"> <div class="cover-learn-more">
<a href="#main" class="anchor"><i class="ri-arrow-down-line"></i></a> <a href="javascript:void(0)" class="anchor"><i class="ri-arrow-down-line"></i></a>
</div> </div>
</section> </section>
<% } %> <% } %>
<% if (theme.subtitle.enable){ %>
<script src="https://cdn.jsdelivr.net/npm/typed.js@2.0.11/lib/typed.min.js"></script>
<% } %>
<!-- Subtitle -->
<% if (theme.subtitle.enable){ %>
<script>
try {
var typed = new Typed("#subtitle", {
strings: ['<%= theme.subtitle.text %>', '<%= theme.subtitle.text2 %>', '<%= theme.subtitle.text3 %>'],
startDelay: <%= theme.subtitle.startDelay %>,
typeSpeed: <%= theme.subtitle.typeSpeed %>,
loop: <%= theme.subtitle.loop %>,
backSpeed: <%= theme.subtitle.backSpeed %>,
showCursor: <%= theme.subtitle.showCursor %>
});
} catch (err) {
console.log(err)
}
</script>
<% } %>

View File

@@ -1,27 +1,39 @@
<footer class="footer"> <footer class="footer">
<div class="outer"> <div class="outer">
<ul class="list-inline"> <ul>
<li> <li>
&copy; Copyrights &copy;
<% if (theme.since && !isNaN(theme.since) && theme.since < date(new Date(), 'YYYY')) { %><%- theme.since%>-<% } %><%= date(new Date(), 'YYYY') %> <% if (theme.since && !isNaN(theme.since) && theme.since < date(new Date(), 'YYYY')) { %><%- theme.since%>-<% } %><%= date(new Date(), 'YYYY') %>
<%= config.author || config.title %> <i class="ri-heart-fill heart_icon"></i> <%= config.author || config.title %>
</li> </li>
</ul>
<ul>
<li> <li>
<% if (theme.pageFooter){ %> <% if (theme.pageFooter){ %>
Power by
<% var hexoLink = '<a href="https://hexo.io" target="_blank">Hexo</a>'; %> <% var hexoLink = '<a href="https://hexo.io" target="_blank">Hexo</a>'; %>
<% var themeLink = '<a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>'; %> <% var themeLink = '<a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
<%- hexoLink %> Theme <%- themeLink %> <%- __('powered_by', hexoLink) %>
<span class="division">|</span>
<%- __('theme', themeLink) %>
<% } %> <% } %>
</li> </li>
</ul> </ul>
<ul class="list-inline"> <ul>
<li> <li>
<% if (theme.busuanzi && theme.busuanzi.enable){ %> <% if (theme.busuanzi && theme.busuanzi.enable){ %>
<%# "不蒜子统计" %> <%# "不蒜子统计" %>
<%- partial('post/busuanzi') %> <%- partial('post/busuanzi') %>
<% } %> <% } %>
</li> </li>
</ul>
<ul>
<% if (theme.icp&&theme.icp.enable){ %>
<li>
<a href="<%= theme.icp.url %>" target="_black"><%= theme.icp.text %></a>
</li>
<% } %>
</ul>
<ul>
<li> <li>
<!-- cnzz统计 --> <!-- cnzz统计 -->
<% if (theme.cnzz&&theme.cnzz.enable){ %> <% if (theme.cnzz&&theme.cnzz.enable){ %>

View File

@@ -1,12 +1,17 @@
<!DOCTYPE html> <!DOCTYPE html>
<% if (config.language){ %>
<html lang="<%= config.language %>">
<% } else { %>
<html lang="en"> <html lang="en">
<% }%>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<% var title = page.title; if (is_archive()) { title = __('archive_a'); if <% var title = page.title; if (is_archive()) { title = __('archive_a'); if
(is_month()) { title += ': ' + page.year + '/' + page.month; } else if (is_month()) { title += ': ' + page.year + '/' + page.month; } else if
(is_year()) { title += ': ' + page.year; } } else if (is_category()) { title (is_year()) { title += ': ' + page.year; } } else if (is_category()) { title
= __('categories.ejs') + ': ' + page.categories; } else if (is_tag()) { = page.category; } else if (is_tag()) {
title = __('tag') + ': ' + page.tag; } %> <% if (page.keywords){ %> title = __('tag') + ': ' + page.tag; } %> <% if (page.keywords){ %>
<meta name="keywords" content="<%= page.keywords %>,<%= config.keywords %>" /> <meta name="keywords" content="<%= page.keywords %>,<%= config.keywords %>" />
<% } else if (config.keywords){ %> <% } else if (config.keywords){ %>
@@ -18,14 +23,17 @@
<% } %> <% } %>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title> <title>
<% if (title){ %><%= title %> | <% } %> <%= config.title %> <% if (title){ %><%= title %> | <% } %> <%= config.description %>
</title> </title>
<% if (theme.favicon){ %> <% if (theme.favicon){ %>
<link rel="shortcut icon" href="<%- theme.favicon %>" /> <link rel="shortcut icon" href="<%- theme.favicon %>" />
<% } %> <% } %>
<%- css('css/style') %> <%- css('dist/main') %>
<%- js('/js/pace.min.js') %> <%- css('https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/css/remixicon.min') %>
<%- css('css/custom') %>
<% if (theme.progressBar){ %>
<%- js('https://cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min') %>
<% } %>
<%- partial('google-analytics') %> <%- partial('google-analytics') %>
<%- partial('baidu-analytics') %> <%- partial('baidu-analytics') %>
</head> </head>

11
layout/_partial/katex.ejs Normal file
View File

@@ -0,0 +1,11 @@
<% if ( theme.katex.enable ) { %>
<% if( theme.katex.allpost || page.math ) { %>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css">
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js"></script>
<% if ( theme.katex.copy_tex ) { %>
<script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.css">
<% } %>
<% } %>
<% } %>

16
layout/_partial/music.ejs Normal file
View File

@@ -0,0 +1,16 @@
<div id="music">
<%# "bottom:120px; left:auto;position:fixed; width:85%" %>
<% var defaultHeight = theme.music.type == 1 ? '32' : '66'; %>
<% var defaultIframeHeight = theme.music.type == 1 ? '52' : '86'; %>
<iframe frameborder="no" border="1" marginwidth="0" marginheight="0" width="200" height="<%=defaultIframeHeight%>"
src="//music.163.com/outchain/player?type=2&id=<%=theme.music.id||22707008%>&auto=<%=theme.music.autoPlay?1:0%>&height=<%=defaultHeight%>"></iframe>
</div>
<style>
#music {
position: fixed;
right: 15px;
bottom: 0;
z-index: 998;
}
</style>

View File

@@ -4,9 +4,8 @@
<% post.albums.forEach(function(photo){ %> <% post.albums.forEach(function(photo){ %>
<li class="article-albums-item" data-scroll-reveal> <li class="article-albums-item" data-scroll-reveal>
<a class="article-albums-img fancybox" data-fancybox="images" data-caption="<%- photo[1] %>" href="<%- url_for(photo[0]) %>" rel="gallery_<%= post._id %>" title="<%- photo[1] %>"> <img class="lazy" data-original="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>"
<img class="lazy" data-original="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>"> style="cursor: pointer;">
</a>
<% if (photo && photo.length > 1){ %> <% if (photo && photo.length > 1){ %>
<span class="article-albums-caption"> <%- photo[1] %> </span> <span class="article-albums-caption"> <%- photo[1] %> </span>
<% } %> <% } %>

View File

@@ -1,4 +1,5 @@
<ul class="list-inline"> <span>
<li>PV:<span id="busuanzi_value_page_pv"></span></li> <span><i class="ri-user-3-fill"></i><%- __('site_visitors') %>:<span id="busuanzi_value_site_uv"></span></s>
<li>UV:<span id="busuanzi_value_site_uv"></span></li> <span class="division">|</span>
</ul> <span><i class="ri-eye-fill"></i><%- __('page_views') %>:<span id="busuanzi_value_page_pv"></span></span>
</span>

View File

@@ -0,0 +1,54 @@
<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
<script>
function wait(callback, seconds) {
var timelag = null;
timelag = window.setTimeout(callback, seconds);
}
!function (e, t, a) {
var initCopyCode = function(){
var copyHtml = '';
copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
copyHtml += '</button>';
$(".highlight .code pre").before(copyHtml);
$(".article pre code").before(copyHtml);
var clipboard = new ClipboardJS('.btn-copy', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
clipboard.on('success', function(e) {
let $btn = $(e.trigger);
$btn.addClass('copied');
let $icon = $($btn.find('i'));
$icon.removeClass('ri-file-copy-2-line');
$icon.addClass('ri-checkbox-circle-line');
let $span = $($btn.find('span'));
$span[0].innerText = 'COPIED';
wait(function () { // 等待两秒钟后恢复
$icon.removeClass('ri-checkbox-circle-line');
$icon.addClass('ri-file-copy-2-line');
$span[0].innerText = 'COPY';
}, 2000);
});
clipboard.on('error', function(e) {
e.clearSelection();
let $btn = $(e.trigger);
$btn.addClass('copy-failed');
let $icon = $($btn.find('i'));
$icon.removeClass('ri-file-copy-2-line');
$icon.addClass('ri-time-line');
let $span = $($btn.find('span'));
$span[0].innerText = 'COPY FAILED';
wait(function () { // 等待两秒钟后恢复
$icon.removeClass('ri-time-line');
$icon.addClass('ri-file-copy-2-line');
$span[0].innerText = 'COPY';
}, 2000);
});
}
initCopyCode();
}(window, document);
</script>

View File

@@ -1,7 +1,7 @@
<% if (theme.gitalk.enable) { %> <% if (theme.gitalk.enable) { %>
<div class="gitalk" id="gitalk-container"></div> <div class="gitalk" id="gitalk-container"></div>
<%- css('https://cdn.jsdelivr.net/npm/gitalk@1.5.0/dist/gitalk.css') %> <%- css('https://cdn.jsdelivr.net/npm/gitalk@1.6.2/dist/gitalk.css') %>
<%- js('https://cdn.jsdelivr.net/npm/gitalk@1.5.0/dist/gitalk.min.js') %> <%- js('https://cdn.jsdelivr.net/npm/gitalk@1.6.2/dist/gitalk.min.js') %>
<%- js('https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js') %> <%- js('https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js') %>
<script type="text/javascript"> <script type="text/javascript">
var gitalk = new Gitalk({ var gitalk = new Gitalk({

View File

@@ -2,11 +2,8 @@
<div class="justified-gallery" id="gallery"> <div class="justified-gallery" id="gallery">
<% post.albums.forEach(function(photo){ %> <% post.albums.forEach(function(photo){ %>
<div> <div>
<a class="fancybox" data-fancybox="images" data-caption="<%- photo[1] %>" href="<%- url_for(photo[0]) %>" rel="gallery_<%= post._id %>" title="<%- photo[1] %>"> <img src="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>" style="cursor: pointer;">
<img src="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>">
</a>
</div> </div>
<% }) %> <% }) %>
</div> </div>
<% } %> <% } %>

View File

@@ -0,0 +1,88 @@
<% if (!index && theme.leancloud && theme.leancloud.enable){ %>
<!-- minivaline评论 -->
<div id="mvcomments-box">
<div id="mvcomments"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/minivaline@2/dist/MiniValine.min.js"></script>
<script>
new MiniValine({
el: '#mvcomments',
appId: '<%- theme.leancloud.app_id %>',
appKey: '<%- theme.leancloud.app_key %>',
mode: '<%- theme.minivaline.mode %>',
placeholder: '<%- theme.minivaline.placeholder %>',
pathname: window.location.pathname,
lang: '<%- theme.minivaline.lang %>',
adminEmailMd5: '<%- theme.minivaline.adminEmailMd5 %>',
tagMeta: <%- '["' + theme.minivaline.tagMeta.join('", "') + '"]' %>,
master: <%- '["' + theme.minivaline.master.join('", "') + '"]' %>,
friends: <%- '["' + theme.minivaline.friends.join('", "') + '"]' %>,
math: <%- theme.minivaline.math %>,
md: <%- theme.minivaline.md %>,
enableQQ: <%- theme.minivaline.enableQQ %>,
NoRecordIP: <%- theme.minivaline.NoRecordIP %>,
visitor: <%- theme.minivaline.visitor %>,
maxNest: <%- theme.minivaline.maxNest %>,
pageSize: <%- theme.minivaline.pageSize %>,
serverURLs: '<%- theme.minivaline.serverURLs %>',
emoticonUrl: <%- '["' + theme.minivaline.emoticonUrl.join('", "') + '"]' %>,
});
const infoEle = document.querySelector('#mvcomments .info');
if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
infoEle.childNodes.forEach(function (item) {
item.parentNode.removeChild(item);
});
}
</script>
<style>
#mvcomments-box {
padding: 5px 30px;
}
@media screen and (max-width: 800px) {
#mvcomments-box {
padding: 5px 0px;
}
}
.v .vlist .vcard .vh {
padding-right: 20px;
}
.v .vlist .vcard {
padding-left: 10px;
}
.darkmode .commentTrigger{
background-color: #403e3e !important;
}
.darkmode .MiniValine .vpage .more{
background: #21232F
}
.darkmode img{
filter: brightness(30%)
}
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:before{
background: linear-gradient(180deg, rgba(246,246,246,0), rgba(0,0,0,0.9))
}
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:after{
background: rgba(0,0,0,0.9)
}
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment pre{
background: #282c34
border: 1px solid #282c34
}
.darkmode .MiniValine .vinputs-area .textarea-wrapper textarea{
color: #000;
}
.darkmode .MiniValine .vinputs-area .auth-section .input-wrapper input{
color: #000;
}
.darkmode .MiniValine .info .col .count{
color: #000;
}
.darkmode .MiniValine .vinputs-area .vextra-area .vsmile-icons{
background: transparent;
}
</style>
<% } %>

View File

@@ -0,0 +1,51 @@
<%
var sUrl = url.replace(/index\.html$/, '');
sUrl = /^(http:|https:)\/\//.test(sUrl) ? sUrl : 'http:' + sUrl;
%>
<div class="share-btn">
<span class="share-sns share-outer">
<i class="ri-share-forward-line"></i>
<%- theme.share_text %>
</span>
<div class="share-wrap">
<i class="arrow"></i>
<div class="share-icons">
<% if( theme.share_china ){ %>
<a class="weibo share-sns" href="javascript:;" data-type="weibo">
<i class="ri-weibo-fill"></i>
</a>
<a class="weixin share-sns wxFab" href="javascript:;" data-type="weixin">
<i class="ri-wechat-fill"></i>
</a>
<a class="qq share-sns" href="javascript:;" data-type="qq">
<i class="ri-qq-fill"></i>
</a>
<a class="douban share-sns" href="javascript:;" data-type="douban">
<i class="ri-douban-line"></i>
</a>
<!-- <a class="qzone share-sns" href="javascript:;" data-type="qzone">
<i class="icon icon-qzone"></i>
</a> -->
<% } %>
<a class="facebook share-sns" href="javascript:;" data-type="facebook">
<i class="ri-facebook-circle-fill"></i>
</a>
<a class="twitter share-sns" href="javascript:;" data-type="twitter">
<i class="ri-twitter-fill"></i>
</a>
<a class="google share-sns" href="javascript:;" data-type="google">
<i class="ri-google-fill"></i>
</a>
</div>
</div>
</div>
<div class="wx-share-modal">
<a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
<p>扫一扫,分享到微信</p>
<div class="wx-qrcode">
<img src="<%- 'qrcode' in locals ? qrcode(sUrl) : '//api.qrserver.com/v1/create-qr-code/?size=150x150&data=' + sUrl %>" alt="微信分享二维码">
</div>
</div>
<div id="share-mask"></div>

View File

@@ -7,11 +7,10 @@
<% } else if (post.title){ %> <% if (index){ %> <% } else if (post.title){ %> <% if (index){ %>
<h2 itemprop="name"> <h2 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.path) %>" <a class="<%= class_name %>" href="<%- url_for(post.path) %>"
><%= post.title %></a ><%= post.title %><%- partial('topping') %></a>
>
</h2> </h2>
<% } else { %> <% } else { %>
<h1 class="<%= class_name %> sea-center" style="border-left:0" itemprop="name"> <h1 class="<%= class_name %> sea-center" style="border-left:0" itemprop="name">
<%= post.title %> <%= post.title %>
</h1> </h1>
<% } %> <%- partial('topping') %> <% } %> <% } %> <% } %>

View File

@@ -1,5 +1,3 @@
<% if (is_home() && post.top) { %> <% if (is_home() && post.top) { %>
<div class="article-topping"> <i class="article-topping"><%= __('post.sticky') %></i>
<i class="ri-umbrella-line"></i>
</div>
<% } %> <% } %>

View File

@@ -1,24 +1,21 @@
<% if (!index && theme.leancloud && theme.leancloud.enable){ %> <% if (!index && theme.leancloud && theme.leancloud.enable){ %>
<!-- valine评论 --> <!-- valine评论 -->
<div id="vcomments-box"> <div id="vcomments-box">
<div id="vcomments"> <div id="vcomments"></div>
</div>
</div> </div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script> <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src='https://cdn.jsdelivr.net/npm/valine@1.3.10/dist/Valine.min.js'></script> <script src="https://cdn.jsdelivr.net/npm/valine@1.4.14/dist/Valine.min.js"></script>
<script> <script>
new Valine({ new Valine({
el: '#vcomments', el: "#vcomments",
notify: false, app_id: "<%- theme.leancloud.app_id %>",
verify: false, app_key: "<%- theme.leancloud.app_key %>",
app_id: '<%- theme.leancloud.app_id %>',
app_key: '<%- theme.leancloud.app_key %>',
path: window.location.pathname, path: window.location.pathname,
avatar: '<%- theme.valine.avatar %>', avatar: "<%- theme.valine.avatar %>",
placeholder: '<%- theme.valine.placeholder %>', placeholder: "<%- theme.valine.placeholder %>",
recordIP: true recordIP: true,
}); });
const infoEle = document.querySelector('#vcomments .info'); const infoEle = document.querySelector("#vcomments .info");
if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) { if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
infoEle.childNodes.forEach(function (item) { infoEle.childNodes.forEach(function (item) {
item.parentNode.removeChild(item); item.parentNode.removeChild(item);

View File

@@ -0,0 +1,20 @@
<% if (!theme.word_count.only_article_visit || (!index && theme.word_count.only_article_visit)){ %>
<div class="word_count">
<span class="post-time">
<span class="post-meta-item-icon">
<i class="ri-quill-pen-line"></i>
<span class="post-meta-item-text"> <%= __('post.word_count') %>:</span>
<span class="post-count"><%= wordcount(post.content) %></span>
</span>
</span>
<span class="post-time">
&nbsp; | &nbsp;
<span class="post-meta-item-icon">
<i class="ri-book-open-line"></i>
<span class="post-meta-item-text"> <%= __('post.read_time') %>≈</span>
<span class="post-count"><%= min2read(post.content) %> <%= __('post.minutes') %></span>
</span>
</span>
</div>
<% } %>

View File

@@ -1,3 +1,8 @@
<div class="totop" id="totop"> <div class="totop" id="totop">
<i class="ri-arrow-up-line"></i> <i class="ri-arrow-up-line"></i>
</div> </div>
<% if (theme.darkmode){ %>
<div class="todark" id="todark">
<i class="ri-moon-line"></i>
</div>
<% } %>

106
layout/_partial/viewer.ejs Normal file
View File

@@ -0,0 +1,106 @@
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in the DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.min.css">
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe-ui-default.min.js"></script>
<script>
function viewer_init() {
let pswpElement = document.querySelectorAll('.pswp')[0];
let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))
$imgArr.forEach(($em, i) => {
$em.onclick = () => {
// slider展开状态
// todo: 这样不好,后面改成状态
if (document.querySelector('.left-col.show')) return
let items = []
$imgArr.forEach(($em2, i2) => {
let img = $em2.getAttribute('data-idx', i2)
let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
let title = $em2.getAttribute('alt')
// 获得原图尺寸
const image = new Image()
image.src = src
items.push({
src: src,
w: image.width || $em2.width,
h: image.height || $em2.height,
title: title
})
})
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
index: parseInt(i)
});
gallery.init()
}
})
}
viewer_init()
</script>

View File

@@ -1,6 +1,8 @@
<section class="outer"> <section class="outer">
<% if (site.categories.length){ %> <% if (site.categories.length){ %>
<h1 class="page-type-title"><%= __('categories') %></h1> <h1 class="page-type-title"><%= __('categories') %></h1>
<%- list_categories({show_count: theme.show_count}) %> <div class="categories-box">
<%- list_categories() %>
</div>
<% } %> <% } %>
</section> </section>

View File

@@ -2,22 +2,44 @@
<body> <body>
<div id="app"> <div id="app">
<main class="content"> <% if (theme.click_effect===2){ %>
<canvas class="fireworks"></canvas>
<style>
.fireworks {
position: fixed;
left: 0;
top: 0;
z-index: 99999;
pointer-events: none;
}
</style>
<% } %>
<% if (theme.click_effect===3){ %>
<canvas width="1777" height="841"
style="position: fixed; left: 0px; top: 0px; z-index: 99999; pointer-events: none;"></canvas>
<% } %>
<main class="content on">
<%- body %> <%- body %>
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %> <%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
<div class="to_top"> <div class="float_btns">
<%- partial('_partial/totop') %> <%- partial('_partial/totop') %>
</div> </div>
</main> </main>
<% if (theme.toc && is_post()){ %> <aside class="sidebar on">
<aside class="sidebar">
<% } else { %>
<aside class="sidebar">
<% } %>
<%- partial('_partial/sidebar') %> <%- partial('_partial/sidebar') %>
</aside> </aside>
<script>
if (window.matchMedia("(max-width: 768px)").matches) {
document.querySelector('.content').classList.remove('on');
document.querySelector('.sidebar').classList.remove('on');
}
</script>
<%- partial('_partial/modal') %> <%- partial('_partial/modal') %>
<%- partial('_partial/after-footer') %> <%- partial('_partial/after-footer') %>
<% if (theme.music&&theme.music.enable){ %>
<%- partial('_partial/music') %>
<% } %>
</div> </div>
</body> </body>

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,20 +1,32 @@
{ {
"name": "ayer", "name": "ayer",
"version": "1.0.0", "version": "1.8.0",
"description": "ayer 是一个轻量优雅的 Hexo 主题", "description": "a clean and elegant theme for hexo.",
"main": "index.js",
"dependencies": {
"stylint": "^2.0.0"
},
"devDependencies": {},
"scripts": { "scripts": {
"test": "stylint source/css/style.styl -c .stylintrc" "dev": "parcel serve source-src/main.js -d source/dist",
"build": "rimraf source/dist && parcel build source-src/main.js -d source/dist --no-source-maps"
},
"source": "source-src/main.js",
"repository": {
"type": "git",
"url": "git+https://github.com/Shen-Yu/hexo-theme-ayer.git"
}, },
"keywords": [ "keywords": [
"ayer",
"hexo", "hexo",
"light" "theme",
"blog",
"ayer"
], ],
"author": "shenyu", "author": "Shen-Yu",
"license": "ISC" "license": "SATA",
"bugs": {
"url": "https://github.com/Shen-Yu/hexo-theme-ayer/issues"
},
"homepage": ".",
"devDependencies": {
"autoprefixer": "^9.7.4",
"parcel-bundler": "^1.12.4",
"postcss-modules": "^1.5.0"
},
"dependencies": {}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 232 KiB

View File

@@ -0,0 +1,6 @@
'use strict';
module.exports = {
// 生成meta `generator`
meta_generator: true
};

13
scripts/filters/index.js Normal file
View File

@@ -0,0 +1,13 @@
'use strict';
const metaGeneratorPath = './meta_generator';
module.exports = hexo => {
/* const {
filter
} = hexo.extend; */
// filter.register('after_render:html', require('./meta_generator'));
};
// 保持过滤器最先执行
hexo.extend.filter.register('after_render:html', require(metaGeneratorPath), 1);

View File

@@ -0,0 +1,17 @@
'use strict';
const defaultConfig = require('../default_config');
function hexoMetaGeneratorInject(data) {
const config = defaultConfig;
if (!config.meta_generator || !data ||
data.match(/<meta\s+name=['|"]?generator['|"]?/i)) {
return;
}
const hexoGeneratorTag = `\n <meta name="generator" content="hexo-theme-ayer">`;
return data.replace('</title>', '</title>' + hexoGeneratorTag);
}
module.exports = hexoMetaGeneratorInject;

View File

@@ -0,0 +1,9 @@
/* global hexo */
'use strict';
/** 自定义链接生成 */
hexo.extend.helper.register('ayer_plus_vendors', function (url) {
if (url.startsWith('//')) return url;
return this.url_for(`${url}`);
});

View File

@@ -0,0 +1,39 @@
var util = require('hexo-util');
var stripHTML = util.stripHTML;
var counter = function (content) {
content = stripHTML(content);
const cn = (content.match(/[\u4E00-\u9FA5]/g) || []).length;
const en = (content.replace(/[\u4E00-\u9FA5]/g, '').match(/[a-zA-Z0-9_\u0392-\u03c9\u0400-\u04FF]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|[\u00E4\u00C4\u00E5\u00C5\u00F6\u00D6]+|\w+/g) || []).length;
return [cn, en];
};
hexo.extend.helper.register('min2read', function (content, {
cn = 300,
en = 160
} = {}) {
var len = counter(content);
var readingTime = len[0] / cn + len[1] / en;
return readingTime < 1 ? '1' : parseInt(readingTime, 10);
});
hexo.extend.helper.register('wordcount', function (content) {
var len = counter(content);
var count = len[0] + len[1];
if (count < 1000) {
return count;
}
return Math.round(count / 100) / 10 + 'k';
});
hexo.extend.helper.register('totalcount', function (site) {
var count = 0;
site.posts.forEach(function (post) {
var len = counter(post.content);
count += len[0] + len[1];
});
if (count < 1000) {
return count;
}
return Math.round(count / 100) / 10 + 'k';
});

25
scripts/lib/core.js Normal file
View File

@@ -0,0 +1,25 @@
/* global hexo */
'use strict';
// Hexo事件:https://hexo.io/zh-cn/api/events
/** 在静态文件生成前发布 */
hexo.on('generateBefore', () => {
// Merge config.
//require('./../filters/index')(hexo);
});
/** 在文章文件建立后发布。该事件返回文章参数。 */
hexo.on('new', function (post) {
//console.log(post)
});
/** 在文章开始渲染前执行 */
hexo.extend.filter.register('before_post_render', function (data) {
//var config = hexo.config;
//console.log(3);
//console.log(config);
//console.log(hexo.theme.config);
});

View File

@@ -0,0 +1,33 @@
darkmode()
background: rgba(0,0,0,.6)
*
color: #f2f2f2
.article-entry code
background: darken(#ddd,10%) !important
color: #c7254e !important
.article-header .article-title,.share-outer i,.category-list .category-list-item i,.category-list a:hover .category-list-item,.article-date, .article-category .article-category-link, .archive-year-wrap .archive-year, .archive-article-date,a.toc-link,.tag-list > .tag-list-item:before,.article-tag-list:before
color: darken(#fff,10%) !important
.share-icons a i,.float_btns i,#reward .reward-p,#reward .reward-p i,.local-search-input
color: darken(#999,20%) !important
.is-position-fixed
background-color transparent
.v *
color: #555 !important
.tag-list > .tag-list-item .tag-list-link,.article-tag-list .article-tag-list-link
background: darken(#fff,10%) !important
color: #555 !important
#vcomments-box #vcomments
background-color rgba(255,255,255,.1) !important
*
color #f1f1f1 !important
.v .vbtn
background-color: transparent !important
.v .vlist .vcard .vhead .vsys
border: 1px solid #f1f1f1 !important
background-color: transparent !important
input::-webkit-input-placeholder
color: #ccc;
input::-moz-input-placeholder
color: #ccc;
input::-ms-input-placeholder
color: #ccc;

View File

@@ -9,7 +9,7 @@ $block
$base-style $base-style
h1, h2, h3, h4, h5, h6 h1, h2, h3, h4, h5, h6
margin 1.5rem 0 margin 2.5rem 0 1.5rem
hr hr
height border-width height border-width
background-color border-color background-color border-color
@@ -34,8 +34,7 @@ $base-style
acronym, abbr acronym, abbr
border-bottom border-width border-color dotted border-bottom border-width border-color dotted
ul, ol, dl ul, ol, dl
margin 1.5rem 0 margin 1.5rem 0 1.5rem 2rem
line-height line-height
p, table, blockquote p, table, blockquote
margin 1.5rem 0 margin 1.5rem 0
@@ -49,17 +48,21 @@ $base-style
border none border none
table table
width 100% width 100%
max-width 70rem
border 1px solid #dedede
margin 15px auto
border-collapse collapse border-collapse collapse
vertical-align middle
empty-cells show empty-cells show
text-align left
th, td, &
border border-width border-color solid
th,td th,td
padding 1rem 1.5rem border 1px solid #dedede
tbody padding 5px 10px
tr:nth-child(2n) th
background-color transparent font-weight bold
text-align center !important
background rgba(158, 188, 226, .2)
white-space nowrap
td:nth-child(1)
white-space nowrap
blockquote blockquote
display block display block

View File

@@ -28,8 +28,17 @@ body
*/ */
h1 h1
font-size 2em font-size 30px
margin 0.67em 0 h2
font-size 28px
h3
font-size 26px
h4
font-size 24px
h5
font-size 21px
h6
font-size 18px
/* Grouping content /* Grouping content
========================================================================== */ ========================================================================== */

View File

@@ -46,7 +46,7 @@
padding-left 3rem padding-left 3rem
.archive-article-title .archive-article-title
text-decoration: none text-decoration: none
font-size 1.5rem font-size 1.8rem
.archive-article-footer .archive-article-footer
margin-top: 1.5rem margin-top: 1.5rem
@@ -70,9 +70,10 @@
.page-nav .page-nav
clearfix() clearfix()
margin: 3rem auto margin: 3rem auto 5rem
text-align: center text-align: center
overflow: hidden overflow: hidden
font-size: 115%
a, span a, span
padding: 1rem 1.5rem padding: 1rem 1.5rem
line-height: 1 line-height: 1
@@ -80,8 +81,12 @@
text-decoration: none text-decoration: none
.prev .prev
float: left float: left
border-radius: 6px
border: 1px solid
.next .next
float: right float: right
border-radius: 6px
border: 1px solid
.page-number .page-number
display: inline-block display: inline-block
@media mq-mobile @media mq-mobile

View File

@@ -16,13 +16,17 @@
// overflow hidden // overflow hidden
.article-topping .article-topping
position absolute display inline-block
top 0 margin-left 10px
left -3rem padding 0 10px
color: #ea434a border-radius 4px
&>i font-style normal
font-size 2rem font-size 12px
line-height 1.7 background-color #ea434a
color #fff
height 22px
line-height 24px
transform translateY(-8px)
.article-meta .article-meta
@@ -32,7 +36,7 @@
@extend $block-caption @extend $block-caption
&::before &::before
content '\eaf2' content '\eaf2'
margin-right .5rem margin-right .15rem
font-family remixicon font-family remixicon
opacity .5 opacity .5
@@ -42,7 +46,7 @@
&:before &:before
content "\efde" content "\efde"
font-family remixicon font-family remixicon
margin-right .5rem margin-right .15rem
opacity 0.6 opacity 0.6
.article-category-link .article-category-link
@extend $block-caption @extend $block-caption
@@ -52,8 +56,9 @@
margin-left 0 margin-left 0
.article-entry .article-entry
font-size 110% font-size 103%
margin-top 1rem margin-top .5rem
line-height 1.6
clearfix() clearfix()
@extend $base-style @extend $base-style
color body-color color body-color
@@ -94,7 +99,7 @@
margin 0 margin 0
.article-title .article-title
display block display block
font-size 1.8em font-size 34px
font-weight bold font-weight bold
margin-bottom 3rem margin-bottom 3rem
text-decoration none text-decoration none
@@ -104,7 +109,16 @@
.article-footer .article-footer
clearfix() clearfix()
margin-top 3rem
.declare
margin 0 0 1rem
padding-bottom 1rem
color #999
border-bottom 1px solid #f6f6f6
ul
list-style none
li
list-style none
// Tags // Tags
.article-tag-list .article-tag-list
@@ -151,9 +165,9 @@
.article-nav .article-nav
clearfix() clearfix()
position relative position relative
padding-top 3rem padding-top 1.5rem
margin-top 5rem margin 1rem 0 2rem
border-top border-width border-color solid border-top border-width solid #eee
.article-nav-link .article-nav-link
display block display block

View File

@@ -2,11 +2,9 @@
.article .article
padding 4.5rem 0 padding 4.5rem 0
&:not(:last-child) &:not(:last-child)
border-bottom border-width border-color solid border-bottom border-width #ddd solid
.article-entry, .article-footer
margin-top 0
.article-entry .article-entry
margin 1rem 0 margin-top 1rem
padding 0 2rem 2rem padding 0 2rem 2rem
border 1px dashed lighten(tag-color,80%) border 1px dashed lighten(tag-color,80%)
.article-more-link .article-more-link
@@ -19,3 +17,5 @@
text-decoration none text-decoration none
.article-gallery .article-gallery
margin-top 1.5rem margin-top 1.5rem
.article-footer
margin-top 1rem

View File

@@ -25,10 +25,12 @@
left 50% left 50%
transform translate(-50%, -100%) transform translate(-50%, -100%)
h1 h1
font-family: Titillium Web,PingFang SC,Hiragino Sans GB,"Microsoft JhengHei","Microsoft YaHei",Helvetica Neue,Helvetica,Arial,sans-serif
font-size 7rem font-size 7rem
margin 0 margin 0
opacity .95 opacity .95
h2 #subtitle-box
font-family: Titillium Web,PingFang SC,Hiragino Sans GB,"Microsoft JhengHei","Microsoft YaHei",Helvetica Neue,Helvetica,Arial,sans-serif
font-size 3rem font-size 3rem
margin .5rem 0 1.5rem margin .5rem 0 1.5rem
a, & a, &
@@ -53,11 +55,11 @@
&:hover &:hover
color sea color sea
.to_top .float_btns
position fixed position fixed
bottom 10rem bottom 10rem
right 50px right 50px
z-index 9 z-index 9996
text-align center text-align center
transform scale(1.2) transform scale(1.2)
@@ -71,6 +73,12 @@
z-index 9998 z-index 9998
display none display none
.word_count
margin-top 5px
color darken(gray,30%)
padding-bottom 1rem
border-bottom 1px solid darken(froth-light,2%)
// Media Query // Media Query
@media (max-width: 768px) @media (max-width: 768px)
.cover-inner .cover-inner
@@ -78,8 +86,8 @@
width 100% width 100%
h1 h1
font-size 4.5rem font-size 4.5rem
h2 #subtitle-box
font-size 2rem font-size 2rem
.to_top .float_btns
right 10px right 10px

View File

@@ -0,0 +1,52 @@
// Categories
.categories-box
max-width 320px
margin-right -.5rem
margin-left -.5rem
border-left 1px solid #eee
span
padding-left: 5px;
color: #aaa;
font-size: 14px
ul li, ol li
list-unstyled()
margin: 15px 0;
padding-left: 15px;
padding-bottom: 12px;
font-size: 16px;
font-weight: 500;
word-wrap: break-word;
border-bottom: 1px solid #eee;
&:last-child
margin-bottom 0
border-bottom 0 solid #000
i
font-style normal
margin-left 10px
color: darken(water,45%)
a
display inline-block
vertical-align middle
text-decoration: none
color: body-color
&:hover
opacity .8
&:before
content "\efde"
font-family remixicon
margin-right .5rem
display inline-block
vertical-align middle
ul ul,ol ul,ul ol,ol ol
list-unstyled()
margin 0 20px
ul ul li,ol ul li,ul ol li,ol ol li
list-unstyled()
border: none;
padding-bottom: 0;
.category-list-count:before, .tag-list-count:before, .archive-list-count:before
content: "(";
.category-list-count:after, .tag-list-count:after, .archive-list-count:after
content: ")";

View File

@@ -0,0 +1,50 @@
@keyframes footerHeartBeat
0%
transform: scale(1)
50%
transform: scale(1.2)
100%
transform: scale(1)
.footer
border-top 2px solid #f6f6f6
padding 3rem 0
font-size 115%
.outer
&>ul
position relative
display flex
justify-content center
li
display inline-block
padding .3rem 0
a
text-decoration none
.division
display inline
margin 0 5px
i
margin 0 2px
font-style normal
transform translateY(2px)
span
margin-right 6px
.heart_icon
display: inline-block;
margin: 0 0.4rem;
font-size: 1em;
color: #f00;
-webkit-animation: footerHeartBeat 1.2s infinite;
-moz-animation: footerHeartBeat 1.2s infinite;
-o-animation: footerHeartBeat 1.2s infinite;
-ms-animation: footerHeartBeat 1.2s infinite;
animation: footerHeartBeat 1.2s infinite;
animation-duration: 1.2s;
animation-timing-function: ease;
animation-delay: 0s;
animation-iteration-count: infinite;
animation-direction: normal;
animation-fill-mode: none;
animation-play-state: running;
animation-name: footerHeartBeat;

View File

@@ -0,0 +1,260 @@
highlight-background = #2d2d2d
highlight-code = #f2f2f2
highlight-code-color = #c7254e
highlight-current-line = grey
highlight-selection = #000
highlight-foreground = #dedede
highlight-comment = #8e908c
highlight-red = #f2777a
highlight-orange = #f99157
highlight-yellow = #ffcc66
highlight-green = #99cc99
highlight-aqua = #66cccc
highlight-blue = #6699cc
highlight-purple = #cc99cc
.article-entry pre,
.article-entry .highlight {
background: highlight-background;
margin: 10px 0;
padding: 10px 10px;
overflow: hidden;
overflow-x: auto;
color: highlight-foreground;
font-size: 0.9em;
line-height: 1.5;
/** */
&::-webkit-scrollbar {
height: 10px;
width: 7px;
background: rgba(0, 0, 0, 0.1);
/* */
/* width: 10px;
height: 10px;
background: #ccc;
border-radius: 0; */
}
&::-webkit-scrollbar:hover {
background: rgba(0, 0, 0, 0.2);
}
/* */
&::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.3);
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-ms-border-radius: 6px;
-o-border-radius: 6px;
border-radius: 6px;
}
&::-webkit-scrollbar-thumb:hover {
-webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
/* Webkit browsers */
-moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
/* Firefox */
-ms-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
/* IE9 */
-o-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
/* Opera(Old) */
box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
/* IE9+, News */
background-color: rgba(0, 0, 0, 0.4);
}
/** */
&::-webkit-scrollbar-track {
/* box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); */
background: #ededed;
border-radius: 10px;
}
}
.article-entry .highlight .gutter pre,
.article-entry .highlight .gutter pre .line,
.article-entry .gist .gist-file .gist-data .line-numbers {
/* color: #666; */
color: highlight-current-line;
}
.article-entry pre,
.article-entry code {
font-family: Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace
}
.article-entry code {
background: #eee;
color: highlight-code-color;
padding: 0 0.3em;
border: none;
}
.article-entry pre code {
background: none;
text-shadow: none;
padding: 0;
color: highlight-foreground;
}
.article-entry .highlight {
border-radius: 4px;
}
.article-entry .highlight pre {
border: none;
margin: 0;
padding: 0;
}
.article-entry .highlight table {
margin: 0;
width: auto;
border: none;
}
.article-entry .highlight td {
border: none;
padding: 0;
}
.article-entry .highlight figcaption {
color: highlight-comment;
line-height: 1em;
margin-bottom: 1em;
}
.article-entry .highlight figcaption:before,
.article-entry .highlight figcaption:after {
content: "";
display: table;
}
.article-entry .highlight figcaption:after {
clear: both;
}
.article-entry .highlight figcaption a {
float: right;
}
.article-entry .highlight .gutter pre {
text-align: right;
padding-right: 20px;
}
.article-entry .highlight .gutter pre .line {
text-shadow: none;
}
.article-entry .highlight .line {
color: highlight-foreground;
min-height: 19px;
}
.article-entry .gist {
margin: 0 -20px;
border-style: solid;
border-color: #ddd;
border-width: 1px 0;
background: #272822;
padding: 15px 20px 15px 0;
}
.article-entry .gist .gist-file {
border: none;
font-family: "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace;
margin: 0;
}
.article-entry .gist .gist-file .gist-data {
background: none;
border: none;
}
.article-entry .gist .gist-file .gist-data .line-numbers {
background: none;
border: none;
padding: 0 20px 0 0;
}
.article-entry .gist .gist-file .gist-data .line-data {
padding: 0 !important;
}
.article-entry .gist .gist-file .highlight {
margin: 0;
padding: 0;
border: none;
}
.article-entry .gist .gist-file .gist-meta {
background: #272822;
color: highlight-comment;
font: 0.85em "Helvetica Neue", Helvetica, Arial, sans-serif;
text-shadow: 0 0;
padding: 0;
margin-top: 1em;
margin-left: 20px;
}
.article-entry .gist .gist-file .gist-meta a {
color: #258fb8;
font-weight: normal;
}
.article-entry .gist .gist-file .gist-meta a:hover {
text-decoration: underline;
}
pre .comment {
/* color: #75715e; */
color: highlight-green
}
pre .keyword,
pre .function .keyword,
pre .class .params {
color: #66d9ef;
}
pre .tag,
pre .doctype,
pre .params,
pre .function,
pre .css .value {
color: highlight-foreground;
}
pre .css~* .tag,
pre .title,
pre .at_rule,
pre .at_rule .keyword,
pre .preprocessor,
pre .preprocessor .keyword {
color: #f92672;
}
pre .attribute,
pre .built_in,
pre .class,
pre .css~* .class,
pre .function .title {
color: #a6e22e;
}
pre .value,
pre .string {
color: highlight-foreground;
}
pre .number {
color: highlight-purple
}
pre .id,
pre .css~* .id {
color: #fd971f;
}

View File

@@ -14,8 +14,7 @@
display inline-block display inline-block
overflow hidden overflow hidden
background gray /* To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */ background gray /* To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */
filter "alpha(opacity=10)" opacity 1
opacity 0.1
margin 0 margin 0
padding 0 padding 0
> img, > a > img, > svg, > a > svg > img, > a > img, > svg, > a > svg
@@ -25,8 +24,7 @@
margin 0 margin 0
padding 0 padding 0
border none border none
filter "alpha(opacity=0)" opacity 1
opacity 0
> .caption > .caption
display none display none
position absolute position absolute
@@ -40,11 +38,9 @@
&.caption-visible &.caption-visible
display initial display initial
> .jg-entry-visible > .jg-entry-visible
filter "alpha(opacity=100)"
opacity 1 opacity 1
background none background none
> img, > a > img, > svg, > a > svg > img, > a > img, > svg, > a > svg
filter "alpha(opacity=100)"
opacity 1 opacity 1
-webkit-transition opacity 500ms ease-in -webkit-transition opacity 500ms ease-in
-moz-transition opacity 500ms ease-in -moz-transition opacity 500ms ease-in
@@ -58,13 +54,11 @@
margin-left -24px margin-left -24px
padding 10px 0 10px 0 padding 10px 0 10px 0
left 50% left 50%
filter "alpha(opacity=100)"
opacity 1 opacity 1
overflow initial overflow initial
> span > span
display inline-block display inline-block
filter "alpha(opacity=0)" opacity 1
opacity 0
width 8px width 8px
height 8px height 8px
margin 0 4px 0 4px margin 0 4px 0 4px

View File

@@ -17,6 +17,7 @@
right 0 right 0
.content, .sidebar .content, .sidebar
&.anim
transition(transition-base) transition(transition-base)
.content .content
@@ -29,7 +30,6 @@
overflow-x: hidden overflow-x: hidden
-webkit-overflow-scrolling touch -webkit-overflow-scrolling touch
&.on &.on
transform translateX(aside-width)
margin-left 0 !important margin-left 0 !important
.sidebar .sidebar
@@ -63,11 +63,11 @@
font-size larger font-size larger
.wrap, .outer .wrap, .outer
position relative
width 100% width 100%
padding-right gutter-width padding-right gutter-width
padding-left gutter-width padding-left gutter-width
margin auto margin auto
overflow-x hidden
min-height calc( 100% - 157px ) min-height calc( 100% - 157px )
clearfix() clearfix()

View File

@@ -1,9 +1,13 @@
#reward-out
position: relative
width: 100%
#reward-btn #reward-btn
position relative position relative
display inline-block display inline-block
height 36px height 36px
line-height 36px line-height 36px
margin-top 3rem margin 60px 0
padding 0 20px padding 0 20px
font-size 18px font-size 18px
color #fff color #fff
@@ -13,8 +17,7 @@
margin-left 50% margin-left 50%
transform translateX(-50%) transform translateX(-50%)
box-shadow 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12) box-shadow 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12)
-webkit-transition .4s ease-in-out transition(.4s ease-in-out)
transition .4s ease-in-out
cursor pointer cursor pointer
&:hover, &:hover,
&:active &:active
@@ -30,6 +33,18 @@
padding 0px 20px 20px padding 0px 20px 20px
background-color lighten(water,30%) background-color lighten(water,30%)
display none display none
&.ready {
visibility: hidden;
display: block;
transform: translate(-50%, -100%);
transition: .3s;
}
&.in {
visibility: visible;
opacity: 1;
transform: translate(-50%, 0);
}
.close .close
height 28px height 28px
line-height 28px line-height 28px

View File

@@ -0,0 +1,161 @@
.share-wrap {
min-height: 20px;
display: none;
position: relative;
z-index: 1;
right: 0;
bottom: 0;
width: 250px;
background-color #f5f5f5;
border-radius: 2px;
.arrow {
position: absolute;
z-index: -1;
top: -3px;
right:20px;
display: block;
width 10px;
height 10px;
transform: rotate(45deg);
background-color #f5f5f5;
}
}
.share-btn {
float: right;
position: relative;
}
.share-outer {
display: flex;
justify-content: flex-end;
border: none;
text-shadow: none;
text-decoration: none;
width auto;
color: link-color;
height: 28px;
line-height: 26px;
i{
font-size: 18px;
margin-right 5px;
color lighten(link-color,30%)
}
&:hover {
transform: none;
cursor: pointer;
}
}
.share-icons {
display: flex;
justify-content: flex-end;
align-items: center;
flex-wrap: wrap;
a {
border-radius: 50%;
display: inline-block;
vertical-align: middle;
zoom: 1;
margin: 3px;
transition: 0.3s;
text-align: center;
color: main-color;
width: 28px;
height: 28px;
line-height: 26px;
font-size: 13px;
i {
font-size: 24px
}
&.weibo {
color weibo-color
}
&.weixin {
color wechat-color
}
&.qq {
color qq-color
}
&.douban {
color douban-color
}
&.twitter {
color twitter-color
}
&.facebook {
color facebook-color
}
&.google {
color google-color
}
&:active {
color: ocean;
}
&:hover {
transform: scale(1.2);
}
}
}
.wx-share-modal {
position: fixed;
top: 24%;
left: 50%;
z-index: 9999;
padding: 20px;
text-align: center;
color: #727272;
background: #fff;
border-radius: 4px;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
opacity: 0;
transform: translate(-50%, -200%);
p {
margin-bottom: 10px;
}
&.ready {
visibility: 0;
display: block;
transform: translate(-50%, -100%);
transition: .3s;
}
&.in {
display: block;
visibility: visible;
opacity: 1;
transform: translate(-50%, 0);
}
.modal-close {
position: absolute;
right: 15px;
top: 15px;
color: rgba(0, 0, 0, .2);
font-size: 16px;
line-height: 20px;
i{
font-size: 24px;
}
&:hover,
&:active {
color: rgba(0, 0, 0, .4);
}
}
}
#share-mask{
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
background-color rgba(0,0,0,.6);
z-index: 999;
display: none;
}

View File

@@ -0,0 +1,32 @@
// Tags
.tag-list
list-unstyled()
margin-right -.5rem
margin-left -.5rem
> .tag-list-item
display inline-block
padding .5rem 1rem
font-size 120%
&:before
content "\eec3"
font-family remixicon
margin-right .5rem
display inline-block
vertical-align middle
color: tag-color
.tag-list-link
display inline-block
vertical-align middle
text-decoration: none
height 30px
line-height 30px
padding: 0 15px
font-size: 1.5rem
border-radius: 15px
background-color tag-color
color white
box-shadow: 0 3px 5px rgba(0,0,0,0.12)
transition: .2s
&:hover
transform: scale(1.1)

View File

@@ -1,10 +1,13 @@
.tocbot .tocbot
position fixed padding 20px
position absolute
right -28rem
top 14rem top 14rem
left calc((100vw - 70rem) / 2 + 70rem)
font-size 80% font-size 80%
opacity .8 opacity .95
max-width 255px
border-radius 8px
> .toc-list > .toc-list
position relative position relative
overflow hidden overflow hidden
@@ -35,7 +38,9 @@ a.toc-link
.is-position-fixed .is-position-fixed
position fixed !important position fixed !important
top 0 top 0
right aside-width right 6rem
background-color #fff
z-index 996
// Left line before pseudo element. // Left line before pseudo element.
.toc-link::before .toc-link::before
@@ -47,3 +52,9 @@ a.toc-link
margin-top -1px margin-top -1px
position absolute position absolute
width 2px width 2px
.is-active-link::before
background-color sea-blue
.is-active-link
font-weight 700

View File

@@ -18,14 +18,21 @@
} }
} }
.totop .totop,.todark
position relative position relative
display inline-block display block
overflow hidden overflow hidden
cursor pointer cursor pointer
rounded-circle(3.2rem) rounded-circle(3.2rem)
background-color froth-light background-color darken(froth-light,2%)
line-height 3rem line-height 3rem
opacity .6
transition(opacity 1s ease)
&:hover
opacity 1
.totop
margin-bottom .8rem
&:hover > i { &:hover > i {
animation rocket .3s ease-in-out animation rocket .3s ease-in-out
} }

View File

@@ -0,0 +1,31 @@
/*
* Remix Icon v2.1.0
* https://remixicon.com
* https://github.com/Remix-Design/RemixIcon
*
* Copyright RemixIcon.com
* Released under the Apache License Version 2.0
*
* Date: 2019-11-03
*/
// variables
remixicon-font-path = 'https://cdn.jsdelivr.net/npm/remixicon@2.1.0/fonts/' !default;
@font-face
font-family: remixicon;
src: url(remixicon-font-path +'remixicon.eot'); /* IE9*/
src: url(remixicon-font-path +'remixicon.eot#iefix') format('embedded-opentype'), /* IE6-IE8 */
url(remixicon-font-path +'remixicon.woff2') format("woff2"),
url(remixicon-font-path +'remixicon.woff') format("woff"),
url(remixicon-font-path +'remixicon.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url(remixicon-font-path +'remixicon.svg#remixicon') format('svg'); /* iOS 4.1- */
font-display: swap;
[class^="ri-"], [class*=" ri-"]
display inline-block;
font-family: 'remixicon' !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;

View File

@@ -28,13 +28,17 @@ sand-gray = #bbb
red = #ea434a red = #ea434a
// Share Colors // Share Colors
weibo-color = #d81e06
wechat-color = #51c332
qq-color = #4cafe9
douban-color = #05b711
twitter-color = #00aced twitter-color = #00aced
facebook-color = #3b5998 facebook-color = #3b5998
pinterest-color = #cb2027 pinterest-color = #cb2027
google-color = #dd4b39 google-color = #dd4b39
// Link Colors // Link Colors
link-color = darken(water,20%) link-color = #0681d0
link-hover-color = lighten(link-color, 20%) link-hover-color = lighten(link-color, 20%)
link-active-color = darken(link-color, 5%) link-active-color = darken(link-color, 5%)
disabled-color = gray disabled-color = gray
@@ -51,7 +55,7 @@ border-width = 0.1rem
border-color = froth border-color = froth
// Layout // Layout
aside-width = 7rem aside-width = 8rem
wrap-width = 70rem wrap-width = 70rem
years-width = 6rem years-width = 6rem
logo-size = 4.2rem logo-size = 4.2rem

View File

@@ -2,6 +2,7 @@
@import "_mixins" @import "_mixins"
@import "_remixicon" @import "_remixicon"
@import "_normalize" @import "_normalize"
@import "_darkmode"
*, *,
*::before *::before
@@ -28,10 +29,11 @@ body
padding 0 padding 0
margin 0 margin 0
overflow-x hidden overflow-x hidden
text-size-adjust: 100% text-size-adjust 100%
::selection // Dark Mode
background sea-lighter &.darkmode
color froth darkmode()
a a
color link-color color link-color
&:hover &:hover
@@ -68,6 +70,7 @@ button
@import "_partial/gitalk" @import "_partial/gitalk"
@import "_partial/apple" @import "_partial/apple"
@import "_partial/reward" @import "_partial/reward"
@import "_partial/share"
if sidebar if sidebar
@import "_partial/sidebar" @import "_partial/sidebar"

177
source-src/js/ayer.js Normal file
View File

@@ -0,0 +1,177 @@
(function ($) {
// Search
let $searchWrap = $('.search-form-wrap'),
isSearchAnim = false,
searchAnimDuration = 200;
const startSearchAnim = () => {
isSearchAnim = true;
};
const stopSearchAnim = (callback) => {
setTimeout(function () {
isSearchAnim = false;
callback && callback();
}, searchAnimDuration);
};
$('.nav-item-search').click(() => {
if (isSearchAnim) return;
startSearchAnim();
$searchWrap.addClass('on');
stopSearchAnim(function () {
$('.local-search-input').focus();
});
});
$(document).mouseup((e) => {
const _con = $('.local-search');
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
$searchWrap.removeClass('on');
}
});
// 建议在移动端不初始化,其实 /search.xml 文件还挺大的,
if ($('.local-search').size()) {
$.getScript('/js/search.js', function () {
searchFunc("/search.xml", 'local-search-input', 'local-search-result');
});
}
// Mobile Detect
const isMobile = {
Android: function () {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function () {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function () {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function () {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function () {
return navigator.userAgent.match(/IEMobile/i);
},
any: function () {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
};
// Share
$('.share-outer').click(() => $('.share-wrap').fadeToggle())
// Lazyload
$("img.lazy").lazyload({
effect: "fadeIn"
});
// JustifiedGallery
$('#gallery').justifiedGallery({
rowHeight: 200,
margins: 5
});
// ScrollDown
$(document).ready(function ($) {
$('.anchor').click(function (e) {
e.preventDefault();
$('main').animate({ scrollTop: $('.cover').height() }, 'smooth');
});
});
// To Top
(() => {
// When to show the scroll link
// higher number = scroll link appears further down the page
const upperLimit = 1000;
// Our scroll link element
const scrollElem = $('#totop');
// Scroll to top speed
const scrollSpeed = 1000;
// Show and hide the scroll to top link based on scroll position
scrollElem.hide();
$('.content').scroll(function () {
const scrollTop = $('.content').scrollTop();
if (scrollTop > upperLimit) {
$(scrollElem).stop().fadeTo(200, .6); // fade back in
} else {
$(scrollElem).stop().fadeTo(200, 0); // fade out
}
});
// Scroll to top animation on click
$(scrollElem).click(function () {
$('.content').animate({ scrollTop: 0 }, scrollSpeed); return false;
});
})();
// Mobile Nav
const $content = $('.content'),
$sidebar = $('.sidebar');
$('.navbar-toggle').on('click', function () {
$('.content,.sidebar').addClass('anim')
$content.toggleClass('on');
$sidebar.toggleClass('on');
});
// Reward
$('#reward-btn').click(() => {
$('#reward').fadeIn(150)
$('#mask').fadeIn(150)
});
$('#reward .close, #mask').click(() => {
$('#mask').fadeOut(100)
$('#reward').fadeOut(100)
})
// DarkMode
if (sessionStorage.getItem('darkmode') == 1) {
$('body').addClass('darkmode')
$('#todark i').removeClass('ri-moon-line').addClass('ri-sun-line')
} else {
$('body').removeClass('darkmode')
$('#todark i').removeClass('ri-sun-line').addClass('ri-moon-line')
}
$('#todark').click(() => {
if (sessionStorage.getItem('darkmode') == 1) {
$('body').removeClass('darkmode')
$('#todark i').removeClass('ri-sun-line').addClass('ri-moon-line')
sessionStorage.removeItem('darkmode')
} else {
$('body').addClass('darkmode')
$('#todark i').removeClass('ri-moon-line').addClass('ri-sun-line')
sessionStorage.setItem('darkmode', 1)
}
})
// showThemeInConsole
const ayerInfo = '主题不错⭐star 支持一下 ->';
const ayerURL = 'https://github.com/Shen-Yu/hexo-theme-ayer';
const ayerNameStr =
'\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ \| | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n';
const ayerInfoStyle =
'background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;';
const ayerURLStyle =
'background-color: #ffbca2; padding: 8px; font-size: 14px;';
const ayerNameStyle = 'background-color: #eaf8ff;';
console.log(
'%c%s%c%s%c%s',
ayerInfoStyle,
ayerInfo,
ayerURLStyle,
ayerURL,
ayerNameStyle,
ayerNameStr
);
document.write('<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>');
})(jQuery);

67
source-src/js/share.js Normal file
View File

@@ -0,0 +1,67 @@
function generate(url, opts) {
var url = url.replace(/<%-sUrl%>/g, encodeURIComponent(opts.sUrl))
.replace(/<%-sTitle%>/g, opts.sTitle)
.replace(/<%-sDesc%>/g, opts.sDesc)
.replace(/<%-sPic%>/g, encodeURIComponent(opts.sPic));
window.open(url);
}
function showWX() {
$('.wx-share-modal').addClass('in ready')
$('#share-mask').show()
}
function hideWX() {
$('.wx-share-modal').removeClass('in ready')
$('#share-mask').hide()
}
function handleClick(type, opts) {
if (type === 'weibo') {
generate('http://service.weibo.com/share/share.php?url=<%-sUrl%>&title=<%-sTitle%>&pic=<%-sPic%>', opts)
} else if (type === 'qq') {
generate('http://connect.qq.com/widget/shareqq/index.html?url=<%-sUrl%>&title=<%-sTitle%>&source=<%-sDesc%>', opts)
} else if (type === 'douban') {
generate('https://www.douban.com/share/service?image=<%-sPic%>&href=<%-sUrl%>&name=<%-sTitle%>&text=<%-sDesc%>', opts)
} else if (type === 'qzone') {
generate('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%-sUrl%>&title=<%-sTitle%>&pics=<%-sPic%>&summary=<%-sDesc%>', opts)
} else if (type === 'facebook') {
generate('https://www.facebook.com/sharer/sharer.php?u=<%-sUrl%>', opts)
} else if (type === 'twitter') {
generate('https://twitter.com/intent/tweet?text=<%-sTitle%>&url=<%-sUrl%>&via=<%-config.url%>', opts)
} else if (type === 'google') {
generate('https://plus.google.com/share?url=<%-sUrl%>', opts)
} else if (type === 'weixin') {
showWX();
}
}
const share_init = () => {
let $sns = document.querySelectorAll('.share-sns');
if (!$sns || $sns.length === 0) return;
let sUrl = window.location.href;
let sTitle = document.querySelector('title').innerHTML;
let $img = document.querySelectorAll('.article-entry img');
let sPic = $img.length ? document.querySelector('.article-entry img').getAttribute('src') : '';
if ((sPic !== '') && !/^(http:|https:)?\/\//.test(sPic)) {
sPic = window.location.origin + sPic
}
$sns.forEach(($em) => {
$em.onclick = (e) => {
let type = $em.getAttribute('data-type')
handleClick(type, {
sUrl: sUrl,
sPic: sPic,
sTitle: sTitle,
sDesc: sTitle
})
}
})
document.querySelector('#mask').onclick = hideWX
document.querySelector('.modal-close').onclick = hideWX
}
share_init()

3
source-src/main.js Normal file
View File

@@ -0,0 +1,3 @@
import './css/style.styl'
import './js/ayer'
import './js/share'

View File

@@ -1,24 +1,68 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>404</title> <title>404</title>
<meta name="keywords" content="Hexo,404,Design"> <meta name="keywords" content="Hexo,Ayer,404,Design">
<meta name="description" content="Tribute Forrest Gump"> <meta name="description" content="hexo theme ayer page 404.">
<link rel="stylesheet" href="/css/404.css"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<style>
html,
figure {
margin: 0;
padding: 0;
overflow-x: hidden;
}
body {
margin: 20px;
overflow: hidden;
}
h1,
h3 {
width: 100%;
text-align: center;
color: #403e3e;
}
h3 a {
color: #0681d0;
}
.forrestgump img {
width: 52rem;
margin-left: 50%;
transform: translateX(-50%);
border-radius: 5%;
opacity: .8;
}
@media screen and (max-width: 768px) {
.forrestgump img {
width: 100%;
}
}
</style>
</head> </head>
<body> <body>
<div class="notfound"> <div class="notfound">
<a class="notfound-link" href="/"> <a class="notfound-link" href="/">
<img width="30" src="data:image/svg+xml;base64,PHN2ZyB0PSIxNTYyODQyNjI3NDA5IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcC1pZD0iNTIxNDgiIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIj48cGF0aCBkPSJNMTk0LjYgNDc5LjFoNzQ5LjF2NTcuNkgxODYuNEw1MjggODc4LjMgNDg3LjMgOTE5IDEyMSA1NTIuNyA4MC4zIDUxMmw0MDctNDA3IDQwLjcgNDAuN3oiIGZpbGw9IiIgcC1pZD0iNTIxNDkiLz48L3N2Zz4="> <img width="40"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAGq0lEQVR4Xu1bXahUVRT+1pnxvRexNIT8iYz+SBOuzt6zx5uaWQ9FJulDSillaUpaUUZK2Q9ZaZYlSWmUVjeKyjAFnX32GTRSIaISMqVIr0gP+X5nzop9nXM583/m3Jmr3HHDvMxZ+1trfWf/rL32OoQOb9Th/uMyAZdHwBAyMGPatPH5ZHK8wzwOROMB2J9tJ8F80ic6lcznTx48dOjkUJnV1inQLcRNBaJZBMxkYFaTTn1HRHsKzJ4x5niTfSOLt5wApdQt8P1FALoB3BDZknqCRMfA7MFxdmqtf24JZhGkZQRIKSc6wDIAjwEY0chIAnqZ6CwzEwGjAVzZqA+APgDv+sBWY8yJCPINRQZNwIyurjGFZHIZEVnnr6ih0WPmHof5UJ6o1/O8s+Vy8+bNS/zX2zumL5kcA99XRHQ3gK4aeOeZeWsin9968PDhMw29rCMwKAKUUlPg+x8DmFShg/kHBvYXmL/J5XKn4hiplJrAzHOIeQ4A+ytvJ4h5edbz9sXBt31iEzBDSukDBwAky5QfIWBT1phdcY2q1i8j5QIGVgK4rex5AcBD2pidcfTFIiAjxFwm2lOm8DSATSNHjdrU09NjjWp5s9Pk33PnLAn2d3WZgpXamM3NKm2aACXlCwDWlSgi+jJRKDx9IOZQb9ZopdR1xalXPhrWa2NKbWsA3hQBSson7Fsuw1yrjdnQrBOtkFdSHgSQCWMR811Zz/s+Kn5kApSUDwLYUaIMmJ815ouoytohlxHiQyZaHMZ2gPRBY0wUfZEIyAgxm4ksq4kBUObF2vNKCImisB0yaSFeI6KnQth5OE6X1vpoI30NCbD7vD9iRBbAxACMmHdnPW9BI/ChfK6k3G53g5DO405f38xGcUJDAtJCbCCiZ0NvXmvPK5l3Q+loPV1KSrszzQ1kmPll1/Oeq9enLgHF8PanUIR3OuH73QdyuT8uFafDdtjACb5vR2uwRZ73gan1wua6BCgp3yruuYGe1dqYNy5F5wOblJRPAtgYsnGTNmZVLZtrElA81dm3HxxsjowcNaqrXUFOq0gtBkuHQxFjHxxnaq1TZG0Cyt4+AQtbEd4qKdcRsISBvXCcV7XWf7bK+QCnGDZ/GsLdrI2x0WNFq01AOn0UzJOLPfZqY+4crKFKyrUAXhxYpIhWuK67ZbC41forIfaC6I7is1+1MTdGJkBKOckBfg8Zusx13fcGY6iS8hkAr5Rg+H5G53J6MLi1+iopVwN4PXieYL75gOf9Ui5fdQRk0umlzLwtEPaBscaYf+IaWm5MEed5bcxLcTEb9esW4voC0W8huTXamPDi2P+oKgFKym8B2IQE7JneNWZ2I4U134QQK0Fkd5Nwq2pMXB21+qWlPEbArUVH92er+FGLAB4AZX5Ue977cYxTQjwOotI5zrxce947cfCa7WMXXAD29NrftDEV/lb8YVPXfjI5sDKT70/J5nLHmlYuxCMgKlk3mGip67ofNIsVVz6dTncR86Ggv5PPTyhPuVcQIKWc5QADKaYC8+hqObx6RikhHgZRuaOL4mZt4hJw+/TpY/OJxN9Bfx+YbYzZH8arIECVvblqw6aB84tA9FFYhokWuK67O64jcfsVg6J8velcSYCUduuwW4hdIXuzxoyJaoCSciGAT0rkmVu7zRHtg+//GHX7VFLaDHSQct+ojVlTfwRI+RWAe/qFiI5p150ShQAl5XwAn0WRHbQM0Xbtukui4IR3AgBfa2Pu7SgCVGlEG4mAYTUFMlKe4Qs3T7ZFmALDaBG0Hisp68Y0w3obFEJclSDqbWobHE6BUCaVmsyOM5AYjRQIRRk2UVbffpyLHAqnhVhORG8H9kYKhYsEDIvDkJLS3g2IYkwT/TA0HI7DqVRqXNJxwqU20Y/DwyEhkhZiFRG9GQz/phIi/dOgk1NixXWgJCXeeUnRC8VOnZsWrzYK7CmxYy5GLAHVrsbgOJl25PKjxhb15LpTqXEFx3FbdjVmlVVcjgItuSNohcPlGCqd7gHzfcH/g74ctUA1rse3ZD1vRTuciIuppLS3wOE0e2uux61B1Qok4iZL4zpYr19GyvsZ+Dwk07oCiQC0WokMHOcarfVf7XAqKqYSoiIH2fISmRAJlUVSF7FUJiPELiZ6IExW24qkQiRUK5PbAaL1QzUaulOpawtE20CkykZKe8vkAmUdXSgZkNDRpbID06GTi6UHRkInl8uHF6CO/WCiIhzt1E9mqgUuHfnRVL0IruM+m4sazl5MuYa1whfTuKHQfZmAoWD5UtbxPw6Pum6CDZJRAAAAAElFTkSuQmCC">
</a> </a>
<figure class="forrestgump"> <figure class="forrestgump">
<figcaption> <figcaption>
<h1 style="color: #6b0b0c;">404<br>Not Found!</h1> <h1>404<br>Not Found!</h1>
<h3 style="color: #14206a;">Life was like a box of chocolates, you never know what you're going to get.</h3> <h3>Life was like a journey on the sea, you never know what you're going to get.</h3>
<h3>亲,获取不到该路径的页面呢,请检查一下哦,可能你还需要仔细阅读 <a href="https://hexo.io/docs/">Hexo</a><a
href="https://shen-yu.gitee.io/2019/ayer/">Ayer</a> 的说明文档~</h3>
</figcaption> </figcaption>
<img src="/images/forrestgump.png"> <img src="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/404.jpg">
</figure> </figure>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,40 +0,0 @@
@charset "utf-8"
//
// 404
html, body, div, figure, img
margin 0
padding 0
body
font-family "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "", Arial, sans-serif;
.notfound
position absolute
top 50%
left 50%
transform translate(-50%, -50%)
figure.forrestgump
position relative
width 100%
img
width 100%
figcaption
float right
clear right
width 100%
padding 0
text-align right
@media (min-width: 768.02px)
figure.forrestgump
width 30rem
figcaption
width 60%
padding 0 2rem
.notfound-link
position absolute
z-index 9
margin-top 2rem

View File

@@ -1,13 +0,0 @@
// Categories
.category-list
list-unstyled()
margin-right -.5rem
margin-left -.5rem
> .category-list-item
display inline-block
padding .5rem 1rem
&:before
content "\efde"
font-family remixicon
margin-right .5rem

View File

@@ -1,17 +0,0 @@
.footer
border-top border-width solid #bbb
padding 3rem 0
.outer
&>ul
position relative
display flex
justify-content space-between
&:first-child
border-bottom border-width solid darken(froth-light,10%)
li
display inline-block
padding .5rem 0
span
margin-right 6px

View File

@@ -1,154 +0,0 @@
highlight-background = #2d2d2d
highlight-code = #f2f2f2
highlight-code-color = #c7254e
highlight-current-line = #efefef
highlight-selection = #000
highlight-foreground = #dedede
highlight-comment = #8e908c
highlight-red = #f2777a
highlight-orange = #f99157
highlight-yellow = #ffcc66
highlight-green = #99cc99
highlight-aqua = #66cccc
highlight-blue = #6699cc
highlight-purple = #cc99cc
$code-block
background highlight-background
padding 1.5rem
margin 1.5rem 0
border-radius .4rem
overflow auto
color highlight-foreground
$line-numbers
color highlight-comment
.article-entry
ol>li>ul
padding-inline-start: 2rem;
pre, code
font-family inherit
text-shadow none
code
color highlight-code-color
background highlight-code
padding .25rem .6rem
border-radius(.4rem)
pre
@extend $code-block
code
background none
padding 0
.highlight
@extend $code-block
pre
border none
margin 0
padding 0
table
margin 0
width auto
border none
td
border none
padding 0
figcaption
clearfix()
font-size 85%
color highlight-comment
line-height 1rem
margin-bottom 1rem
a
float right
.gutter
-webkit-user-select none
-moz-user-select none
-ms-user-select none
user-select none
.gutter pre
@extend $line-numbers
text-align right
padding-right 1.5rem
.line
height inherit
.line.marked
background highlight-selection
.gist
background highlight-background
.gist-file
border none
margin 0
.gist-data
background none
border none
.line-numbers
@extend $line-numbers
background none
border none
.line-data
padding 0 !important
.highlight
margin 0
padding 0
border none
.gist-meta
background highlight-background
color highlight-comment
padding 0
margin-top 1rem
a
font-weight normal
&:hover
text-decoration underline
pre
.comment
.title
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
.class
.ruby .class .title
.css .rules .attribute
color highlight-green
.string
.value
.inheritance
.header
.ruby .symbol
.xml .cdata
color highlight-green
.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

View File

@@ -1,14 +0,0 @@
// Tags
.tag-list
list-unstyled()
margin-right -.5rem
margin-left -.5rem
> .tag-list-item
display inline-block
padding .5rem 1rem
font-size 120%
&:before
content "\eec3"
font-family remixicon
margin-right .5rem

File diff suppressed because it is too large Load Diff

35
source/css/clipboard.styl Normal file
View File

@@ -0,0 +1,35 @@
//
if hexo-config('copy_btn') == true
.highlight
position: relative
.btn-copy
z-index: 1
display: inline-block
cursor: pointer
border: none
disable-user-select()
-webkit-appearance: none
font-size: 12px
font-weight: bold
padding: 3px 6px
>i
margin-right: 4px
font-size: 10px
transform: translateY(1px);
color: #333
background: rgba(255,255,255,.8)
border-radius: 2px
position: absolute
top: 0
right: 0
opacity: 0
transition: all linear .2s
&:hover
background: rgba(255,255,255,.7)
.highlight:hover .btn-copy
opacity: 1
.article pre:hover .btn-copy
opacity: 1

Some files were not shown because too many files have changed in this diff Show More