Merge pull request #23 from xaoxuu/master

test
master
H 4 years ago committed by GitHub
commit 909c11d920
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 82
      .github/ISSUE_TEMPLATE/1-a.md
  2. 80
      .github/ISSUE_TEMPLATE/1-b.md
  3. 77
      .github/ISSUE_TEMPLATE/bug-report.md
  4. 22
      .github/ISSUE_TEMPLATE/feature-request.md
  5. 15
      .github/ISSUE_TEMPLATE/other-issue.md
  6. 55
      .github/ISSUE_TEMPLATE/question-report.md
  7. 119
      _config.yml
  8. 2
      layout/_cover/index.ejs
  9. 38
      layout/_meta/counter.ejs
  10. 14
      layout/_meta/title.ejs
  11. 15
      layout/_partial/article.ejs
  12. 2
      layout/_partial/footer.ejs
  13. 31
      layout/_partial/head.ejs
  14. 49
      layout/_partial/header.ejs
  15. 48
      layout/_partial/meta.ejs
  16. 127
      layout/_partial/scripts.ejs
  17. 20
      layout/_third-party/clipboard.ejs
  18. 26
      layout/_third-party/comments.ejs
  19. 53
      layout/_third-party/fancybox.ejs
  20. 63
      layout/_third-party/mathjax.ejs
  21. 8
      layout/_third-party/share.ejs
  22. 16
      layout/_widget/blogger.ejs
  23. 10
      layout/_widget/group.ejs
  24. 2
      layout/_widget/list.ejs
  25. 4
      layout/_widget/load.ejs
  26. 12
      layout/_widget/references.ejs
  27. 2
      layout/archive.ejs
  28. 2
      layout/category.ejs
  29. 2
      layout/links.ejs
  30. 2
      layout/tag.ejs
  31. 6
      scripts/tags/btns.js
  32. 53
      scripts/tags/checkbox.js
  33. 4
      scripts/tags/fancybox.js
  34. 4
      scripts/tags/folding.js
  35. 44
      scripts/tags/image.js
  36. 4
      scripts/tags/media.js
  37. 7
      scripts/tags/tabs.js
  38. 27
      source/css/_base/index.styl
  39. 3
      source/css/_defines/color.styl
  40. 2
      source/css/_defines/effect.styl
  41. 4
      source/css/_defines/fonts.styl
  42. 9
      source/css/_highlight/index.styl
  43. 48
      source/css/_layout/article.styl
  44. 4
      source/css/_layout/cover.styl
  45. 12
      source/css/_layout/footer.styl
  46. 81
      source/css/_layout/main.styl
  47. 78
      source/css/_layout/navbar.styl
  48. 1
      source/css/_layout/pagination.styl
  49. 2
      source/css/_layout/search.styl
  50. 77
      source/css/_layout/sidebar.styl
  51. 6
      source/css/_layout/toc.styl
  52. 36
      source/css/_tag-plugins/btns.styl
  53. 191
      source/css/_tag-plugins/checkbox.styl
  54. 13
      source/css/_tag-plugins/folding.styl
  55. 26
      source/css/_tag-plugins/media.styl
  56. 2
      source/css/_tag-plugins/note.styl
  57. 9
      source/css/_tag-plugins/span.styl
  58. 9
      source/css/_tag-plugins/tabs.styl
  59. 7
      source/css/_third-party/aplayer.styl
  60. 72
      source/css/_third-party/fancybox.styl
  61. 11
      source/css/_third-party/mathjax.styl
  62. 176
      source/css/_third-party/valine.styl
  63. 10
      source/img/algolia.svg
  64. 2
      source/img/azure.svg
  65. 2
      source/img/baidu.svg
  66. 3748
      source/js/valine.js

@ -0,0 +1,82 @@
---
name: 帮助流程A:使用遇到问题(主题未经修改)
about: 此流程适用于直接使用主题搭建博客的用户,在仅仅修改了主题配置文件、Hexo配置文件、增加了自己的文章,这种情况下无法成功搭建或者部署的问题。
title: ''
labels: 'help-a'
assignees: ''
---
<!-- 如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。 -->
## 自检报告
分类:使用遇到问题(主题未经修改)
<!-- 如果您未按照模板中的步骤进行自检,我们可能不会阅读您的 Issue。 -->
<!-- 90% 的问题可通过自检解决。 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来完成选择) -->
### 第一步 <!-- 60% 的问题通过这一步就解决了。 -->
- [ ] 在 [Volantis](https://volantis.js.org) 文档中搜索关键词,并未找到相关内容。
- [ ] 在 [Hexo](https://hexo.io/zh-cn/docs/) 官方文档 中搜索关键词,并未找到相关内容。
### 第二步 <!-- 30% 的问题通过这一步就解决了。 -->
下载[文档源码](https://github.com/xaoxuu/volantis-docs/),然后下载主题源码到 themes/volantis ,执行 `npm install` 安装依赖包,执行 `hexo s` 运行,查看结果是否存在相同的问题。
- A. 如果正常,请一步一步将配置文件修改为您原来的设定,直至找到出问题的地方。
- B. 如果依然存在异常,请检查 Hexo 环境配置,或者重新安装 Hexo。
- [ ] 我已完成上述操作,结果是:____
### 第三步
- [ ] 我已经将主题升级到最新版本。
## 问题描述
<!-- 尽可能详细地描述您的问题 -->
## 环境信息
<!-- 请务必提供以下信息 -->
### 复现地址:
<!-- 如果使用文档官网源码本地运行也存在异常,可以不用提供复现地址。 -->
### 截图:
<!-- 不同系统、浏览器效果可能不同,提供截图有助于发现问题所在。 -->
### 浏览器、操作系统
### 站点配置文件
<!-- 只粘贴 `blog/_config.yml` 中修改过的部分 -->
```yml
```
### 主题配置文件
<!-- 只粘贴 `themes/volantis/_config.yml` 中修改过的部分 -->
```yml
```
#### 更多信息
<!-- 要求提供时再回来补全即可 -->
#### node.js & npm
<!-- 粘贴 `node -v && npm -v` 输出的信息 -->
```
```
#### package.json
<!-- 粘贴 `npm ls --depth 0` 输出的信息 -->
```
```

@ -0,0 +1,80 @@
---
name: 帮助流程B:使用遇到问题(主题文件 ejs、js、css、第三方插件等有修改)
about: 此流程适用于 fork 主题并对主题文件(ejs、js、css 等)进行了修改后搭建博客的用户,无法成功搭建或者部署的问题。
title: ''
labels: 'help-b'
assignees: ''
---
<!-- 如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。 -->
## 自检报告
分类:使用遇到问题(主题文件 ejs、js、css、第三方插件等有修改)
<!-- 如果您未按照模板中的步骤进行自检,我们可能不会阅读您的 Issue。 -->
<!-- 80% 的问题可通过自检解决。 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来完成选择) -->
### 第一步 <!-- 80% 的问题通过这一步就解决了。 -->
查看未经修改的主题是否也存在此问题:
- A. 未经修改的主题也存在此问题,请使用 issue 模板「帮助流程A. 使用遇到问题(主题未经修改)」。
- B. 未经修改的主题不存在此问题,在 git 历史中新建分支还原修改,直至找到出问题的地方。
- [ ] 我已完成上述操作,结果是:____
### 第二步
这部分内容是否与第三方插件有关?
- A. 是主题文档中提到过的第三方插件(意味着有主动兼容),请在问题描述中描述清楚。
- B. 是主题文档中没有提到过的第三方插件,可能存在没有兼容的情况,请使用 issue 模板「提交一个建议」。
## 问题描述
<!-- 尽可能详细地描述您的问题 -->
## 环境信息
<!-- 请务必提供以下信息 -->
### 复现地址:
<!-- 如果使用文档官网源码本地运行也存在异常,可以不用提供复现地址。 -->
### 截图:
<!-- 不同系统、浏览器效果可能不同,提供截图有助于发现问题所在。 -->
### 浏览器、操作系统
### 站点配置文件
<!-- 只粘贴 `blog/_config.yml` 中修改过的部分 -->
```yml
```
### 主题配置文件
<!-- 只粘贴 `themes/volantis/_config.yml` 中修改过的部分 -->
```yml
```
#### 更多信息
<!-- 要求提供时再回来补全即可 -->
#### node.js & npm
<!-- 粘贴 `node -v && npm -v` 输出的信息 -->
```
```
#### package.json
<!-- 粘贴 `npm ls --depth 0` 输出的信息 -->
```
```

@ -1,67 +1,72 @@
---
name: Bug Report
about: Something isn't working as expected
name: 反馈一个明确的BUG
about: 此流程适用于您已经定位到了问题的具体所在,不需要协助定位问题。希望开发者予以修正。
title: ''
labels: 'new,question'
labels: 'bug-report'
assignees: ''
---
If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
<!-- 如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。 -->
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## BUG描述
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
<!-- 尽可能详细地描述您的问题,包括预期与实际表现的区别 -->
- [ ] I am using [the latest](https://github.com/xaoxuu/hexo-theme-volantis/releases/latest) version of Volantis.
- [ ] I have reviewed [guidelines for Volantis](https://volantis.js.org), which does not help me.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current issues, which does not help me.
## 复现报告
***
分类:反馈一个明确的BUG
## Expected behavior <!-- 预期行为 -->
<!-- 如果您未按照模板中的步骤进行自检,我们可能不会阅读您的 Issue。 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来完成选择) -->
## Actual behavior <!-- 实际行为 -->
<!-- Please provide at least one of the following information (请至少提供以下的一项信息) -->
- [ ] 将主题升级至最新版本。
- [ ] 下载主题官网源码运行,经过一定的步骤,可以复现此BUG。
- Links to demo site with this issue: N/A
- Links to repository or source code of the blog: N/A
### 复现步骤
1. xxx
2. xxx
3. xxx
## 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` 输出的信息) -->
```
### 站点配置文件
<!-- 只粘贴 `blog/_config.yml` 中修改过的部分 -->
```yml
```
### Hexo Configuration
<!-- Paste configuration from Hexo `_config.yml` (粘贴 Hexo `_config.yml` 中的内容) -->
### 主题配置文件
<!-- 只粘贴 `themes/volantis/_config.yml` 中修改过的部分 -->
```yml
```
### Volantis Configuration
<!-- Paste ONLY CHANGED CONFIGURATION from Volantis `_config.yml` (只粘贴 Volantis 主题配置文件 `_config.yml` 中修改过的部分) -->
```yml
#### 更多信息
<!-- 要求提供时再回来补全即可 -->
#### node.js & npm
<!-- 粘贴 `node -v && npm -v` 输出的信息 -->
```
```
## Other Information <!-- (Like Browser, System, Screenshots) -->
#### package.json
<!-- 粘贴 `npm ls --depth 0` 输出的信息 -->
```
```

@ -1,21 +1,21 @@
---
name: Feature Request
about: Suggest an idea for this project
name: 提交一个建议
about: 希望增加或者调整某项功能
title: ''
labels: 'new,suggest'
labels: 'suggest'
assignees: ''
---
If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
<!-- 如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。 -->
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
### 自检报告
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/xaoxuu/hexo-theme-volantis/releases/latest) version of Volantis.
- [ ] I have reviewed [guidelines for Volantis](https://volantis.js.org), which does not help me.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current issues, which does not help me.
- [ ] 我已阅读主题文档,确认不存在此功能。
- [ ] 我已阅读Hexo官方文档,确认不存在此功能。
## 需求描述
<!-- 如果能够提供参考链接或者示意图更好 -->

@ -1,21 +1,14 @@
---
name: Other Issue
about: Others
about: 要表述的内容不属于上述模板的范围
title: ''
labels: 'new'
labels: ''
assignees: ''
---
If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
<!-- 如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。 -->
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/xaoxuu/hexo-theme-volantis/releases/latest) version of Volantis.
- [ ] I have reviewed [guidelines for Volantis](https://volantis.js.org), which does not help me.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current issues, which does not help me.
- [ ] 我要说的内容与帮助或者BUG、建议都无关。(如果有关,请使用相关模板)

@ -1,55 +0,0 @@
---
name: Question Report
about: I have a question for Volantis (e.g. Customize)
title: ''
labels: 'new,question'
assignees: ''
---
If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->
<!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->
- [ ] I am using [the latest](https://github.com/xaoxuu/hexo-theme-volantis/releases/latest) version of Volantis.
- [ ] I have reviewed [guidelines for Volantis](https://volantis.js.org), which does not help me.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current issues, which does not help me.
***
## Describe your question <!-- 描述您的问题 -->
## 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` 输出的信息) -->
```
```
### Hexo Configuration
<!-- Paste configuration from Hexo `_config.yml` (粘贴 Hexo `_config.yml` 中的内容) -->
```yml
```
### Volantis Configuration
<!-- Paste ONLY CHANGED CONFIGURATION from Volantis `_config.yml` (只粘贴 Volantis 主题配置文件 `_config.yml` 中修改过的部分) -->
```yml
```
## Other Information <!-- (Like Browser, System, Screenshots) -->

@ -1,15 +1,6 @@
############################### Theme Information ###############################
info:
name: Volantis # This is theme's name, not your blog's name.
version: '2.4.3' # This is theme's version.
docs: https://volantis.js.org/ # This is theme's URL.
cdn:
css:
js:
############################### Style ###############################
style:
font_smoothing: false # font-smoothing for webkit
max_width: 1080px # Sum of body width and sidebar width (This limit will be exceeded when the device width is greater than 2000px, reaching 75% of the total width)
scrollbar:
size: 4px
@ -36,12 +27,16 @@ style:
note: # style for default note: {% note text %}
icon: '\f054'
color: ''
checkbox:
enable: true # enable for user
color: '' # color for default checkbox
gap:
h2: 48px # Spacing above H2 (only px unit)
h3: 24px # Spacing above H3 (only px unit)
h4: 16px # Spacing above H4 (only px unit)
paragraph: 1rem # Paragraph spacing between paragraphs
row: .5rem # Paragraph spacing between other elements
line_height: 1.65 # normal, 1.5, 1.75, 2 ...
border_radius:
card: 8px
codeblock: 4px
@ -73,6 +68,7 @@ style:
url: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-fonts/UbuntuMono/UbuntuMono-Regular.ttf
weight: normal
style: normal
offset: 0.1rem # Correct baseline for zh-CN
codefont:
fontfamily: 'Menlo, UbuntuMono, Monaco'
# name: 'Monaco'
@ -82,6 +78,7 @@ style:
# color:
# site: '#21232F' # Website background color
# site_inner: '#fff' # Text color inside the website background
# site_footer: '#666' # Footer text color inside the website background
# card: '#444' # Card background color
# text: '#fff' # The color of the text on the card.
# theme: '#ff9800' # Main color
@ -182,7 +179,7 @@ layout:
# 文章布局,参数继承自 on_page
on_post:
# 文章页脚,自动在每一篇文章末尾添加
article_footer: [references, copyright, donate]
article_footer: [references, related_repos, copyright, donate]
# 其他的页面布局暂时等于 on_list
@ -231,6 +228,8 @@ meta:
img: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/logo/128/weibo.png
# - id: qrcode # 当id为qrcode时需要安装插件 npm i -S hexo-helper-qrcode
# img: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/logo/128/wechat.png
# - id: telegram
# img: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/logo/128/telegram.png
# 链接
btns:
edit:
@ -269,8 +268,10 @@ widget:
# blogger info widget
blogger:
class: blogger
display: [desktop] # [desktop, mobile]
display: [desktop, mobile] # [desktop, mobile]
avatar: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/avatar/avatar.png
shape: rectangle # circle, rectangle
url: /about/
title:
subtitle:
jinrishici: true # Poetry Today. You can set a string, and it will be displayed when loading fails.
@ -346,6 +347,12 @@ widget:
header:
icon: fas fa-quote-left
title: 参考资料
related_repos:
class: references # is subclass of list
display: [desktop, mobile] # [desktop, mobile]
header:
icon: fab fa-github
title: 源码链接
# You can add your own widget here or 'blog/source/_data/widget.yml'
# class: text, list, grid, qrcode, page, ... see more at https://volantis.js.org/
@ -396,20 +403,18 @@ plugins:
js: https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/highlight.min.js
css: https://cdn.jsdelivr.net/npm/highlight.js@9.18.1/styles/solarized-light.css
# more: https://www.jsdelivr.com/package/npm/highlight.js?path=styles
# Picture Zoom
fancybox:
css: https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css
js: https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js
# Page Scrolling Animation
scrollreveal: #https://cdn.jsdelivr.net/npm/scrollreveal@4.0.5/dist/scrollreveal.min.js
# https://scrollrevealjs.org/api/reveal.html
scrollreveal:
js: https://cdn.jsdelivr.net/npm/scrollreveal@4.0.6/dist/scrollreveal.min.js
distance: 8px
duration: 800 # ms
interval: 100 # ms
scale: 1 # 0.1~1
# Codeblock Copy Button
clipboard: https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js
# mathjax
mathjax: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
######## Plugins for SEO:
# Traffic statistics (very slow loading)
busuanzi: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-busuanzi@2.3/js/busuanzi.pure.mini.js
@ -438,6 +443,7 @@ plugins:
- https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/41F215B9-261F-48B4-80B5-4E86E165259E.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/BBC19066-E176-47C2-9D22-48C81EE5DF6B.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/B18FCBB3-67FD-48CC-B4F3-457BA145F17A.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/35F12181-F0E9-45BD-B134-37E4B4A660CF.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
# - https://cdn.jsdelivr.net/gh/xaoxuu/cdn-wallpaper/abstract/B951AE18-D431-417F-B3FE-A382403FF21B.jpeg
@ -475,29 +481,69 @@ plugins:
comments:
title: <i class='fas fa-comments'></i> 评论
subtitle:
service: valine # valine, disqus, gitalk, livere
service: valine # valine, minivaline, disqus, gitalk, livere
# Valine
# https://valine.js.org/
valine:
appId: # your appId
appKey: # your appKey
js: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-volantis@2.4.2/js/valine.js
appId: dogUA2FSKGTo029M1SEwGROT-MdYXbMMI # your appId
appKey: u0NdtQ8nvHoMdJPSYqm1LRxE # your appKey
js: https://cdn.jsdelivr.net/npm/valine@1.4/dist/Valine.min.js
path: # All pages use the same path (share the same comments data)
meta: nick,mail,link #valine comment header info
meta: nick,mail,link # valine comment header info
requiredFields: ['nick','mail']
enableQQ: true # Unstable avatar link
placeholder: 快来评论吧~ # valine comment input placeholder(like: Please leave your footprints )
avatar: mp # gravatar style https://valine.js.org/avatar
avatar: robohash # gravatar style https://valine.js.org/avatar
pageSize: 10 # comment list page size
verify: true # valine verify code (true/false)
notify: true # valine mail notify (true/false)
lang: zh-cn
highlight: true
visitor: false # unavailable for now...
visitor: true
mathJax: false
# MiniValine
# https://github.com/MiniValine/MiniValine
minivaline:
appId: # Your leancloud application appid
appKey: # Your leancloud application appkey
js: https://unpkg.com/minivaline@latest/dist/MiniValine.min.js
placeholder: Write a Comment # Comment box placeholder
path: # All pages use the same path (share the same comments data)
adminEmailMd5: # The MD5 of Admin Email to show Admin Flag.
math: true # Support MathJax.
md: true # Support Markdown.
# 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:
NoRecordIP: false # Do not record commenter IP.
maxNest: 6 # Sub-comment maximum nesting depth.
pageSize: 6 # Pagination size.
# Expression Url.
# https://github.com/MiniValine/MiniValine/blob/master/.github/FAQ.md#how-to-customize-emoticons
emoticonUrl:
- https://cdn.jsdelivr.net/gh/MiniValine/Bilibilis@master
- https://cdn.jsdelivr.net/npm/alus
# Disqus
# https://disqus.com
disqus:
shortname:
# Gitalk
# https://gitalk.github.io/
gitalk:
clientID:
clientSecret:
repo:
owner:
admin: # []
# Vssue
# https://vssue.js.org/zh/
vssue:
owner:
repo:
clientId:
clientSecret:
# LiveRe
# https://www.livere.com
livere:
uid:
@ -510,7 +556,7 @@ comments:
search:
enable: true
service: hexo # hexo, google, algolia, azure, baidu
js: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-volantis@2.4/js/search.js
js: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-volantis@2.6.5/js/search.js
google:
apiKey:
engineId:
@ -524,3 +570,14 @@ search:
queryKey:
baidu:
apiId:
############################### Theme Information ###############################
info:
name: Volantis # This is theme's name.
version: '2.6.6' # This is theme's version.
docs: https://volantis.js.org/ # This is theme's URL.
cdn:
js: https://cdn.jsdelivr.net/gh/xaoxuu/cdn-volantis@2.6.5/js/app.js
css:

@ -33,7 +33,7 @@
target="<%- value.target %>"
<% } %>
id="<%= url_for(value.url).replace(/\/|%|\./g, "")?url_for(value.url).replace(/\/|%|\./g, ""):"home" %>">
<i class='<%= value.icon %> fa-fw'></i>&nbsp;<%= __('navbar.'+value.name) == ('navbar.'+value.name) ? value.name : __('navbar.'+value.name) %>
<% if (value.icon) { %><i class='<%= value.icon %> fa-fw'></i><% } %><%- value.name %>
</a>
</li>
<%})%>

@ -1,25 +1,27 @@
<% if(!isPostList){ %>
<% if (theme.comments.valine && theme.comments.valine.appId && theme.comments.valine.visitor) { %>
<div class="new-meta-item browse valine">
<a class='notlink'>
<i class="<%- theme.meta.counter.icon %> fa-fw" aria-hidden="true"></i>
<span id="<%- url_for(page.path) %>" class="leancloud_visitors" data-flag-title="<%- page.title %>">
<p>
<span class="leancloud-visitors-count">
<i class="fas fa-spinner fa-spin fa-fw" aria-hidden="true"></i>
</span>
</p>
</span>
</a>
</div>
<% } else if (theme.plugins.busuanzi) { %>
<% if (theme.comments.valine && theme.comments.valine.appId && (theme.comments.valine.visitor == true)) { %>
<div class="new-meta-item browse valine">
<a class='notlink'>
<i class="<%- theme.meta.counter.icon %> fa-fw" aria-hidden="true"></i>
<%
var path = post.path || page.path;
if (path.length > 9 && (path.substring(path.length - 10) == 'index.html')) {
path = path.substring(0, path.length - 10);
}
%>
<span id="<%- url_for(path) %>" class="leancloud_visitors" data-flag-title="<%- post.title || page.title %>">
<p>
<span class="leancloud-visitors-count"></span>
</p>
</span>
</a>
</div>
<% } else if (theme.plugins.busuanzi) { %>
<% if(!isPostList){ %>
<div class="new-meta-item browse busuanzi">
<a class='notlink'>
<i class="<%- theme.meta.counter.icon %> fa-fw" aria-hidden="true"></i>
<p>
<span id="busuanzi_value_page_pv">
<i class="fas fa-spinner fa-spin fa-fw" aria-hidden="true"></i>
</span>
<span id="busuanzi_value_page_pv"></span>
</p>
</a>
</div>

@ -1,15 +1,13 @@
<% if(isPostList){ %>
<h2 class="title">
<a href="<%- url_for(post.link || post.path) %>">
<%- post.title ? post.title : date(post.date, theme.meta.date.format) %>
<%- (post.title || post.seo_title) ? (post.title || post.seo_title) : date(post.date, theme.meta.date.format) %>
</a>
</h2>
<% } else { %>
<% if (post.title || page.title || config.title) { %>
<h1 class="title">
<a href="<%- url_for(post.link || post.path) %>">
<%- post.title ? post.title : date(post.date, theme.meta.date.format) %>
</a>
</h1>
<% } %>
<h1 class="title">
<a href="<%- url_for(post.link || post.path) %>">
<%- (post.title || post.seo_title) ? (post.title || post.seo_title) : date(post.date, theme.meta.date.format) %>
</a>
</h1>
<% } %>

@ -1,7 +1,7 @@
<% var sections = page.body ? page.body : theme.layout.on_page.body; %>
<% sections.forEach(function(widget_id){ %>
<% if (widget_id == 'article') { %>
<article id="<%= post.layout %>" class="post white-box <%- theme.style.body.effect.join(' ') %> article-type-<%= post.layout %>" itemscope itemprop="blogPost">
<article id="<%= post.layout %>" class="post white-box reveal <%- theme.style.body.effect.join(' ') %> article-type-<%= post.layout %>" itemscope itemprop="blogPost">
<%- partial('meta', {post: post, position: 'header'}) %>
<section class="article typo">
<div class="article-entry" itemprop="articleBody">
@ -10,12 +10,13 @@
<% }) %>
<%- post.content %>
<% if ((page.meta && page.meta.article_footer && page.meta.article_footer.length > 0) || (theme.layout.on_post.article_footer && (page.layout == 'post'))) { %>
<br>
<% if (page.meta && page.meta.article_footer && page.meta.article_footer.length > 0) { %>
<%- partial('../_widget/load', {widgets: page.meta.article_footer, where: 'article'}) %>
<% } else { %>
<%- partial('../_widget/load', {widgets: theme.layout.on_post.article_footer, where: 'article'}) %>
<% } %>
<div class='article_footer'>
<% if (page.meta && page.meta.article_footer && page.meta.article_footer.length > 0) { %>
<%- partial('../_widget/load', {widgets: page.meta.article_footer, where: 'article'}) %>
<% } else { %>
<%- partial('../_widget/load', {widgets: theme.layout.on_post.article_footer, where: 'article'}) %>
<% } %>
</div>
<% } %>
</div>
<% if(post.layout == 'post' || post.layout == 'page'){ %>

@ -31,7 +31,7 @@
<%- __('footer.use') %>
<a href="<%- theme.info.docs %>" target="_blank" class="codename"><%- theme.info.name %></a>
<%- __('footer.theme') %><% if (theme.plugins.busuanzi) { %><%- __('symbol.comma') %><%- __('footer.total_views') %>
<span id="busuanzi_value_site_pv"><i class="fas fa-spinner fa-spin fa-fw" aria-hidden="true"></i></span>
<span id="busuanzi_value_site_pv"><i class="fas fa-circle-notch fa-spin fa-fw" aria-hidden="true"></i></span>
<%- __('footer.times') %>
<% } %>
<% } else if (item == 'copyright') { %>

@ -28,7 +28,7 @@
<!-- 页面元数据 -->
<%
var title = page.seotitle || page.title;
var title = page.seo_title || page.title;
var keywords = page.keywords || '';
var description = page.description || '';
if (is_archive()) {
@ -84,9 +84,8 @@
<!-- link -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.13/css/all.min.css">
<% if (theme.plugins.fancybox && theme.plugins.fancybox.css) { %>
<%- css(theme.plugins.fancybox.css) %>
<% } %>
<%- css('https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css') %>
<% if (theme.plugins.nodewaves && theme.plugins.nodewaves.css) { %>
<%- css(theme.plugins.nodewaves.css) %>
<% } %>
@ -99,6 +98,10 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10/dist/APlayer.min.css">
<% } %>
<% if (theme.comments.vssue && theme.comments.vssue.clientId) { %>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/meteorlxy/vssue@1.4.4/packages/vssue/dist/vssue.min.css">
<% } %>
<!-- import link -->
<% if (config.import && config.import.link){ %>
<% (config.import.link||[]).forEach(function(item){ %>
@ -110,7 +113,7 @@
<%- css(theme.plugins.highlightjs.css) %>
<% } %>
<% } %>
<% if (theme.info.cdn && theme.info.cdn.css) { %>
<% if (config.use_cdn && theme.info.cdn && theme.info.cdn.css) { %>
<%- css(theme.info.cdn.css) %>
<% } else { %>
<%- css('css/style.css') %>
@ -124,12 +127,17 @@
<% if (config.google_analytics_key) { %>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<%- config.google_analytics_key %>"></script>
<script>
setTimeout(function() {
let script = document.createElement('script');
script.src = "https://www.googletagmanager.com/gtag/js?id=<%- config.google_analytics_key %>";
script.defer=true;
document.body.appendChild(script);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%- config.google_analytics_key %>');
}, 5000);
</script>
<% } %>
<% if (config.baidu_analytics_key) { %>
@ -137,10 +145,13 @@
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?<%= config.baidu_analytics_key %>";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
setTimeout(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?<%= config.baidu_analytics_key %>";
hm.defer=true;
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
}, 5000);
})();
</script>
<% } %>

@ -43,29 +43,27 @@
}
menu_list = menu_list || [];
%>
<% function menu(value) { %>
<% function menu(value, type) { %>
<% if (value.name == 'hr') { %>
<hr>
<% } else if (value.icon && value.icon.indexOf('fa-compact-disc') > -1 && value.url == undefined && value.rows == undefined) { %>
<li>
<a class="flat-box">
<i class='<%= value.icon %> fa-fw music'></i>
<%- value.name %>
</a>
<ul class="list-v">
<li class='header'>
<div class="aplayer-container">
<%- partial('../_third-party/aplayer', {post: null, where: 'footer'}) %>
</div>
</li>
</ul>
<li>
<% if (type == 'pc') { %>
<li>
<a class="flat-box">
<i class='<%= value.icon %> fa-fw music'></i><%- value.name %>
</a>
<ul class="list-v">
<li>
<div class="aplayer-container">
<%- partial('../_third-party/aplayer', {post: null, where: 'footer'}) %>
</div>
</li>
</ul>
<li>
<% } %>
<% } else if (value.name != undefined && value.url == undefined && value.rows == undefined) { %>
<li class='header'>
<% if (value.icon) { %>
<i class='<%= value.icon %> fa-fw'></i>
<% } %>
<%- value.name %>
<% if (value.icon) { %><i class='<%= value.icon %> fa-fw'></i><% } %><%- value.name %>
</li>
<% } else { %>
<li>
@ -79,15 +77,12 @@
<% if (value.url) { %>
id="<%= url_for(value.url).replace(/\/|%|\./g, "")?url_for(value.url).replace(/\/|%|\./g, ""):"home" %>"
<% } %>>
<% if (value.icon) { %>
<i class='<%= value.icon %> fa-fw'></i>
<% } %>
<%- value.name %>
<% if (value.icon) { %><i class='<%= value.icon %> fa-fw'></i><% } %><%- value.name %>
</a>
<% if (value.rows) { %>
<ul class="list-v">
<% value.rows.forEach(function(value){ %>
<% menu(value) %>
<% menu(value, type) %>
<%})%>
</ul>
<% } %>
@ -95,8 +90,8 @@
<% } %>
<% } %>
<% menu_list.forEach(function(value){ %>
<% menu(value) %>
<%})%>
<% menu(value, 'pc') %>
<% }) %>
</ul>
</div>
@ -115,8 +110,8 @@
<a class="s-menu fas fa-bars fa-fw" target="_self" href='javascript:void(0)'></a>
<ul class="menu-phone list-v navigation white-box">
<% menu_list.forEach(function(value){ %>
<% menu(value) %>
<%})%>
<% menu(value, 'mobile') %>
<% }) %>
</ul>
</li>
</ul>

@ -33,27 +33,37 @@ if (post.meta && (post.meta.footer !== undefined && post.meta.footer !== null))
<% if (position == 'header') { %>
<section class='meta'>
<% if (post.music && post.music.enable != false) { %>
<%- partial('../_third-party/aplayer', {post: post, where: 'meta'}) %>
<% } %>
<% if(post.thumbnail && post.thumbnail.length){ %>
<a title='<%- post.title %>' href='<%- url_for(post.link || post.path) %>'><img class='thumbnail' src='<%- post.thumbnail %>'></a>
<% } %>
<div class="meta" id="header-meta">
<% if((topMetas).indexOf('title') > -1){ %>
<%- partial('../_meta/' + 'title', {post: post, isPostList: isPostList}) %>
<% if (topMetas.length == 1 && topMetas.indexOf('centertitle') > -1) { %>
<% if(isPostList){ %>
<h2 class="title"><p class="p center h2"><%- post.title || post.seo_title %></p></h2><br>
<% } else { %>
<% if (post.title || page.title || config.title) { %>
<h1 class="title"><p class="p center h1"><%- post.title || post.seo_title %></p></h1><br>
<% } %>
<% } %>
<div class='new-meta-box'>
<% (topMetas).forEach(function(meta){ %>
<% if((meta != 'title') && (meta in theme.meta)){ %>
<%- partial('../_meta/' + meta, {post: post, isPostList: isPostList}) %>
<% } %>
<% }) %>
</div>
<% if ((topMetas).length > 0){ %>
<hr>
<% } else { %>
<% if (post.music && post.music.enable != false) { %>
<%- partial('../_third-party/aplayer', {post: post, where: 'meta'}) %>
<% } %>
</div>
<% if(post.thumbnail && post.thumbnail.length){ %>
<a title='<%- post.title %>' href='<%- url_for(post.link || post.path) %>'><img class='thumbnail' src='<%- post.thumbnail %>'></a>
<% } %>
<div class="meta" id="header-meta">
<% if((topMetas).indexOf('title') > -1){ %>
<%- partial('../_meta/' + 'title', {post: post, isPostList: isPostList}) %>
<% } %>
<div class='new-meta-box'>
<% (topMetas).forEach(function(meta){ %>
<% if((meta != 'title') && (meta in theme.meta)){ %>
<%- partial('../_meta/' + meta, {post: post, isPostList: isPostList}) %>
<% } %>
<% }) %>
</div>
<% if ((topMetas).length > 0){ %>
<hr>
<% } %>
</div>
<% } %>
</section>
<% } else if (position == 'footer') { %>
<section class='meta' id="footer-meta">

@ -23,14 +23,16 @@
<% if (theme.plugins.instant_page) { %>
<script async src="<%- theme.plugins.instant_page %>" type="module" defer integrity="sha384-OeDn4XE77tdHo8pGtE1apMPmAipjoxUQ++eeJa6EtJCfHlvijigWiJpD7VDPWXV1"></script>
<% } %>
<% if (theme.plugins.scrollreveal) { %>
<script src="<%- theme.plugins.scrollreveal %>"></script>
<% if (theme.plugins.scrollreveal && theme.plugins.scrollreveal.js) { %>
<script src="<%- theme.plugins.scrollreveal.js %>"></script>
<script type="text/javascript">
$(function() {
const $reveal = $('.reveal');
if ($reveal.length === 0) return;
const sr = ScrollReveal({ distance: 0 });
sr.reveal('.reveal');
ScrollReveal().reveal('.l_main .reveal', {
distance: '<%- theme.plugins.scrollreveal.distance %>',
duration: '<%- theme.plugins.scrollreveal.duration %>',
interval: '<%- theme.plugins.scrollreveal.interval %>',
scale: '<%- theme.plugins.scrollreveal.scale %>'
});
});
</script>
<% } %>
@ -49,7 +51,7 @@
</script>
<% } %>
<% if (theme.plugins.busuanzi) { %>
<script async src="<%- theme.plugins.busuanzi %>"></script>
<script defer src="<%- theme.plugins.busuanzi %>"></script>
<% } %>
<% if (theme.plugins.backstretch && theme.plugins.backstretch.enable && (theme.plugins.backstretch.images || page.images)) { %>
@ -107,7 +109,9 @@
var enableDisqus = false;
var enableLivere = false;
var enableGitalk = false;
var enableVssue = false;
var enableValine = false;
var enableMiniValine = false;
if (theme.comments && page && page.comments == true) {
if (theme.comments.disqus && theme.comments.disqus.shortname) {
enableDisqus = true;
@ -118,9 +122,18 @@
if (theme.comments.gitalk && theme.comments.gitalk.clientID) {
enableGitalk = true;
}
if (theme.comments.vssue && theme.comments.vssue.clientId) {
enableVssue = true;
}
if (theme.comments.valine && theme.comments.valine.appId) {
enableValine = true;
}
if (theme.comments.minivaline && theme.comments.minivaline.appId) {
enableMiniValine = true;
}
}
if (theme.comments.valine && theme.comments.valine.appId && theme.comments.valine.visitor && (theme.layout.on_list.meta.indexOf('counter') > -1)) {
enableValine = true;
}
%>
<% if (enableDisqus){ %>
@ -170,6 +183,29 @@
gitalk.render('gitalk-container');
</script>
<% } %>
<% if (enableVssue) { %>
<script src="https://cdn.jsdelivr.net/gh/vuejs/vue@2.6.11/dist/vue.runtime.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/meteorlxy/vssue@1.4.4/packages/vssue/dist/vssue.github.min.js"></script>
<script>
new Vue({
el: '#vssue',
render: h => h('Vssue', {
props: {
title: "<%- (page.seo_title || page.title) + ' - ' + config.title %>",
options: {
owner: '<%- theme.comments.vssue.owner %>',
repo: '<%- theme.comments.vssue.repo %>',
clientId: '<%- theme.comments.vssue.clientId %>',
clientSecret: '<%- theme.comments.vssue.clientSecret %>',
prefix: '',
autoCreateIssue: true,
},
}
})
})
</script>
<% } %>
<% if (enableValine){ %>
<% if (theme.comments.valine.js) { %>
@ -179,17 +215,36 @@
<% } %>
<script>
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '<%= theme.comments.valine.meta %>'.split(',').filter(function(item){
var meta = '<%= theme.comments.valine.meta %>'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
var notify = '<%= theme.comments.valine.notify %>' == 'true';
var verify = '<%= theme.comments.valine.verify %>' == 'true';
var REQUIRED_FIELDS = ['nick','mail','link'];
var requiredFields = '<%= theme.comments.valine.requiredFields %>'.split(',').filter(function(item){
return REQUIRED_FIELDS.indexOf(item) > -1
});
var valine = new Valine();
function emoji(path, idx, ext) {
return path + "/" + path + "-" + idx + "." + ext;
}
var emojiMaps = {};
for (var i = 1; i <= 54; i++) {
emojiMaps['tieba-' + i] = emoji('tieba', i, 'png');
}
for (var i = 1; i <= 101; i++) {
emojiMaps['qq-' + i] = emoji('qq', i, 'gif');
}
for (var i = 1; i <= 116; i++) {
emojiMaps['aru-' + i] = emoji('aru', i, 'gif');
}
for (var i = 1; i <= 125; i++) {
emojiMaps['twemoji-' + i] = emoji('twemoji', i, 'png');
}
for (var i = 1; i <= 4; i++) {
emojiMaps['weibo-' + i] = emoji('weibo', i, 'png');
}
valine.init({
el: '#valine_container',
notify: notify,
verify: verify,
guest_info: guest_info,
meta: meta,
<% if (page.valine && page.valine.path) { %>
path: "<%= page.valine.path %>",
<% } else if (theme.comments.valine.path) { %>
@ -201,13 +256,48 @@
pageSize:'<%= theme.comments.valine.pageSize %>',
avatar:'<%= theme.comments.valine.avatar %>',
lang:'<%= theme.comments.valine.lang %>',
visitor: '<%- theme.comments.valine.visitor %>',
highlight:'<%= theme.comments.valine.highlight %>'
visitor: '<%= theme.comments.valine.visitor %>',
highlight: '<%= theme.comments.valine.highlight %>',
mathJax: '<%= theme.comments.valine.mathJax %>',
enableQQ: '<%= theme.comments.valine.enableQQ %>',
requiredFields: requiredFields,
emojiCDN: 'https://cdn.jsdelivr.net/gh/xaoxuu/cdn-assets/emoji/valine/',
emojiMaps: emojiMaps
})
</script>
<% } %>
<% if (theme.info.cdn && theme.info.cdn.js) { %>
<% if (enableMiniValine){ %>
<% if (theme.comments.minivaline.js) { %>
<%- js(theme.comments.minivaline.js) %>
<% } else { %>
<script src="https://unpkg.com/minivaline@latest/dist/MiniValine.min.js"></script>
<% } %>
<% var emoticonUrl = theme.comments.minivaline.emoticonUrl %>
<script>
new MiniValine({
el: '#minivaline_container',
appId: '<%= theme.comments.minivaline.appId %>',
appKey: '<%= theme.comments.minivaline.appKey %>',
placeholder: '<%= theme.comments.minivaline.placeholder %>',
<% if (page.minivaline && page.minivaline.path) { %>
path: "<%= page.minivaline.path %>",
<% } else if (theme.comments.minivaline.path) { %>
path: "<%= theme.comments.minivaline.path %>",
<% } %>
lang: '<%= theme.comments.minivaline.lang %>',
adminEmailMd5: '<%= theme.comments.minivaline.adminEmailMd5 %>',
math: '<%= theme.comments.minivaline.math %>',
md: '<%= theme.comments.minivaline.md %>',
NoRecordIP: '<%= theme.comments.minivaline.NoRecordIP %>',
maxNest: '<%= theme.comments.minivaline.maxNest %>',
pageSize: '<%= theme.comments.minivaline.pageSize %>',
emoticonUrl: <%- '["' + emoticonUrl.join('", "') + '"]' %>
});
</script>
<% } %>
<% if (config.use_cdn && theme.info.cdn && theme.info.cdn.js) { %>
<%- js(theme.info.cdn.js) %>
<% } else { %>
<%- js(['js/app.js']) %>
@ -234,10 +324,7 @@
<!-- fancybox -->
<% if (theme.plugins.fancybox) { %>
<%- partial('_third-party/fancybox') %>
<% } %>
<%- partial('_third-party/fancybox') %>
<% if (config.import && config.import.script){ %>
<% (config.import.script||[]).forEach(function(item){ %>

@ -1,5 +1,9 @@
<script src="<%- theme.plugins.clipboard %>"></script>
<script>
function wait(callback, seconds) {
var timelag = null;
timelag = window.setTimeout(callback, seconds);
}
!function (e, t, a) {
var initCopyCode = function(){
var copyHtml = '';
@ -18,9 +22,15 @@
$btn.addClass('copied');
let $icon = $($btn.find('i'));
$icon.removeClass('fa-copy');
$icon.addClass('fa-clipboard-check');
$icon.addClass('fa-check-circle');
let $span = $($btn.find('span'));
$span[0].innerText = 'COPIED';
wait(function () { // 等待两秒钟后恢复
$icon.removeClass('fa-check-circle');
$icon.addClass('fa-copy');
$span[0].innerText = 'COPY';
}, 2000);
});
clipboard.on('error', function(e) {
e.clearSelection();
@ -28,9 +38,15 @@
$btn.addClass('copy-failed');
let $icon = $($btn.find('i'));
$icon.removeClass('fa-copy');
$icon.addClass('fa-exclamation-triangle');
$icon.addClass('fa-times-circle');
let $span = $($btn.find('span'));
$span[0].innerText = 'COPY FAILED';
wait(function () { // 等待两秒钟后恢复
$icon.removeClass('fa-times-circle');
$icon.addClass('fa-copy');
$span[0].innerText = 'COPY';
}, 2000);
});
}
initCopyCode();

@ -3,7 +3,9 @@
var enableDisqus = false;
var enableLivere = false;
var enableGitalk = false;
var enableVssue = false;
var enableValine = false;
var enableMiniValine = false;
if (theme.comments && page && page.comments == true) {
if (theme.comments.disqus && theme.comments.disqus.shortname) {
enableDisqus = true;
@ -14,14 +16,20 @@
if (theme.comments.gitalk && theme.comments.gitalk.clientID) {
enableGitalk = true;
}
if (theme.comments.vssue && theme.comments.vssue.clientId) {
enableVssue = true;
}
if (theme.comments.valine && theme.comments.valine.appId) {
enableValine = true;
}
if (theme.comments.minivaline && theme.comments.minivaline.appId) {
enableMiniValine = true;
}
}
%>
<% if (enableDisqus || enableLivere || enableGitalk || enableValine) { %>
<article class="post white-box comments <%- theme.style.body.effect.join(' ') %>">
<% if (enableDisqus || enableLivere || enableGitalk || enableVssue || enableValine || enableMiniValine) { %>
<article class="post white-box reveal comments <%- theme.style.body.effect.join(' ') %>">
<section class="article typo">
<p ct><%- theme.comments && theme.comments.title %></p>
<% if (theme.comments && theme.comments.subtitle) { %>
@ -46,10 +54,22 @@
<div id="gitalk-container"></div>
</section>
<% } %>
<% if (enableVssue){ %>
<section id="comments">
<div id="vssue"></div>
</section>
<% } %>
<% if (enableValine){ %>
<section id="comments">
<div id="valine_container" class="valine_thread">
<i class="fas fa-spinner fa-spin fa-fw"></i>
<i class="fas fa-cog fa-spin fa-fw fa-2x"></i>
</div>
</section>
<% } %>
<% if (enableMiniValine){ %>
<section id="comments">
<div id="minivaline_container">
<i class="fas fa-cog fa-spin fa-fw fa-2x"></i>
</div>
</section>
<% } %>

@ -1,18 +1,43 @@
<script src="<%- theme.plugins.fancybox.js %>"></script>
<script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<script>
let LAZY_LOAD_IMAGE = "<%- config.lazyload %>";
$(".article-entry").find("div.fancybox").find("img").each(function () {
var element = document.createElement("a");
$(element).attr("data-fancybox", "gallery");
function pjax_fancybox() {
$(".article-entry").find("img").not('.inline').not('a img').each(function () { //渲染 fancybox
var element = document.createElement("a"); // a 标签
$(element).attr("pjax-fancybox", ""); // 过滤 pjax
$(element).attr("href", $(this).attr("src"));
/* 图片采用懒加载处理时,
* 一般图片标签内会有个属性名来存放图片的真实地址,比如 data-original,
* 那么此处将原本的属性名src替换为对应属性名data-original,
* 修改如下
*/
if (LAZY_LOAD_IMAGE) {
$(element).attr("href", $(this).attr("data-original"));
}
$(this).wrap(element);
if ($(this).attr("data-original")) {
$(element).attr("href", $(this).attr("data-original"));
}
$(element).attr("data-fancybox", "images");
var caption = ""; // 描述信息
if ($(this).attr('alt')) { // 标准 markdown 描述信息
$(element).attr('data-caption', $(this).attr('alt'));
caption = $(this).attr('alt');
}
var div = document.createElement("div");
$(div).addClass("fancybox");
$(this).wrap(div); // 最外层套 div ,其实主要作用还是 class 样式
var span = document.createElement("span");
$(span).addClass("image-caption");
$(span).text(caption); // 加描述
$(this).after(span); // 再套一层描述
$(this).wrap(element); // 最后套 a 标签
})
$(".article-entry").find("img").fancybox({
selector: '[data-fancybox="images"]',
hash: false,
loop: false,
closeClick: true,
helpers: {
overlay: {closeClick: true}
},
buttons: [
"zoom",
"close"
]
});
};
$(function () {
pjax_fancybox();
});
</script>

@ -1,19 +1,52 @@
<script async src="<%- theme.plugins.mathjax %>"></script>
<script async src="https://cdn.jsdelivr.net/npm/mathjax@3.0/es5/tex-mml-chtml.js"></script>
<!-- MathJax配置,可通过单美元符号书写行内公式等 -->
<script>
window.MathJax = {
tex: {
inlineMath: [ ["$", "$"], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
tags: "ams",
macros: {
href: "{}"
}
},
options: {
ignoreHtmlClass: "tex2jax_ignore|dno",
skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
if (typeof MathJax === 'undefined') {
window.MathJax = {
loader: {
source: {
'[tex]/amsCd': '[tex]/amscd',
'[tex]/AMScd': '[tex]/amscd'
}
},
tex: {
inlineMath: {'[+]': [['$', '$']]},
tags: 'ams'
},
options: {
renderActions: {
findScript: [10, doc => {
document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
const display = !!node.type.match(/; *mode=display/);
const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
const text = document.createTextNode('');
node.parentNode.replaceChild(text, node);
math.start = {node: text, delim: '', n: 0};
math.end = {node: text, delim: '', n: 0};
doc.math.push(math);
});
}, '', false],
insertedScript: [200, () => {
document.querySelectorAll('mjx-container').forEach(node => {
let target = node.parentNode;
if (target.nodeName.toLowerCase() === 'li') {
target.parentNode.classList.add('has-jax');
}
});
}, '', false]
}
}
};
(function () {
var script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3.0/es5/tex-mml-chtml.js';
script.defer = true;
document.head.appendChild(script);
})();
} else {
MathJax.startup.document.state(0);
MathJax.texReset();
MathJax.typeset();
}
};
</script>

@ -12,11 +12,13 @@
<% } else { %>
<a class="-mob-share-<%- item.id %>" title="<%- item.name %>" rel="external nofollow noopener noreferrer"
<% if (item.id == 'qzone'){ %>
href="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%- post.permalink %>&title=<%- (post.title || post.seotitle) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
href="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%- post.permalink %>&title=<%- (post.seo_title || post.title) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
<% } else if (item.id == 'qq'){ %>
href="http://connect.qq.com/widget/shareqq/index.html?url=<%- post.permalink %>&title=<%- (post.title || post.seotitle) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
href="http://connect.qq.com/widget/shareqq/index.html?url=<%- post.permalink %>&title=<%- (post.seo_title || post.title) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
<% } else if (item.id == 'weibo'){ %>
href="http://service.weibo.com/share/share.php?url=<%- post.permalink %>&title=<%- (post.title || post.seotitle) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
href="http://service.weibo.com/share/share.php?url=<%- post.permalink %>&title=<%- (post.seo_title || post.title) + ' - ' + config.title %><%- (post.thumbnail) ? '&pics=' + (post.thumbnail) : '' %>&summary=<%- strip_html(post.excerpt) %>"
<% } else if (item.id == 'telegram'){ %>
href="https://t.me/share/url?url=<%- post.permalink %>&text=<%- (post.seo_title || post.title) + ' - ' + config.title %>"
<% } %>
>
<% if (item.img){ %>

@ -1,11 +1,17 @@
<%- partial('_pre') %>
<section class="widget <%- item.class %> <%- page.widget_style %> <%- page.widget_platform %>">
<div class='content'>
<% if(item.avatar) { %>
<div class='avatar'>
<img class='avatar' src='<%- item.avatar %>'/>
</div>
<%} %>
<% if (item.avatar) { %>
<% if (item.url) { %>
<a class='avatar flat-box' href='<%- url_for(item.url) %>'>
<img no-lazy src='<%- item.avatar %>'/>
</a>
<% } else { %>
<div class='avatar'>
<img no-lazy src='<%- item.avatar %>'/>
</div>
<% } %>
<% } %>
<% if (item.title || item.subtitle || item.jinrishici) { %>
<div class='text'>
<% if (item.title){ %>

@ -1,14 +1,14 @@
<%
if ((page.layout == 'page' || page.layout == 'post') && page.group && page.group.length > 0) {
if (page.layout == 'page' || page.layout == 'post') {
var rows = new Array();
site.posts.each(function(post){
if (post.title && post.path && (post.group == page.group)) {
rows.push({name: post.title, url: post.path, order: (post.order || 0)})
if ((post.short_title || post.title) && post.path && (post.group == item.id)) {
rows.push({name: post.short_title || post.title, url: post.path, order: (post.order || 0)})
}
})
site.pages.each(function(post){
if (post.title && post.path && (post.group == page.group)) {
rows.push({name: post.title, url: post.path, order: (post.order || 0)})
if ((post.short_title || post.title) && post.path && (post.group == item.id)) {
rows.push({name: post.short_title || post.title, url: post.path, order: (post.order || 0)})
}
})
rows.sort(function(a,b){

@ -21,7 +21,7 @@
<% } else if (row.icon) { %>
<i class="<%= row.icon %> fa-fw" aria-hidden="true"></i>
<% } %>
<%- row.name %>
<%- row.name || url_for(row.url) %>
</div>
<% if(row.desc) { %>
<div class='badge'>(<%- row.desc %>)</div>

@ -1,9 +1,9 @@
<% (widgets||[]).forEach(function(widget){ %>
<% if (theme.widget && (widget in theme.widget)){ %>
<% let w = theme.widget[widget]; %>
<% let w = theme.widget[widget]; w.id = widget; %>
<%- partial(w.class, {item: w, where: where}) %>
<% } else if (site.data.widget && (widget in site.data.widget)){ %>
<% let w = site.data.widget[widget]; %>
<% let w = site.data.widget[widget]; w.id = widget; %>
<%- partial(w.class, {item: w, where: where}) %>
<% } %>
<% }) %>

@ -1,6 +1,16 @@
<%
if (item.rows == undefined) {
item.rows = page.references;
item.rows = new Array();
var itms = new Array();
let id = item.id || 'references';
if (id in page) {
(page[id]||[]).forEach(function(ref) {
if (ref.name || ref.url) {
item.rows.push(ref);
}
})
}
}
%>

@ -3,7 +3,7 @@
<% if (page.year || page.month) { %>
<%- partial('_partial/archive') %>
<% } else { %>
<article id="archive-page" class="post article white-box <%- theme.style.body.effect.join(' ') %>">
<article id="archive-page" class="post article white-box reveal <%- theme.style.body.effect.join(' ') %>">
<section class="archive">
<%
var year = -1, postid = -1;

@ -5,7 +5,7 @@
<% if (page.layout == 'category') { %>
<section class="post-list <%- theme.layout.multiple_columns ? 'multiple-columns' : '' %>">
<div class='post-wrapper'>
<article id="archive-page" class="post article white-box <%- theme.style.body.effect.join(' ') %>">
<article id="archive-page" class="post article white-box reveal <%- theme.style.body.effect.join(' ') %>">
<section class="archive">
<div class="archive-item archive-year mark">
<h2><%- page.title %></h2>

@ -1,6 +1,6 @@
<%- partial('_pre') %>
<div class='l_main<%- page.sidebar == false ? ' no_sidebar' : '' %>'>
<article id="<%= page.layout %>" class="post white-box <%- theme.style.body.effect.join(' ') %> article-type-<%= page.layout %>" itemscope itemprop="blogPost">
<article id="<%= page.layout %>" class="post white-box reveal <%- theme.style.body.effect.join(' ') %> article-type-<%= page.layout %>" itemscope itemprop="blogPost">
<%- partial('_partial/meta',{post:page, position:'header'}) %>
<section class="article article-entry l_friends">
<%- page.excerpt %>

@ -5,7 +5,7 @@
<% if (page.layout == 'tag') { %>
<section class="post-list <%- theme.layout.multiple_columns ? 'multiple-columns' : '' %>">
<div class='post-wrapper'>
<article id="archive-page" class="post article white-box <%- theme.style.body.effect.join(' ') %>">
<article id="archive-page" class="post article white-box reveal <%- theme.style.body.effect.join(' ') %>">
<section class="archive">
<div class="archive-item archive-year mark">
<h2><%- page.title %></h2>

@ -2,7 +2,7 @@
function postBtns(args, content) {
return `<div class="btns ${args.join(' ')}">
${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')}
${content}
</div>`;
}
@ -25,9 +25,9 @@ function postCell(args, content) {
}
}
if (icon.length > 0) {
return `<p class='cell'><a ${url} title='${text}'><i class='${icon}'></i>${text}</a></p>`
return `<a ${url} title='${text}'><i class='${icon}'></i>${text}</a>`
} else {
return `<p class='cell'><a ${url} title='${text}'><img src='${img}'>${text}</a></p>`
return `<a ${url} title='${text}'><img src='${img}'>${text}</a>`
}
}

@ -0,0 +1,53 @@
'use strict';
function postCheckbox(args) {
args = args.join(' ').split(',')
var cls = ''
var text = ''
var checked = false
if (args.length > 1) {
cls = (args[0] || '').trim()
if (cls.length > 0) {
cls = ' ' + cls
}
if (cls.indexOf('checked') > -1) {
checked = true
}
text = (args[1] || '').trim()
} else if (args.length > 0) {
text = (args[0] || '').trim()
}
if (text.length > 0) {
return `<div class='checkbox${cls}'><input type="checkbox" ${ checked ? 'checked="checked"' : '' }/>
${hexo.render.renderSync({text: text, engine: 'markdown'}).split('\n').join('')}
</div>`
}
}
function postRadio(args) {
args = args.join(' ').split(',')
var cls = ''
var text = ''
var checked = false
if (args.length > 1) {
cls = (args[0] || '').trim()
if (cls.length > 0) {
cls = ' ' + cls
}
if (cls.indexOf('checked') > -1) {
checked = true
}
text = (args[1] || '').trim()
} else if (args.length > 0) {
text = (args[0] || '').trim()
}
if (text.length > 0) {
return `<div class='checkbox${cls}'><input type="radio" ${ checked ? 'checked="checked"' : '' }/>
${hexo.render.renderSync({text: text, engine: 'markdown'}).split('\n').join('')}
</div>`
}
}
// {% checkbox text %}
// {% checkbox checked, text %}
// {% checkbox color checked, text %}
hexo.extend.tag.register('checkbox', postCheckbox);
hexo.extend.tag.register('radio', postRadio);

@ -5,11 +5,11 @@ function postFancybox(args, content) {
var cls = args[0];
var col = Number(args[1]) || 0;
if (col > 0) {
return `<div class="fancybox ${cls}" col='${col}'>
return `<div class="gallery ${cls}" col='${col}'>
${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')}
</div>`;
} else {
return `<div class="fancybox ${cls}">
return `<div class="gallery ${cls}">
${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')}
</div>`;
}

@ -11,13 +11,13 @@ function postFolding(args, content) {
title = args[0].trim()
}
if (style != undefined) {
return `<details ${style}><summary> ${title} </summary>
return `<details ${style}><summary> ${hexo.render.renderSync({text: title, engine: 'markdown'}).split('\n').join('')} </summary>
<div class='content'>
${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')}
</div>
</details>`;
} else {
return `<details><summary> ${title} </summary>
return `<details><summary> ${hexo.render.renderSync({text: title, engine: 'markdown'}).split('\n').join('')} </summary>
<div class='content'>
${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')}
</div>

@ -0,0 +1,44 @@
'use strict';
function postImage(args) {
args = args.join(' ').split(',')
let url = (args[0]||'').trim()
let title = ''
let width = ''
let cls = ''
function getP2(p2) {
let px = p2.match(/^[0-9]*px$/g)
if (px) {
width = px[0]
} else if (p2 == 'inline') {
cls = 'class="inline"'
} else {
title = p2
}
}
if (args.length > 2) {
getP2(args[1].trim())
getP2(args[2].trim())
} else if (args.length > 1) {
getP2(args[1].trim())
}
if (width.length > 0) {
if (title.length > 0) {
return `<img src='${url}' alt='${title}' style='width:${width}'>`;
} else {
return `<img src='${url}' style='width:${width}'>`;
}
} else {
if (title.length > 0) {
return `<img src='${url}' alt='${title}'>`;
} else {
return `<img src='${url}'>`;
}
}
}
// {% image url %}
// {% image url, title %}
// {% image url, width(px) %}
// {% image url, title, width(px) %}
hexo.extend.tag.register('image', postImage);

@ -2,12 +2,12 @@
function postAudio(args) {
let src = args[0].trim()
return `<audio controls preload><source src='${src}' type='audio/mp3'>Your browser does not support the audio tag.</audio>`;
return `<div class="audio"><audio controls preload><source src='${src}' type='audio/mp3'>Your browser does not support the audio tag.</audio></div>`;
}
function postVideo(args) {
let src = args[0].trim()
return `<video controls preload><source src='${src}' type='video/mp4'>Your browser does not support the video tag.</video>`;
return `<div class="video"><video controls preload><source src='${src}' type='video/mp4'>Your browser does not support the video tag.</video></div>`;
}
function postVideos(args, content) {

@ -1,6 +1,5 @@
/**
* note.js
* transplant from hexo-theme-next
* tabs.js | https://theme-next.org/docs/tag-plugins/tabs
*/
'use strict';
@ -40,7 +39,9 @@ function postTabs(args, content) {
((tabCaption.length === 0) && (tabIcon.length === 0)) && (tabCaption = tabName + ' ' + tabId);
var isOnlyicon = tabIcon.length > 0 && tabCaption.length === 0 ? ' style="text-align: center;"' : '';
tabIcon.length > 0 && (tabIcon = `<i class="fa fa-${tabIcon.trim()}"${isOnlyicon}></i>`);
let icon = tabIcon.trim();
icon = icon.startsWith('fa') ? icon : 'fa fa-' + icon;
tabIcon.length > 0 && (tabIcon = `<i class="${icon}"${isOnlyicon}></i>`);
var isActive = (tabActive > 0 && tabActive === tabId) || (tabActive === 0 && tabId === 1) ? ' active' : '';
tabNav += `<li class="tab${isActive}"><a href="#${tabHref}">${tabIcon + tabCaption.trim()}</a></li>`;

@ -10,11 +10,6 @@ html
height: 100%
font-family: $fontfamily
font-size: $fontsize
line-height: $lineheight
-webkit-text-size-adjust: 100%
-ms-text-size-adjust: 100%
text-rendering: optimizelegibility
-webkit-tap-highlight-color: rgba(0, 0, 0, 0)
>
if hexo-config('style.scrollbar.size')
if hexo-config('style.scrollbar.color')
@ -27,6 +22,11 @@ html
body
background-color: $color-site
text-rendering: optimizelegibility
-webkit-tap-highlight-color: rgba(0, 0, 0, 0)
line-height: $lineheight
-webkit-text-size-adjust: 100%
-ms-text-size-adjust: 100%
&.modal-active
overflow: hidden
@media screen and (max-width: $modal-threshold)
@ -111,12 +111,8 @@ img
ul,ol
padding-left: 0
li
list-style: none
li
list-style: none
article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary
display: block
@ -203,9 +199,6 @@ input::-moz-focus-inner
padding: 0
input
line-height: normal
input[type="checkbox"],
input[type="radio"]
box-sizing: border-box /* 1 */
@ -251,12 +244,14 @@ table
max-width: 100%
scrollbar()
margin-right: $gap-row
vertical-align: text-top;
vertical-align: text-top
th
background-color: darken($color-block, 2)
td,th
padding: 6px 16px
padding: 8px 16px
border: 2px solid darken($color-block, 2)
line-height: 1.5
font-size: 90%
tr
word-break: keep-all
background-color: lighten($color-block, 3)

@ -33,8 +33,9 @@ $color-google-red = #E8453C
// common
$color-site = convert(hexo-config('style.color.site')) || #f4f4f4
$color-site-inner = convert(hexo-config('style.color.site_inner')) || #555
$color-site-footer = convert(hexo-config('style.color.site_footer')) || #666
$color-card = convert(hexo-config('style.color.card')) || white
$color-text = convert(hexo-config('style.color.text')) || #444
$color-text = convert(hexo-config('style.color.text')) || #555
$color-theme = convert(hexo-config('style.color.theme')) || #2196f3
$color-link = convert(hexo-config('style.color.link')) || #2196f3
$color-hover = convert(hexo-config('style.color.hover')) || #ff5722

@ -5,6 +5,8 @@ $boxshadow-card-float = 0 2px 4px 0px rgba(0, 0, 0, 0.1), 0 4px 8px 0px rgba(0,
$boxshadow-float = 0 4px 8px 0px rgba(0, 0, 0, 0.1)
$boxshadow-dropmenu = 0 0 1px 0px rgba(0, 0, 0, 0.1), $boxshadow-float
$textshadow = 0 1px 2px 0px rgba(0, 0, 0, 0.1)

@ -52,7 +52,9 @@ $fontsize-code = convert(hexo-config('style.fontsize.code')) || .8125rem // 13p
$fontsize-footnote = convert(hexo-config('style.fontsize.footnote')) || .75rem // the smallest (12px)
// line-height
$lineheight = 1.6
$lineheight = hexo-config('style.gap.line_height') || 1.7
$fontoffset = hexo-config('style.fontfamily.bodyfont.offset') || 0rem
$fontsize-large = 3rem
$fontsize-huge = 4rem

@ -3,6 +3,8 @@ pre
.hljs
margin: 0 - $gap !important
padding: $gap !important
-webkit-font-smoothing: auto
-moz-osx-font-smoothing: auto
scrollbar()
if hexo-config('style.body.highlight.language') == true
&:before
@ -77,6 +79,9 @@ pre
font-family: $fontfamily-code
border-radius: $border-codeblock
border: 1px solid darken($color-codeblock, 6)
line-height: 1.5
-webkit-font-smoothing: auto
-moz-osx-font-smoothing: auto
trans()
figcaption
position: sticky
@ -92,6 +97,7 @@ pre
td,th
padding: 0
border: none
line-height: 1.5
margin: 0
background-color: transparent
border: none
@ -203,7 +209,6 @@ $hl-amber = #FD8607
$hl-text = alpha($color-text, .9)
.highlight pre
//
// line-height: 1.5
.line,.params
color: $hl-text
@ -260,7 +265,7 @@ $hl-text = alpha($color-text, .9)
color: $hl-cyan
.highlight.objc,.highlight.objectivec,.highlight.swift
.highlight.objc,.highlight.objectivec,.highlight.swift,.highlight.c
.line
.meta
color: $hl-keyword

@ -6,7 +6,7 @@
>a,>p>a,blockquote a,div.note a
underline()
>ul>li,>ol>li,tbody tr td
>a
>a,>p>a
underline()
div.tab-pane
>p,li
@ -18,6 +18,8 @@
// word-break: break-all
word-wrap: break-word
img
&.inline
display: inline
position: relative
trans()
@media screen and (max-width: $device-mobile)
@ -33,6 +35,8 @@
display: inline
margin: auto
a
word-break: break-word
h1,h2,h3,h4,h5,h6
&:first-child
margin-top: $gap-row
@ -105,18 +109,11 @@
background: $color-theme
color: $color-inner
p
margin-top: $gap-row
margin-bottom: $gap-row
margin-top: $gap-paragraph
margin-bottom: $gap-paragraph
text-align: $textalign-p
max-width: 100%
overflow: auto
&.has-jax
font-family: $fontfamily-code
background: $color-mathjax
padding: $gap $gap * 0.5
border-radius: $border-codeblock
.mjx-chtml.MJXc-display
margin: 0
line-height: inherit
ul,ol
@ -129,7 +126,15 @@
ul,ol
margin-top: 0
margin-bottom: 0
li
margin-top: 2px
margin-bottom: 2px
li
margin-top: 0
margin-bottom: 0
p
margin-top: $gap-row
margin-bottom: $gap-row
&.task-list
padding-left: 0
margin-left: 4px
@ -140,9 +145,9 @@
ul>li
list-style: initial
list-style: initial
ol>li
list-style: decimal
list-style: decimal
.subtitle
h6
@ -170,7 +175,7 @@
margin-bottom: $gap-row
position: relative
width: 100%
padding: .7em 1.2em
padding: $gap-row + $fontoffset $gap $gap-row $gap
trans()
footer
padding: 0
@ -216,29 +221,23 @@
margin: 0
background: transparent
color: alpha($color-text, 90%)
code
font-family: $fontfamily-code
&:not([class])
padding: 3px 4px 1px 4px
margin: 0
vertical-align: middle
font-size: $fontsize-code
background: $color-inlinecode
border-radius: $border-codeblock * 0.5
border: 1px solid darken($color-inlinecode, 6)
table:not('.highlight table')
width: 100%
td,th
padding: 12px 24px
@media screen and (max-width: $device-mobile)
ul,ol
font-size: $fontsize-meta
figure
font-size: 13px
line-height: 1.6em
line-height: 1.5
.widget
@ -320,6 +319,8 @@
margin-bottom: 4px
.article_footer
margin-top: $gap * 4
.widget-blur
backdrop-filter: none
@ -353,9 +354,6 @@
margin-top: $gap-h4 - $navbar-height - $gap
h5
font-weight: bold
p
margin-top: $gap-paragraph
margin-bottom: $gap-paragraph
article .readmore
margin-top: $gap-paragraph

@ -41,6 +41,8 @@
font-size: 24px
line-height: 64px
position: absolute
width: 24px
left: "calc(50% - %s)" % 12px
text-shadow: 0 1px 2px rgba(0, 0, 0, .1)
animation: scroll-down-effect 1.5s infinite
@keyframes scroll-down-effect
@ -141,6 +143,8 @@
color: alpha($color-site-inner, .65)
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.05)
border-bottom: 2px solid transparent
i
margin-right: 4px
&:hover, &.active, &:active
color: $color-site-inner
border-bottom: 2px solid $color-site-inner

@ -2,7 +2,7 @@ footer
position: relative
padding: 40px 10px 120px 10px
width: 100%
color: alpha($color-site-inner, .5)
color: alpha($color-site-footer, .5)
margin: 0px auto
&,p
font-size: $fontsize-code
@ -24,11 +24,11 @@ footer
font-size: $fontsize
a
color: alpha($color-site-inner, .75)
color: alpha($color-site-footer, .75)
padding: 0
trans()
&:hover
color: $color-site-inner
color: $color-site-footer
&.social
position: relative
display: inline-block
@ -40,10 +40,10 @@ footer
height: 36px
margin: 4px
border-radius: 100px
color: alpha($color-site-inner, .75)
color: alpha($color-site-footer, .75)
&:hover
background: alpha($color-site-inner, .1)
color: $color-site-inner
background: alpha($color-site-footer, .1)
color: $color-site-footer

@ -1,6 +1,9 @@
.l_body
position: relative
margin: $gap
if hexo-config('style.font_smoothing') == true
-webkit-font-smoothing: antialiased
-moz-osx-font-smoothing: grayscale
&.nocover
margin-top: $navbar-height
@media screen and (max-width: $device-mobile-l)
@ -72,7 +75,6 @@
mobile-post()
.post
div.meta
margin-bottom: $gap
.title
font-size: $fontsize-h3
@media screen and (max-width: $device-mobile)
@ -128,6 +130,8 @@
font-size: $fontsize-h1
section.meta
color: $color-meta
margin-bottom: $gap
line-height: normal
&#header-meta
margin-top: 0
margin-bottom: 1 * $gap
@ -163,6 +167,15 @@
.title
trans(.1s)
margin: 0
color: $color-text
p
&.h1,&.h2
margin-top: $gap-paragraph + $gap-row
border-bottom: none
&.h1
font-size: $fontsize-h1 * 1.1
&.h2
font-size: $fontsize-h2 * 1.1
a
display: inline
font-weight: normal
@ -177,6 +190,8 @@
display: flex
align-items: center
flex-wrap: wrap
-webkit-font-smoothing: auto
-moz-osx-font-smoothing: auto
&,p,i
font-size: $fontsize-code
.new-meta-item
@ -190,13 +205,15 @@
padding: 1px 4px
border-radius: 2px
margin: 2px
line-height: 1.5
&:hover
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1), 0 8px 16px 0 rgba(0, 0, 0, 0.1)
i
padding-left: 3px
p
color: white
padding-top: 2px
padding-top: 3px
padding-right: 2px
&:hover
color: white
p
@ -208,11 +225,9 @@
p
color: $color-meta
display: flex
align-items: center
align-items: baseline
justify-content: center
padding: 2px
margin: 0 8px 0 0
border-radius: 4px
margin: 0 $gap 0 0
&:last-child
margin-right: 0
img,i
@ -224,17 +239,15 @@
margin-right: 2px
p,a
color: $color-meta
padding-left: 0
padding-right: 4px
padding: 3px 0
a
display: flex
justify-content: center
align-items: center
img
height: 1.2em
width: 1.2em
height: 16px
width: 16px
margin-right: 5px
transform: translateY(-1px)
p
margin: 0
font-weight: normal
@ -247,14 +260,31 @@
.author
img,i
border-radius: 100%
img
transform: translateY(-0.5px)
@media screen and (max-width: $device-mobile)
.share
width: 100%
margin-top: $gap
background: $color-codeblock
.share-body
position: relative
display: flex
justify-content: center;
margin: 0
padding: 0 2px
border-radius: 2px
a
padding: 0
margin-right: 4px
margin: 0 1px
img
height: 1.8em
margin: 2px
height: 24px
@media screen and (max-width: $device-mobile)
height: 32px
margin: 8px
width: auto
background: transparent
@ -290,10 +320,11 @@
div.hoverbox
display: flex
flex-direction: column
justify-content: center
align-items: center
// display: flex
// flex-direction: column
// justify-content: center
// align-items: center
>div.target
display: none
position: absolute
@ -301,16 +332,24 @@ div.hoverbox
border-radius: $border-card
box-shadow: $boxshadow-card-float
padding: 8px
margin-left: -4px
margin-top: 0 - 4px - 64px - 40px
left: 50%
top: -20px
// margin-left: 50%
transform: translate(-50%, -100%)
// margin-left: -4px
// margin-top: 0 - 4px - 64px - 40px
>img
margin: 0
padding: 0
height: 128px
width: 128px
min-width: 128px
&:hover
>div.target
display: flex
@media screen and (max-width: $device-mobile)
>div.target
position: absolute
.comments
.article
@ -327,3 +366,7 @@ div.hoverbox
.white-box
background: $color-card
if hexo-config('plugins.scrollreveal.js')
.reveal
visibility: hidden

@ -4,7 +4,7 @@
left: 0
height: 2px
width: 100%
z-index: 9999
z-index: 99999
#loading-bar
position: fixed
@ -18,7 +18,7 @@
$iconW = 32px
$iconMargin = 4px
position: fixed
z-index: 99
z-index: 1000
top: 0
width: 100%
height: $navbar-height
@ -56,6 +56,7 @@
&.sub .nav-sub
opacity: 1
.title
position: relative
color: $color-text
padding-left: $gap * 1.5
max-height: $navbar-height
@ -124,28 +125,38 @@
display: flex
.m_search
position: relative
display: flex
height: $navbar-height
width: $sidebar
trans()
@media screen and (max-width: $device-laptop)
width: 120px
width: 44px
min-width: 44px
input
&::placeholder
opacity: 0
&:hover
input
&::placeholder
opacity: 1
width: $sidebar
@media screen and (min-width: $device-mobile)
min-width: 80px
&:hover .input
&::placeholder
opacity: 1
width: 100%
@media screen and (max-width: $device-mobile)
input
&::placeholder
opacity: 1
min-width: 0
.form
position: relative
display: flex
width: 100%
margin: auto
justify-content: flex-start
align-items: center
.icon,.input
trans(.3s)
.icon
position: absolute
width: $iconW
@ -157,26 +168,27 @@
display: block
padding-top: $gap * 0.5
padding-bottom: $gap * 0.5
line-height: 1.3
width: 100%
color: $color-text
background: darken($color-card, 5)
background: darken($color-card, 2)
box-shadow: none
box-sizing: border-box
padding-left: $iconW + $iconMargin
font-size: $fontsize-meta
border-radius: $border-searchbar
border: 1px dashed transparent
border: none
trans()
@media screen and (min-width: $device-mobile)
&:focus
box-shadow: $boxshadow-float
@media screen and (max-width: $device-mobile)
background: $color-codeblock
padding-left: $gap * 0.5
border: none
&:hover,&:focus
border: none
&:hover
~.icon
color: alpha($color-theme, 80%)
&:focus
~.icon
color: $color-theme
@media (max-width: $device-mobile)
.m_search
@ -210,8 +222,7 @@ ul.nav-list-h
justify-content: center
>a
height: 100%
line-height: $navbar-height - $border-line
border-top: $border-line solid transparent
line-height: $navbar-height
border-bottom: $border-line solid transparent
ul.list-v
@ -219,10 +230,9 @@ ul.list-v
display: none
position: absolute
background: $color-card
box-shadow: $boxshadow-float
box-shadow: $boxshadow-dropmenu
margin-top: -2px - $border-card * 0.5
border-radius: $border-card * 0.5
border: 1px solid darken($color-codeblock, 6)
padding: $gap * 0.5 0
>hr
margin-top: $gap * 0.5
@ -236,28 +246,32 @@ ul.list-v
line-height: 2em
color: $color-meta
margin: $gap * 0.5 $gap $gap * 0.25
i
margin-right: 8px
ul
margin-left: 0
display: none
margin-top: 0 - 32px - $gap * 0.5
.aplayer-container
min-height: 64px
padding: $gap - 10px $gap
>li>a
trans()
display: block
color: alpha($color-text, 85%)
color: mix($color-text, $color-card, 90)
font-size: $fontsize-meta
font-weight: bold
line-height: 33px
padding: 0 $gap
padding: 0 $gap + $border-line + 2px 0 $gap
height: 32px
border-left: $border-line solid transparent
border-right: $border-line solid transparent
text-overflow: ellipsis
&:hover,&.active,&:active
color: $color-theme
border-left: $border-line solid $color-theme
border-bottom: none
>i
margin-right: 4px
margin-right: 8px
&.current
border-left-color: alpha($color-theme, 80%)
border-bottom-color: alpha($color-theme, 80%)
@ -275,10 +289,13 @@ ul.list-v
.l_header
.menu
>ul>li>a
display: block
padding: 0 8px
>i
margin-right: 4px
.l_header ul>li>a
color: alpha($color-text, 85%)
color: mix($color-text, $color-card, 90)
&.current
border-left-color: alpha($color-theme, 80%)
border-bottom-color: alpha($color-theme, 80%)
@ -383,3 +400,8 @@ ul.list-v
// padding-right: 0
.menu
display:none
@media screen and (max-width: $device-mobile)
.list-v
li
max-width: 270px

@ -39,6 +39,7 @@
display: flex
justify-content: space-between
align-content: flex-start
margin-top: $gap * 0.5
>a
width: 100%
padding: $gap * 0.5

@ -7,7 +7,7 @@
width: 100%
height: 100%
padding: 60px 20px
z-index: 99
z-index: 1001
@media screen and (max-width: $modal-threshold)
padding: 0px
.modal

@ -7,11 +7,15 @@
@media screen and (max-width: $device-tablet)
width: 100%
.widget
overflow: hidden
>.content
max-height: "calc(100vh - %s)" % ($gap * 5 + $navbar-height)
@media screen and (max-width: $device-tablet)
max-height: none
overflow: auto
scrollbar()
text-align: justify
font-size: $fontsize-meta
$offset = $navbar-height + 12.5 * $gap
max-height: "calc(100% - %s)" % $offset
max-width: 100%
@ -22,6 +26,10 @@
border-radius: $border-card
width: 100%
display: none
ul,ol
li
margin-top: 0
margin-bottom: 0
&.desktop
display: block
@media screen and (max-width: $device-tablet)
@ -41,7 +49,6 @@
border-top-left-radius: $border-card
border-top-right-radius: $border-card
font-weight: bold
line-height: 1.5em
padding: "calc(%s - 2px)" % $gap
padding-bottom: 0
&,a
@ -70,6 +77,7 @@
border-left: $border-line solid transparent
trans()
ul.entry, ul.popular-posts
list-style: none
a
.name
flex: auto
@ -104,42 +112,52 @@
trans()
.content
padding: 0
div.avatar
display: flex
justify-content: center
img
padding: 0
margin: 0
display: flex
justify-content: center
width: $sidebar
height: $sidebar
text-align: center
display: flex
flex-direction: column
align-items: stretch
>.avatar
align-self: center
overflow: hidden
position: relative
border-top-left-radius: $border-card
border-top-right-radius: $border-card
line-height: 0
if hexo-config('widget.blogger.shape') == 'circle'
border-radius: 100%
width: 128px
height: 128px
margin-top: $gap * 2
margin-bottom: $gap-row
img
display: block
position: absolute
top: 50%
left: 50%
transform: translate(-50%, -50%)
@media screen and (max-width: $device-tablet)
width: 96px
height: 96px
width: 80px
height: 80px
border-radius: 100%
margin-top: $gap * 0.5
padding: $gap * 0.5
border: 2px solid white
img
display: block
top: 50%
left: 50%
transform: translate(-50%, -50%)
position: absolute
.text
:first-child
margin-top: $gap
h2
text-align: center
font-weight: bold
margin: $gap * 0.5
margin-top: $gap
@media screen and (max-width: $device-tablet)
margin: $gap * 0.5
p
font-weight: bold
text-align: center
margin: $gap * 0.5 $gap * 0.5 0 $gap * 0.5
empty-cells: hide
.social-wrapper
display: flex
justify-content: space-between
@ -165,19 +183,16 @@
background: bgcolor($color-theme)
color: $color-theme
@media screen and (max-width: $device-tablet)
justify-content: center
display: none
@media screen and (max-width: $device-tablet)
box-shadow: none
background: transparent !important
margin-top: 2 * $gap
backdrop-filter: none
color: $color-site-inner
@ -320,7 +335,7 @@
.l_side>.widget.page
.content
>.content
padding-top: 0
padding-left: $gap - 4px
padding-right: $gap - 4px

@ -5,7 +5,7 @@
position: sticky
top: $navbar-height + $gap
trans()
line-height: 1.4
line-height: 1.6
header
position: sticky
width: 100%
@ -13,8 +13,6 @@
padding-bottom: $gap * 0.25
.content
max-height: "calc(100vh - %s)" % ($gap * 5 + $navbar-height)
overflow: auto
scrollbar()
a
border-left: $border-line solid transparent
&:hover
@ -29,7 +27,7 @@
trans()
@media screen and (max-width: $device-tablet)
z-index: 100
z-index: 1001
position: fixed
max-height: 1000px
width: auto

@ -38,27 +38,27 @@ span.btn
// btns
div.btns
margin: 0 -0.5 * $gap
&,b,p,a
&,p,a
font-size: $fontsize-code
color: $color-p
&,>p
display: flex
flex-wrap: wrap
align-items: flex-start
overflow: visible
&.wide>p>a,&.wide>a
b
font-size: $fontsize-meta
display: flex
flex-wrap: wrap
align-items: flex-start
overflow: visible
line-height: 1.8
&.wide>a
padding-left: $gap*2
padding-right: $gap*2
&.fill>p>a,&.fill>a
&.fill>a
flex-grow: 1
width: auto
&.around
&,>p
justify-content: space-around
justify-content: space-around
&.center
&,>p
justify-content: center
&.grid2>p>a,&.grid2>a
justify-content: center
&.grid2>a
width: "calc(100%/2 - %s)" % $gap
@media screen and (max-width: $device-laptop)
width: "calc(100%/2 - %s)" % $gap
@ -66,7 +66,7 @@ div.btns
width: "calc(100%/2 - %s)" % $gap
@media screen and (max-width: $device-mobile)
width: "calc(100%/1 - %s)" % $gap
&.grid3>p>a,&.grid3>a
&.grid3>a
width: "calc(100%/3 - %s)" % $gap
@media screen and (max-width: $device-laptop)
width: "calc(100%/3 - %s)" % $gap
@ -74,7 +74,7 @@ div.btns
width: "calc(100%/3 - %s)" % $gap
@media screen and (max-width: $device-mobile)
width: "calc(100%/1 - %s)" % $gap
&.grid4>p>a,&.grid4>a
&.grid4>a
width: "calc(100%/4 - %s)" % $gap
@media screen and (max-width: $device-laptop)
width: "calc(100%/3 - %s)" % $gap
@ -82,7 +82,7 @@ div.btns
width: "calc(100%/3 - %s)" % $gap
@media screen and (max-width: $device-mobile)
width: "calc(100%/2 - %s)" % $gap
&.grid5>p>a,&.grid5>a
&.grid5>a
width: "calc(100%/5 - %s)" % $gap
@media screen and (max-width: $device-laptop)
width: "calc(100%/4 - %s)" % $gap
@ -143,9 +143,9 @@ div.btns
box-shadow: $boxshadow-float
&>i:first-child
background:$color-hover
&.circle>p a, &.circle a
&.circle a
&>img:first-child, &>i:first-child
border-radius: 32px
&.rounded>p a, &.rounded a
&.rounded a
&>img:first-child, &>i:first-child
border-radius: 16px

@ -0,0 +1,191 @@
article .checkbox
display: flex
align-items: center
input
-webkit-appearance: none
-moz-appearance: none
-ms-appearance: none
-o-appearance: none
appearance: none
position: relative
height: 16px
width: 16px
transition:all .15s ease-out 0s
cursor: pointer
display: inline-block
outline: none
border-radius: 2px
flex-shrink: 0
margin-right: 8px
if hexo-config('style.body.checkbox.enable') != true
pointer-events: none
/* Checkbox */
input[type=checkbox]
&:before, &:after
position: absolute
content: ""
background: #fff
&:before
left: 1px
top: 5px
width: 0px
height: 2px
transition: all .2s ease-in
transform: rotate(45deg)
-webkit-transform: rotate(45deg)
-moz-transform: rotate(45deg)
-ms-transform: rotate(45deg)
-o-transform: rotate(45deg)
&:after
right: 7px
bottom: 3px
width: 2px
height: 0px
transition: all .2s ease-out
transform: rotate(40deg)
-webkit-transform: rotate(40deg)
-moz-transform: rotate(40deg)
-ms-transform: rotate(40deg)
-o-transform: rotate(40deg)
transition-delay: .25s
&:checked
&:before
left: 0px
top: 7px
width: 6px
height: 2px
&:after
right: 3px
bottom: 1px
width: 2px
height: 10px
&.minus input[type=checkbox]
&:before
transform: rotate(0)
left: 1px
top: 5px
width: 0px
height: 2px
&:after
transform: rotate(0)
left: 1px
top: 5px
width: 0px
height: 2px
&:checked
&:before
left: 1px
top: 5px
width: 10px
height: 2px
&:after
left: 1px
top: 5px
width: 10px
height: 2px
&.plus input[type=checkbox]
&:before
transform: rotate(0)
left: 1px
top: 5px
width: 0px
height: 2px
&:after
transform: rotate(0)
left: 5px
top: 1px
width: 2px
height: 0px
&:checked
&:before
left: 1px
top: 5px
width: 10px
height: 2px
&:after
left: 5px
top: 1px
width: 2px
height: 10px
&.times input[type=checkbox]
&:before
transform: rotate(45deg)
left: 3px
top: 1px
width: 0px
height: 2px
&:after
transform: rotate(135deg)
right: 3px
top: 1px
width: 0px
height: 2px
&:checked
&:before
left: 1px
top: 5px
width: 10px
height: 2px
&:after
right: 1px
top: 5px
width: 10px
height: 2px
/* Radio */
input[type=radio]
border-radius: 50%
&:before
content: ""
display: block
width: 8px
height: 8px
border-radius: 50%
margin: 2px
transform: scale(0)
transition: all .25s ease-out
&:checked:before
transform: scale(1)
/* Colors */
input
$c = convert(hexo-config('style.body.checkbox.color')) || $color-theme
border: 2px solid $c
&[type=checkbox]:checked
background: $c
&[type=radio]:checked:before
background: $c
&.red input
border-color: $color-mac-red
&[type=checkbox]:checked
background: $color-mac-red
&[type=radio]:checked:before
background: $color-mac-red
&.green input
border-color: $color-mac-green
&[type=checkbox]:checked
background: $color-mac-green
&[type=radio]:checked:before
background: $color-mac-green
&.yellow input
border-color: $color-mac-yellow
&[type=checkbox]:checked
background: $color-mac-yellow
&[type=radio]:checked:before
background: $color-mac-yellow
&.cyan input
border-color: $color-mac-cyan
&[type=checkbox]:checked
background: $color-mac-cyan
&[type=radio]:checked:before
background: $color-mac-cyan
&.blue input
border-color: $color-md-blue
&[type=checkbox]:checked
background: $color-md-blue
&[type=radio]:checked:before
background: $color-md-blue
article .checkbox
p
display: inline-block
margin-top: 2px !important
margin-bottom: 0 !important

@ -14,6 +14,8 @@ details
color: alpha($color-p, .7)
font-size: $fontsize-meta
font-weight: bold
position: relative
line-height: normal
>
p,h1,h2,h3,h4,h5,h6
display: inline
@ -21,8 +23,13 @@ details
&:hover
color: $color-p
&:after
float: right
position: absolute
content: '+'
text-align: center
top: 50%
transform: translateY(-50%)
right: $gap
border: 1px solid $color-block
>summary
background: $color-block
@ -83,8 +90,10 @@ details[open]
padding: $gap
margin: 0 - $gap
margin-top: 0
p>a:hover
text-decoration: underline
>
p,.tabs,ul,ol,.highlight,div.note
p,.tabs,ul,ol,.highlight,.note,.fancybox,details
&:first-child
margin-top: 0
&:last-child

@ -3,21 +3,27 @@ $sp = 4px
audio,video
border-radius: $border-codeblock
max-width: 100%
video
z-index: 1
trans()
&:hover
box-shadow: 0 4px 8px 0px rgba(0, 0, 0, 0.24), 0 8px 16px 0px rgba(0, 0, 0, 0.24)
div.video
line-height: 0
text-align: center
div.videos
max-width: "calc(100% + 2 * %s)" % $sp
display: flex
flex-wrap: wrap
justify-content: space-start
justify-content: flex-start
align-items: flex-end
margin: $gap-row 0 - $sp
video,iframe
.video,iframe
width: 100%
margin: $sp
video
trans()
&:hover
box-shadow: 0 4px 8px 0px rgba(0, 0, 0, 0.24), 0 8px 16px 0px rgba(0, 0, 0, 0.24)
iframe
border-radius: $border-codeblock
width: 100%
@ -31,14 +37,14 @@ div.videos
&.stretch
align-items: stretch
&[col='1']
video,iframe
.video,iframe
width: 100%
&[col='2']
video,iframe
.video,iframe
width: "calc(50% - 2 * %s)" % $sp
&[col='3']
video,iframe
.video,iframe
width: "calc(33.33% - 2 * %s)" % $sp
&[col='4']
video,iframe
.video,iframe
width: "calc(25% - 2 * %s)" % $sp

@ -7,7 +7,7 @@ div.note
position: relative
margin-top: $gap-row
margin-bottom: $gap-row
padding: $gap-row $gap
padding: $gap-row + $fontoffset $gap $gap-row $gap
padding-left: "calc(16px + %s)" % $gap
border-radius: $border-codeblock

@ -2,9 +2,9 @@
p.p.subtitle
font-weight: bold
color: $color-theme
padding-top: $gap
padding-top: $gap-row * 2
&:first-child
padding-top: 0
padding-top: $gap-row
span.p,p.p
&.logo
@ -41,15 +41,20 @@ span.p,p.p
&.h1
font-size: $fontsize-h1
color: $color-h1
padding-top: $gap-row * 2
&.h2
font-size: $fontsize-h2
color: $color-h2
padding-top: $gap-row * 2
border-bottom: 1px solid alpha($color-text, .1)
&.h3
font-size: $fontsize-h3
color: $color-h3
padding-top: $gap-row * 2
&.h4
font-size: $fontsize-h4
color: $color-h4
padding-top: $gap-row * 2
span.p,p.p
&.red

@ -24,8 +24,13 @@ div.tabs
padding: 8px 8px 0 8px
background: $color-block
border-radius: $tbr $tbr 0 0
line-height: 1.5
li.tab
list-style-type: none
margin-top: 0
margin-bottom: 0
&:last-child
padding-right: $gap
a
display: block
cursor: pointer
@ -39,6 +44,8 @@ div.tabs
border: 1px solid transparent
&:hover
color: $color-p
i
pointer-events: none
&.active a
cursor: default
color: $color-p
@ -56,7 +63,7 @@ div.tabs
&.active
display: block
>
p,.tabs,ul,ol,.highlight,div.note
p,.tabs,ul,ol,.highlight,.note,.fancybox
&:first-child
margin-top: 0
&:last-child

@ -0,0 +1,7 @@
@media screen and (max-width: $device-mobile)
.l_header
.list-v
.aplayer,.aplayer-pic
border-radius: $border-card * 0.5
width: 64px
height: 64px

@ -1,41 +1,51 @@
div.fancybox
div.gallery
margin: $gap-row 0
overflow: hidden
$sp = 1px
>a,>p>a
>.fancybox,>p>.fancybox
margin: $sp
padding: 0
line-height: 0
overflow: hidden
align-items: stretch
border-radius: 2px
cursor: zoom-in
@media screen and (max-width: $device-mobile)
border-radius: 1px
br
display: none !important
position: relative
.image-caption
opacity: 0
transform: translateY(100%)
transition: all 0.3s ease
pointer-events: none
position: absolute
width: 100%
bottom: 0
text-align: center
background: rgba(0, 0, 0, 0.3)
color: #fff
&:empty
display:none
&:hover
.image-caption
opacity: 1
transform: translateY(0)
&,>p
display: flex
justify-content: center
align-items: center
flex-wrap: nowrap
padding: 0 !important
align-items: stretch
&[col]>p
flex-wrap: wrap
justify-content: flex-start
&[col='2']>p>a
&[col='2']>p>.fancybox
width: "calc(50% - 2 * %s)" % $sp
&[col='3']>p>a
&[col='3']>p>.fancybox
width: "calc(33.33% - 2 * %s)" % $sp
&[col='4']>p>a
&[col='4']>p>.fancybox
width: "calc(25% - 2 * %s)" % $sp
&[col='5']>p>a
&[col='5']>p>.fancybox
width: "calc(20% - 2 * %s)" % $sp
&[col='6']>p>a
&[col='6']>p>.fancybox
width: "calc(16.66% - 2 * %s)" % $sp
&[col='7']>p>a
&[col='7']>p>.fancybox
width: "calc(14.2857% - 2 * %s)" % $sp
&[col='8']>p>a
&[col='8']>p>.fancybox
width: "calc(12.5% - 2 * %s)" % $sp
>p
margin: 0
@ -53,3 +63,27 @@ div.fancybox
.fancybox-container
.fancybox-stage
cursor: zoom-out
.fancybox
display: flex
flex-direction: column
justify-content: center
align-items: center
flex-wrap: nowrap
padding: 0 !important
overflow: hidden
border-radius: 2px
@media screen and (max-width: $device-mobile)
border-radius: 1px
a
line-height: 0
margin: 0
align-items: stretch
cursor: zoom-in
.gallery
overflow: hidden
.image-caption
font-size: $fontsize-code
padding-top: $gap-row
padding-bottom: $gap-row
color: $color-meta

@ -0,0 +1,11 @@
.article
mjx-container
font-family: $fontfamily-code
background: $color-mathjax
padding: $gap $gap * 0.5
border-radius: $border-codeblock
min-width: 0 !important
mjx-container[jax="CHTML"][display="true"], .has-jax
overflow: auto hidden
mjx-container + br
display: none

@ -1,11 +1,10 @@
.l_main
#comments
position: relative
// padding-top: 1.5*$gap
@media screen and (max-width: $device-mobile)
// padding-top: $gap
#valine_container
>i
display: block
margin: $gap auto
img
display: inline
.vwrap
@ -15,7 +14,9 @@
trans()
&:hover
border: 1px dashed $color-theme
.cancel-reply
margin-top: 0
margin-bottom: 0
.vheader
.vinput
border-radius: 0
@ -24,84 +25,62 @@
border-bottom: 1px dashed $color-theme
&:focus
border-bottom: 1px solid $color-theme
.vedit
.vicon
height: 22px
.vemojis,.vpreview
justify-content: space-between
background: $color-block
border-radius: $border-codeblock
padding: $gap * 0.5
scrollbar()
.vemoji
max-height: 22px
max-width: 100px
i
width: auto
height: 36px
padding: 0
margin: 8px 8px 0 8px
line-height: 2
#emoji,.emoji
height: 24px
margin-top: 6px
background: transparent
padding: 8px
border-radius: 4px
transition: box-shadow .2s ease-out, background .2s ease-out
if luminosity($color-block) > 0.5
&:hover
background: lighten($color-block, 2)
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.5), inset 8px 8px 16px rgba(0, 0, 0, 0.05), inset -8px -8px 16px rgba(255, 255, 255, 0.4)
&:active
background: darken($color-block, 2)
box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.1), -0px -0px 0px rgba(255, 255, 255, 0.8), inset 2px 2px 4px rgba(0, 0, 0, 0.1), inset -2px -2px 4px rgba(255, 255, 255, 1), inset -8px -8px 16px rgba(255, 255, 255, 0.4)
.vedit
.vctrl span
padding: 0
margin: 10px
svg
span
fill: $color-p
&.actived
fill: $color-theme
.vcount
color: $color-p
font-size: $fontsize-meta
padding: 0
font-weight: inherit
.vnum
color: $color-p
font-size: $fontsize-h2
button
border: none
padding: 9px 2rem 7px 2rem
padding: 4px 2rem
border-radius: $border-button
background: darken($color-block, 2)
color: $color-text
line-height: 2
font-size: 14px
trans()
&:hover
color: $color-hover
background: bgcolor($color-hover)
blockquote
padding: $gap
border-left: $border-line solid $color-blockquote
trans()
p
text-align: left
word-wrap: normal
pre code
border: none
a
color: $color-link
trans()
&:hover
color: $color-hover
div.info
box-shadow: none
div.info>div.power
&,a
font-size: $fontsize-footnote
.vhead
span
&.vnick
color: $color-meta
cursor: default
a
&.vnick
color: #ff9800
font-weight: bold
&:hover
color: $color-hover
.vsys
margin: 2px
padding: 1px 8px
background-color: alpha($color-text, .1)
.vcard
&.vmore
width: 100%
padding: 8px 2rem
.vcards
.vquote
border-left: none
.vh
@ -116,23 +95,72 @@
&:after
background: alpha($color-block, .9)
color: $color-text
.vmeta
.vat
font-weight: bold
color: $color-link
trans()
.vhead
span
&.vnick
color: lighten($color-p, 10)
cursor: default
a
&.vnick
color: #ff9800
font-weight: bold
&:hover
color: $color-hover
.vsys
margin: 2px
padding: 1px 8px
background-color: $color-block
.vmeta
.vat
font-weight: bold
color: $color-link
trans()
&:hover
color: $color-hover
text-decoration: underline
.vcontent
blockquote
padding-top: $gap-row
padding-bottom: $gap-row
background: bgcolor($color-blockquote)
border-left: $border-codeblock solid $color-blockquote
border-radius: $border-codeblock
trans()
code
color: $color-p
font-family: $fontfamily-code
pre
background: $color-codeblock
code
border: none
a
color: $color-link
line-height: inherit
trans()
&:hover
color: $color-hover
text-decoration: underline
p
color: $color-p
margin-top: $gap-row
margin-bottom: $gap-row
line-height: inherit
.vemoji
max-height: 24px
border-radius: 0
margin-top: -10px
max-width: 100px
.vempty
color: $color-meta
.vpower
&,a
font-size: $fontsize-footnote
a
color: $color-p
&:hover
color: $color-hover
text-decoration: underline
input
background: $color-card
color: $color-hover
.vinput
color: $color-text
p
color: $color-text
p
#emoji,.emoji
display: inline
max-height: 28px
background: transparent

@ -1,9 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1366 362">
<linearGradient id="a" x1="428.258" x2="434.145" y1="404.15" y2="409.85" gradientUnits="userSpaceOnUse" gradientTransform="matrix(94.045 0 0 -94.072 -40381.527 38479.52)">
<stop offset="0" stop-color="#00aeff"/>
<stop offset="1" stop-color="#3369e7"/>
</linearGradient>
<path fill="url(#a)" d="M61.8 15.4h242.8c23.9 0 43.4 19.4 43.4 43.4v242.9c0 23.9-19.4 43.4-43.4 43.4H61.8c-23.9 0-43.4-19.4-43.4-43.4v-243c0-23.9 19.4-43.3 43.4-43.3z"/>
<path fill="#FFF" d="M187 98.7c-51.4 0-93.1 41.7-93.1 93.2S135.6 285 187 285s93.1-41.7 93.1-93.2-41.6-93.1-93.1-93.1zm0 158.8c-36.2 0-65.6-29.4-65.6-65.6s29.4-65.6 65.6-65.6 65.6 29.4 65.6 65.6-29.3 65.6-65.6 65.6zm0-117.8v48.9c0 1.4 1.5 2.4 2.8 1.7l43.4-22.5c1-.5 1.3-1.7.8-2.7-9-15.8-25.7-26.6-45-27.3-1 0-2 .8-2 1.9zm-60.8-35.9l-5.7-5.7c-5.6-5.6-14.6-5.6-20.2 0l-6.8 6.8c-5.6 5.6-5.6 14.6 0 20.2l5.6 5.6c.9.9 2.2.7 3-.2 3.3-4.5 6.9-8.8 10.9-12.8 4.1-4.1 8.3-7.7 12.9-11 1-.6 1.1-2 .3-2.9zM217.5 89V77.7c0-7.9-6.4-14.3-14.3-14.3h-33.3c-7.9 0-14.3 6.4-14.3 14.3v11.6c0 1.3 1.2 2.2 2.5 1.9 9.3-2.7 19.1-4.1 29-4.1 9.5 0 18.9 1.3 28 3.8 1.2.3 2.4-.6 2.4-1.9z"/>
<path fill="#182359" d="M842.5 267.6c0 26.7-6.8 46.2-20.5 58.6-13.7 12.4-34.6 18.6-62.8 18.6-10.3 0-31.7-2-48.8-5.8l6.3-31c14.3 3 33.2 3.8 43.1 3.8 15.7 0 26.9-3.2 33.6-9.6s10-15.9 10-28.5v-6.4c-3.9 1.9-9 3.8-15.3 5.8-6.3 1.9-13.6 2.9-21.8 2.9-10.8 0-20.6-1.7-29.5-5.1-8.9-3.4-16.6-8.4-22.9-15-6.3-6.6-11.3-14.9-14.8-24.8s-5.3-27.6-5.3-40.6c0-12.2 1.9-27.5 5.6-37.7 3.8-10.2 9.2-19 16.5-26.3 7.2-7.3 16-12.9 26.3-17s22.4-6.7 35.5-6.7c12.7 0 24.4 1.6 35.8 3.5 11.4 1.9 21.1 3.9 29 6.1v155.2zm-108.7-77.2c0 16.4 3.6 34.6 10.8 42.2 7.2 7.6 16.5 11.4 27.9 11.4 6.2 0 12.1-.9 17.6-2.6 5.5-1.7 9.9-3.7 13.4-6.1v-97.1c-2.8-.6-14.5-3-25.8-3.3-14.2-.4-25 5.4-32.6 14.7-7.5 9.3-11.3 25.6-11.3 40.8zm294.3 0c0 13.2-1.9 23.2-5.8 34.1s-9.4 20.2-16.5 27.9c-7.1 7.7-15.6 13.7-25.6 17.9s-25.4 6.6-33.1 6.6c-7.7-.1-23-2.3-32.9-6.6-9.9-4.3-18.4-10.2-25.5-17.9-7.1-7.7-12.6-17-16.6-27.9s-6-20.9-6-34.1c0-13.2 1.8-25.9 5.8-36.7 4-10.8 9.6-20 16.8-27.7s15.8-13.6 25.6-17.8c9.9-4.2 20.8-6.2 32.6-6.2s22.7 2.1 32.7 6.2c10 4.2 18.6 10.1 25.6 17.8 7.1 7.7 12.6 16.9 16.6 27.7 4.2 10.8 6.3 23.5 6.3 36.7zm-40 .1c0-16.9-3.7-31-10.9-40.8-7.2-9.9-17.3-14.8-30.2-14.8-12.9 0-23 4.9-30.2 14.8-7.2 9.9-10.7 23.9-10.7 40.8 0 17.1 3.6 28.6 10.8 38.5 7.2 10 17.3 14.9 30.2 14.9 12.9 0 23-5 30.2-14.9 7.2-10 10.8-21.4 10.8-38.5zm127.1 86.4c-64.1.3-64.1-51.8-64.1-60.1L1051 32l39.1-6.2v183.6c0 4.7 0 34.5 25.1 34.6v32.9zm68.9 0h-39.3V108.1l39.3-6.2v175zm-19.7-193.5c13.1 0 23.8-10.6 23.8-23.7S1177.6 36 1164.4 36s-23.8 10.6-23.8 23.7 10.7 23.7 23.8 23.7zm117.4 18.6c12.9 0 23.8 1.6 32.6 4.8 8.8 3.2 15.9 7.7 21.1 13.4s8.9 13.5 11.1 21.7c2.3 8.2 3.4 17.2 3.4 27.1v100.6c-6 1.3-15.1 2.8-27.3 4.6s-25.9 2.7-41.1 2.7c-10.1 0-19.4-1-27.7-2.9-8.4-1.9-15.5-5-21.5-9.3-5.9-4.3-10.5-9.8-13.9-16.6-3.3-6.8-5-16.4-5-26.4 0-9.6 1.9-15.7 5.6-22.3 3.8-6.6 8.9-12 15.3-16.2 6.5-4.2 13.9-7.2 22.4-9s17.4-2.7 26.6-2.7c4.3 0 8.8.3 13.6.8s9.8 1.4 15.2 2.7v-6.4c0-4.5-.5-8.8-1.6-12.8-1.1-4.1-3-7.6-5.6-10.7-2.7-3.1-6.2-5.5-10.6-7.2s-10-3-16.7-3c-9 0-17.2 1.1-24.7 2.4-7.5 1.3-13.7 2.8-18.4 4.5l-4.7-32.1c4.9-1.7 12.2-3.4 21.6-5.1s19.5-2.6 30.3-2.6zm3.3 141.9c12 0 20.9-.7 27.1-1.9v-39.8c-2.2-.6-5.3-1.3-9.4-1.9-4.1-.6-8.6-1-13.6-1-4.3 0-8.7.3-13.1 1-4.4.6-8.4 1.8-11.9 3.5s-6.4 4.1-8.5 7.2c-2.2 3.1-3.2 4.9-3.2 9.6 0 9.2 3.2 14.5 9 18 5.9 3.6 13.7 5.3 23.6 5.3zM512.9 103c12.9 0 23.8 1.6 32.6 4.8 8.8 3.2 15.9 7.7 21.1 13.4 5.3 5.8 8.9 13.5 11.1 21.7 2.3 8.2 3.4 17.2 3.4 27.1v100.6c-6 1.3-15.1 2.8-27.3 4.6-12.2 1.8-25.9 2.7-41.1 2.7-10.1 0-19.4-1-27.7-2.9-8.4-1.9-15.5-5-21.5-9.3-5.9-4.3-10.5-9.8-13.9-16.6-3.3-6.8-5-16.4-5-26.4 0-9.6 1.9-15.7 5.6-22.3 3.8-6.6 8.9-12 15.3-16.2 6.5-4.2 13.9-7.2 22.4-9s17.4-2.7 26.6-2.7c4.3 0 8.8.3 13.6.8 4.7.5 9.8 1.4 15.2 2.7v-6.4c0-4.5-.5-8.8-1.6-12.8-1.1-4.1-3-7.6-5.6-10.7-2.7-3.1-6.2-5.5-10.6-7.2-4.4-1.7-10-3-16.7-3-9 0-17.2 1.1-24.7 2.4-7.5 1.3-13.7 2.8-18.4 4.5l-4.7-32.1c4.9-1.7 12.2-3.4 21.6-5.1 9.4-1.8 19.5-2.6 30.3-2.6zm3.4 142c12 0 20.9-.7 27.1-1.9v-39.8c-2.2-.6-5.3-1.3-9.4-1.9-4.1-.6-8.6-1-13.6-1-4.3 0-8.7.3-13.1 1-4.4.6-8.4 1.8-11.9 3.5s-6.4 4.1-8.5 7.2c-2.2 3.1-3.2 4.9-3.2 9.6 0 9.2 3.2 14.5 9 18s13.7 5.3 23.6 5.3zm158.5 31.9c-64.1.3-64.1-51.8-64.1-60.1L610.6 32l39.1-6.2v183.6c0 4.7 0 34.5 25.1 34.6v32.9z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1366 362"><linearGradient id="a" x1="428.258" x2="434.145" y1="404.15" y2="409.85" gradientTransform="matrix(94.045 0 0 -94.072 -40381.527 38479.52)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#00aeff"/><stop offset="1" stop-color="#3369e7"/></linearGradient><path fill="url(#a)" d="M61.8 15.4h242.8c23.9 0 43.4 19.4 43.4 43.4v242.9c0 23.9-19.4 43.4-43.4 43.4H61.8c-23.9 0-43.4-19.4-43.4-43.4v-243c0-23.9 19.4-43.3 43.4-43.3z"/><path fill="#FFF" d="M187 98.7c-51.4 0-93.1 41.7-93.1 93.2S135.6 285 187 285s93.1-41.7 93.1-93.2-41.6-93.1-93.1-93.1zm0 158.8c-36.2 0-65.6-29.4-65.6-65.6s29.4-65.6 65.6-65.6 65.6 29.4 65.6 65.6-29.3 65.6-65.6 65.6zm0-117.8v48.9c0 1.4 1.5 2.4 2.8 1.7l43.4-22.5c1-.5 1.3-1.7.8-2.7-9-15.8-25.7-26.6-45-27.3-1 0-2 .8-2 1.9zm-60.8-35.9l-5.7-5.7c-5.6-5.6-14.6-5.6-20.2 0l-6.8 6.8c-5.6 5.6-5.6 14.6 0 20.2l5.6 5.6c.9.9 2.2.7 3-.2 3.3-4.5 6.9-8.8 10.9-12.8 4.1-4.1 8.3-7.7 12.9-11 1-.6 1.1-2 .3-2.9zM217.5 89V77.7c0-7.9-6.4-14.3-14.3-14.3h-33.3c-7.9 0-14.3 6.4-14.3 14.3v11.6c0 1.3 1.2 2.2 2.5 1.9 9.3-2.7 19.1-4.1 29-4.1 9.5 0 18.9 1.3 28 3.8 1.2.3 2.4-.6 2.4-1.9z"/><path fill="#182359" d="M842.5 267.6c0 26.7-6.8 46.2-20.5 58.6-13.7 12.4-34.6 18.6-62.8 18.6-10.3 0-31.7-2-48.8-5.8l6.3-31c14.3 3 33.2 3.8 43.1 3.8 15.7 0 26.9-3.2 33.6-9.6s10-15.9 10-28.5v-6.4c-3.9 1.9-9 3.8-15.3 5.8-6.3 1.9-13.6 2.9-21.8 2.9-10.8 0-20.6-1.7-29.5-5.1-8.9-3.4-16.6-8.4-22.9-15-6.3-6.6-11.3-14.9-14.8-24.8s-5.3-27.6-5.3-40.6c0-12.2 1.9-27.5 5.6-37.7 3.8-10.2 9.2-19 16.5-26.3 7.2-7.3 16-12.9 26.3-17s22.4-6.7 35.5-6.7c12.7 0 24.4 1.6 35.8 3.5 11.4 1.9 21.1 3.9 29 6.1v155.2zm-108.7-77.2c0 16.4 3.6 34.6 10.8 42.2 7.2 7.6 16.5 11.4 27.9 11.4 6.2 0 12.1-.9 17.6-2.6 5.5-1.7 9.9-3.7 13.4-6.1v-97.1c-2.8-.6-14.5-3-25.8-3.3-14.2-.4-25 5.4-32.6 14.7-7.5 9.3-11.3 25.6-11.3 40.8zm294.3 0c0 13.2-1.9 23.2-5.8 34.1s-9.4 20.2-16.5 27.9c-7.1 7.7-15.6 13.7-25.6 17.9s-25.4 6.6-33.1 6.6c-7.7-.1-23-2.3-32.9-6.6-9.9-4.3-18.4-10.2-25.5-17.9-7.1-7.7-12.6-17-16.6-27.9s-6-20.9-6-34.1c0-13.2 1.8-25.9 5.8-36.7 4-10.8 9.6-20 16.8-27.7s15.8-13.6 25.6-17.8c9.9-4.2 20.8-6.2 32.6-6.2s22.7 2.1 32.7 6.2c10 4.2 18.6 10.1 25.6 17.8 7.1 7.7 12.6 16.9 16.6 27.7 4.2 10.8 6.3 23.5 6.3 36.7zm-40 .1c0-16.9-3.7-31-10.9-40.8-7.2-9.9-17.3-14.8-30.2-14.8-12.9 0-23 4.9-30.2 14.8-7.2 9.9-10.7 23.9-10.7 40.8 0 17.1 3.6 28.6 10.8 38.5 7.2 10 17.3 14.9 30.2 14.9 12.9 0 23-5 30.2-14.9 7.2-10 10.8-21.4 10.8-38.5zm127.1 86.4c-64.1.3-64.1-51.8-64.1-60.1L1051 32l39.1-6.2v183.6c0 4.7 0 34.5 25.1 34.6v32.9zm68.9 0h-39.3V108.1l39.3-6.2v175zm-19.7-193.5c13.1 0 23.8-10.6 23.8-23.7S1177.6 36 1164.4 36s-23.8 10.6-23.8 23.7 10.7 23.7 23.8 23.7zm117.4 18.6c12.9 0 23.8 1.6 32.6 4.8 8.8 3.2 15.9 7.7 21.1 13.4s8.9 13.5 11.1 21.7c2.3 8.2 3.4 17.2 3.4 27.1v100.6c-6 1.3-15.1 2.8-27.3 4.6s-25.9 2.7-41.1 2.7c-10.1 0-19.4-1-27.7-2.9-8.4-1.9-15.5-5-21.5-9.3-5.9-4.3-10.5-9.8-13.9-16.6-3.3-6.8-5-16.4-5-26.4 0-9.6 1.9-15.7 5.6-22.3 3.8-6.6 8.9-12 15.3-16.2 6.5-4.2 13.9-7.2 22.4-9s17.4-2.7 26.6-2.7c4.3 0 8.8.3 13.6.8s9.8 1.4 15.2 2.7v-6.4c0-4.5-.5-8.8-1.6-12.8-1.1-4.1-3-7.6-5.6-10.7-2.7-3.1-6.2-5.5-10.6-7.2s-10-3-16.7-3c-9 0-17.2 1.1-24.7 2.4-7.5 1.3-13.7 2.8-18.4 4.5l-4.7-32.1c4.9-1.7 12.2-3.4 21.6-5.1s19.5-2.6 30.3-2.6zm3.3 141.9c12 0 20.9-.7 27.1-1.9v-39.8c-2.2-.6-5.3-1.3-9.4-1.9-4.1-.6-8.6-1-13.6-1-4.3 0-8.7.3-13.1 1-4.4.6-8.4 1.8-11.9 3.5s-6.4 4.1-8.5 7.2c-2.2 3.1-3.2 4.9-3.2 9.6 0 9.2 3.2 14.5 9 18 5.9 3.6 13.7 5.3 23.6 5.3zM512.9 103c12.9 0 23.8 1.6 32.6 4.8 8.8 3.2 15.9 7.7 21.1 13.4 5.3 5.8 8.9 13.5 11.1 21.7 2.3 8.2 3.4 17.2 3.4 27.1v100.6c-6 1.3-15.1 2.8-27.3 4.6-12.2 1.8-25.9 2.7-41.1 2.7-10.1 0-19.4-1-27.7-2.9-8.4-1.9-15.5-5-21.5-9.3-5.9-4.3-10.5-9.8-13.9-16.6-3.3-6.8-5-16.4-5-26.4 0-9.6 1.9-15.7 5.6-22.3 3.8-6.6 8.9-12 15.3-16.2 6.5-4.2 13.9-7.2 22.4-9s17.4-2.7 26.6-2.7c4.3 0 8.8.3 13.6.8 4.7.5 9.8 1.4 15.2 2.7v-6.4c0-4.5-.5-8.8-1.6-12.8-1.1-4.1-3-7.6-5.6-10.7-2.7-3.1-6.2-5.5-10.6-7.2-4.4-1.7-10-3-16.7-3-9 0-17.2 1.1-24.7 2.4-7.5 1.3-13.7 2.8-18.4 4.5l-4.7-32.1c4.9-1.7 12.2-3.4 21.6-5.1 9.4-1.8 19.5-2.6 30.3-2.6zm3.4 142c12 0 20.9-.7 27.1-1.9v-39.8c-2.2-.6-5.3-1.3-9.4-1.9-4.1-.6-8.6-1-13.6-1-4.3 0-8.7.3-13.1 1-4.4.6-8.4 1.8-11.9 3.5s-6.4 4.1-8.5 7.2c-2.2 3.1-3.2 4.9-3.2 9.6 0 9.2 3.2 14.5 9 18s13.7 5.3 23.6 5.3zm158.5 31.9c-64.1.3-64.1-51.8-64.1-60.1L610.6 32l39.1-6.2v183.6c0 4.7 0 34.5 25.1 34.6v32.9z"/></svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#035bda" d="M46 40L29.317 10.852 22.808 23.96 34.267 37.24 13 39.655zM13.092 18.182L2 36.896 11.442 35.947 28.033 5.678z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="#035bda" d="M46 40L29.317 10.852 22.808 23.96 34.267 37.24 13 39.655zM13.092 18.182L2 36.896 11.442 35.947 28.033 5.678z"/></svg>

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 224 B

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#1565c0" d="M36.094 31.35c-1.695-1.5-3.754-3.225-6.66-7.35-1.865-2.647-3.512-4-5.934-4-2.664 0-4.117 1.25-5.552 3.279-2.1 2.971-2.925 3.971-5.088 5.675-.786.619-4.861 3.172-4.86 7.671C8.001 41.875 11.753 44 15.155 44c4.469 0 5.439-1 8.345-1 3.633 0 5.57 1 8.476 1C37.789 44 39 39.625 39 36.872 39 34.25 37.789 32.85 36.094 31.35zM11.389 24.885c3.124-.694 3.616-3.739 3.611-5.732-.002-.696-.064-1.263-.096-1.558-.198-1.678-2.027-4.55-4.551-4.594-.12-.002-.242.002-.365.013-3.412.314-3.911 5.412-3.911 5.412-.056.287-.082.613-.078.963.031 2.263 1.356 5.527 4.274 5.61C10.623 25.008 10.994 24.973 11.389 24.885M19.503 16C21.99 16 24 13.315 24 9.998 24 6.681 21.99 4 19.503 4 17.015 4 15 6.681 15 9.998 15 13.315 17.015 16 19.503 16M29.522 16.964c.221.031.436.041.645.033 2.696-.103 4.416-3.276 4.781-5.723.037-.241.054-.486.052-.733-.015-2.441-1.831-5.012-3.799-5.49-2.177-.532-4.893 3.173-5.138 5.59-.037.37-.059.739-.063 1.103C25.975 14.296 26.841 16.599 29.522 16.964M41.984 21.142c0-1.281-1.004-5.142-4.742-5.142C33.496 16 33 19.644 33 22.219c0 2.41.187 5.752 4.578 5.781.087.001.176 0 .267-.002 4.027-.094 4.183-4.203 4.152-6.138C41.993 21.561 41.984 21.315 41.984 21.142"/><path fill="#fff" d="M24 31v7.5c0 0 0 1.875 2.625 2.5H33V31h-2.625v7.5h-2.75c0 0-.875-.125-1-.75V31H24zM20 27v4h-3c-2.125.375-4 2.25-3.999 4.875C13.001 35.917 13 35.958 13 36c0 2.75 1.875 4.625 4 5h5.625V27H20zM20 38.75h-2.375c-.75 0-2-1.125-2-2.75s1.25-2.75 2-2.75H20V38.75z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="#1565c0" d="M36.094 31.35c-1.695-1.5-3.754-3.225-6.66-7.35-1.865-2.647-3.512-4-5.934-4-2.664 0-4.117 1.25-5.552 3.279-2.1 2.971-2.925 3.971-5.088 5.675-.786.619-4.861 3.172-4.86 7.671C8.001 41.875 11.753 44 15.155 44c4.469 0 5.439-1 8.345-1 3.633 0 5.57 1 8.476 1C37.789 44 39 39.625 39 36.872 39 34.25 37.789 32.85 36.094 31.35zM11.389 24.885c3.124-.694 3.616-3.739 3.611-5.732-.002-.696-.064-1.263-.096-1.558-.198-1.678-2.027-4.55-4.551-4.594-.12-.002-.242.002-.365.013-3.412.314-3.911 5.412-3.911 5.412-.056.287-.082.613-.078.963.031 2.263 1.356 5.527 4.274 5.61C10.623 25.008 10.994 24.973 11.389 24.885M19.503 16C21.99 16 24 13.315 24 9.998 24 6.681 21.99 4 19.503 4 17.015 4 15 6.681 15 9.998 15 13.315 17.015 16 19.503 16M29.522 16.964c.221.031.436.041.645.033 2.696-.103 4.416-3.276 4.781-5.723.037-.241.054-.486.052-.733-.015-2.441-1.831-5.012-3.799-5.49-2.177-.532-4.893 3.173-5.138 5.59-.037.37-.059.739-.063 1.103C25.975 14.296 26.841 16.599 29.522 16.964M41.984 21.142c0-1.281-1.004-5.142-4.742-5.142C33.496 16 33 19.644 33 22.219c0 2.41.187 5.752 4.578 5.781.087.001.176 0 .267-.002 4.027-.094 4.183-4.203 4.152-6.138C41.993 21.561 41.984 21.315 41.984 21.142"/><path fill="#fff" d="M24 31v7.5c0 0 0 1.875 2.625 2.5H33V31h-2.625v7.5h-2.75c0 0-.875-.125-1-.75V31H24zM20 27v4h-3c-2.125.375-4 2.25-3.999 4.875C13.001 35.917 13 35.958 13 36c0 2.75 1.875 4.625 4 5h5.625V27H20zM20 38.75h-2.375c-.75 0-2-1.125-2-2.75s1.25-2.75 2-2.75H20V38.75z"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save