Compare commits
35 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5969d1a456 | ||
|
219bb6db37 | ||
|
e0f4461fe5 | ||
|
20332ad8f2 | ||
|
8229b7436f | ||
|
c24db5e371 | ||
|
8b6074fef4 | ||
|
3d4a4fcc7e | ||
|
a842da9697 | ||
|
72c4fd9761 | ||
|
f1c3083f09 | ||
|
a29108efdc | ||
|
c679fd6256 | ||
|
49dfb78503 | ||
|
809d54eae2 | ||
|
e76f208516 | ||
|
aad79d1baa | ||
|
221c637409 | ||
|
5a4edd6483 | ||
|
0163b6bfe5 | ||
|
3fa2e339c5 | ||
|
1c857a0c5f | ||
|
302c6080fd | ||
|
ec47bd254a | ||
|
42a6eb0c33 | ||
|
0c0ea3312c | ||
|
1e0275d757 | ||
|
c5f8d5d058 | ||
|
38e99de4fb | ||
|
24be666717 | ||
|
4991ad5085 | ||
|
ed96a4ac21 | ||
|
c61cbb4803 | ||
|
2e7b792039 | ||
|
76096640f4 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,3 +7,4 @@ package-lock.json
|
||||
node_modules/
|
||||
.cache
|
||||
.history
|
||||
_bak.yml
|
||||
|
@@ -1,3 +1,4 @@
|
||||
.cache/
|
||||
.history/
|
||||
.github/
|
||||
_bak.yml
|
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"plugins": {
|
||||
"autoprefixer": true
|
||||
}
|
||||
}
|
76
README.md
76
README.md
@@ -27,7 +27,7 @@
|
||||
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/releases" target="_blank" rel="noopener noreferrer">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/Shen-Yu/hexo-theme-ayer?color=b37feb">
|
||||
</a>
|
||||
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE" target="_blank" rel="noopener noreferrer"><img alt="LICENSE" src="https://img.shields.io/badge/LICENSE-SATA-yellow">
|
||||
<a href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE" target="_blank" rel="noopener noreferrer"><img alt="LICENSE" src="https://img.shields.io/badge/LICENSE-SATA-6ccab8">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -48,12 +48,6 @@
|
||||
|
||||
## Install
|
||||
|
||||
### For hexo < 5.0
|
||||
|
||||
``` shell
|
||||
git clone https://github.com/Shen-Yu/hexo-theme-ayer.git themes/ayer
|
||||
```
|
||||
|
||||
### For hexo >= 5.0
|
||||
|
||||
```shell
|
||||
@@ -63,6 +57,12 @@ npm i hexo-theme-ayer -S
|
||||
- If this theme is newly installed, a `_config.ayer.yml` file will be generated in the root directory after the installation is complete, and you can directly edit the `_config.ayer.yml` file for configuration.
|
||||
- If it is a theme upgrade, you can use the configuration method of hexo < 5.0, or you can move the original configuration file to the root directory and rename it to `_config.ayer.yml`.
|
||||
|
||||
### For hexo < 5.0
|
||||
|
||||
```shell
|
||||
git clone https://github.com/Shen-Yu/hexo-theme-ayer.git themes/ayer
|
||||
```
|
||||
|
||||
## Enable
|
||||
|
||||
Modify `theme` setting in `_config.yml` to `ayer`
|
||||
@@ -79,6 +79,7 @@ git pull
|
||||
```
|
||||
|
||||
## Multi Language Support
|
||||
|
||||
zh-CN(中文简体) en(English) zh-TW(中文繁体) ja(日本語) es(Español) de(Deutsch) fr(Français) ru(Русский) ko(한국어) vi(Tiếng Việt) nl(Nederlands) no(norsk) pt(Português)
|
||||
|
||||
English is default languge, if you want to change, modify `language` option in `_config.yml` file in your Hexo blog's root folder.
|
||||
@@ -169,7 +170,7 @@ word_count:
|
||||
# type:0-close reward; 1-only open in article which you have configured reward:true; 2-open in all articles
|
||||
reward_type: 2
|
||||
# reward word
|
||||
reward_wording: 'Buy me a cup of coffee~'
|
||||
reward_wording: "Buy me a cup of coffee~"
|
||||
# qrcode image path
|
||||
alipay: /images/alipay.jpg
|
||||
# qrcode image path
|
||||
@@ -222,9 +223,9 @@ cnzz:
|
||||
url: #
|
||||
|
||||
# Google Analytics
|
||||
google_analytics: ''
|
||||
google_analytics: ""
|
||||
# Baidu Analytics
|
||||
baidu_analytics: ''
|
||||
baidu_analytics: ""
|
||||
|
||||
# Mathjax Support
|
||||
mathjax: true
|
||||
@@ -239,9 +240,6 @@ katex:
|
||||
# since year
|
||||
since: 2019
|
||||
|
||||
# pageFooter (Set true can let more people know this theme, Thanks!)
|
||||
pageFooter: true
|
||||
|
||||
# only for chinese website
|
||||
# ICP
|
||||
icp:
|
||||
@@ -308,19 +306,36 @@ twikoo:
|
||||
# See: https://github.com/MiniValine/MiniValine
|
||||
minivaline:
|
||||
enable: false
|
||||
md: true
|
||||
# more options https://minivaline.js.org/docs/cn/#/Options
|
||||
backend: waline
|
||||
serverURL: https://waline.vercel.app
|
||||
serverURL: https://minivaline.your-domain.com
|
||||
|
||||
# advertisement
|
||||
# if there is an "ad" word in photo or url,it may blocked by adblock or any other browser extensions
|
||||
ads:
|
||||
ad_1:
|
||||
title: vultr优惠vps
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/vultr.png
|
||||
url: https://www.vultr.com/?ref=8630075
|
||||
width: 300
|
||||
ad_2:
|
||||
title: 云服务器全球购低至2折
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_2.jpg
|
||||
url: https://curl.qcloud.com/kvO7hb43
|
||||
width: 300
|
||||
|
||||
# encrypt settings
|
||||
lock:
|
||||
enable: false
|
||||
password: 123456
|
||||
```
|
||||
|
||||
## Plugins
|
||||
|
||||
+ [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) (for Local Search)
|
||||
- [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) (for Local Search)
|
||||
|
||||
```yml
|
||||
$ npm install hexo-generator-searchdb --save
|
||||
```
|
||||
|
||||
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||
|
||||
```yml
|
||||
@@ -331,7 +346,7 @@ minivaline:
|
||||
format: html
|
||||
```
|
||||
|
||||
+ [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) (for RSS)
|
||||
- [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) (for RSS)
|
||||
|
||||
```yml
|
||||
$ npm install hexo-generator-feed --save
|
||||
@@ -351,17 +366,21 @@ minivaline:
|
||||
order_by: -date
|
||||
```
|
||||
|
||||
+ [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top) (for Sticky Post)
|
||||
- [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top) (for Sticky Post)
|
||||
|
||||
```bash
|
||||
$ npm uninstall hexo-generator-index --save
|
||||
$ npm install hexo-generator-index-pin-top --save
|
||||
```
|
||||
|
||||
## Categories
|
||||
|
||||
```bash
|
||||
hexo new page categories
|
||||
```
|
||||
|
||||
Then paste following codes to file: /source/categories/index.md
|
||||
|
||||
```md
|
||||
---
|
||||
title: categories
|
||||
@@ -371,13 +390,17 @@ layout: "categories"
|
||||
```
|
||||
|
||||
## Tags
|
||||
|
||||
Same as categories.
|
||||
|
||||
## Friend Links
|
||||
|
||||
```bash
|
||||
hexo new page friends
|
||||
```
|
||||
|
||||
Then paste following codes to file: /source/friends/index.md
|
||||
|
||||
```md
|
||||
---
|
||||
title: friends
|
||||
@@ -385,19 +408,18 @@ type: friends
|
||||
layout: "friends"
|
||||
---
|
||||
```
|
||||
|
||||
Then edit `friends_link` in `_config.yml`
|
||||
|
||||
## Gallery
|
||||
|
||||
Need to write in the head of the markdown, this is not a good way to write, I hope to get a better way to write on github.
|
||||
|
||||
```md
|
||||
---
|
||||
title: Gallery
|
||||
|
||||
albums: [
|
||||
["img_url","img_caption"],
|
||||
["img_url","img_caption"]
|
||||
]
|
||||
albums: [["img_url", "img_caption"], ["img_url", "img_caption"]]
|
||||
---
|
||||
```
|
||||
|
||||
@@ -405,13 +427,14 @@ albums: [
|
||||
|
||||
Use Tocbot to parse the title tags (h1~h6) in the content and insert the directory.
|
||||
|
||||
+ ayer/_config.yml
|
||||
- ayer/\_config.yml
|
||||
|
||||
```bash
|
||||
# Toc
|
||||
toc: true
|
||||
```
|
||||
+ If Toc is turned on in ayer/_config.yml, then Tocbot will generate a Toc article directory in the title tag of each blog parsing content, but not all blogs require Toc, so in the Front-matter section of markdown Can be closed:
|
||||
|
||||
- If Toc is turned on in ayer/\_config.yml, then Tocbot will generate a Toc article directory in the title tag of each blog parsing content, but not all blogs require Toc, so in the Front-matter section of markdown Can be closed:
|
||||
|
||||
```md
|
||||
---
|
||||
@@ -433,7 +456,6 @@ This project exists thanks to all the people who contribute.
|
||||
|
||||
[](https://starchart.cc/Shen-Yu/hexo-theme-ayer)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
<a src="https://github.com/Shen-Yu/hexo-theme-ayer">Ayer</a> by <a href="https://github.com/Shen-Yu">Eric-Shen</a> is licensed under <a rel="license" href="https://github.com/Shen-Yu/hexo-theme-ayer/blob/master/LICENSE">SATA-License</a>.
|
||||
|
30
_config.yml
30
_config.yml
@@ -157,12 +157,15 @@ katex:
|
||||
allpost: true
|
||||
copy_tex: false
|
||||
|
||||
# mermaid流程图 三个选项缺一不可(https://mermaid-js.github.io/mermaid/)
|
||||
mermaid:
|
||||
enable: false
|
||||
cdn: https://cdn.jsdelivr.net/npm/mermaid@8.9.2/dist/mermaid.min.js
|
||||
theme: forest
|
||||
|
||||
# 网站成立年份(默认为 2019,若填入年份小于当前年份,则显示为 2018-2019 类似的格式)
|
||||
since: 2015
|
||||
|
||||
# 是否显示页脚信息(建议保留)
|
||||
pageFooter: true
|
||||
|
||||
# ICP备案信息尾部显示
|
||||
icp:
|
||||
enable: false
|
||||
@@ -227,23 +230,26 @@ twikoo:
|
||||
# See: https://github.com/MiniValine/MiniValine
|
||||
minivaline:
|
||||
enable: false
|
||||
md: true
|
||||
# 更多选项 https://minivaline.js.org/docs/cn/#/Options 按照yml格式继续填写即可 (除了 [el] 选项)
|
||||
# emoticonUrl 等列表选项 可参考 https://github.com/MiniValine/hexo-next-minivaline
|
||||
# 下面是一个例子:
|
||||
backend: waline
|
||||
serverURL: https://waline.vercel.app
|
||||
serverURL: https://minivaline.your-domain.com
|
||||
|
||||
# 首页广告配置
|
||||
# 可以根据需要自行增加ad_3,ad_4...,留空则不显示,建议图片和url不要带ad等关键词,否则可能会被adblock等插件屏蔽
|
||||
ads:
|
||||
ad_1:
|
||||
title: 腾讯云限时秒杀
|
||||
title: 云服务器限时秒杀
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_1.jpg
|
||||
url: https://curl.qcloud.com/ezctH6FU
|
||||
width: 300
|
||||
ad_2:
|
||||
title: 云服务器全球购低至2折
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_2.jpg
|
||||
url: https://curl.qcloud.com/kvO7hb43
|
||||
width: 300
|
||||
ad_2:
|
||||
title: vultr优惠vps
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/vultr.png
|
||||
url: https://www.vultr.com/?ref=8630075
|
||||
width: 300
|
||||
|
||||
# 网站开启加密访问,密码可设置任何字符
|
||||
lock:
|
||||
enable: false
|
||||
password: 123456
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Oben
|
||||
copyright_title: Copyright-Hinweis
|
||||
copyright_content: Sofern nicht anders angegeben, liegt das Urheberrecht aller Artikel in diesem Blog beim Autor. Nachdruck bitte Quelle angeben!
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright
|
||||
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright
|
||||
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Arriba
|
||||
copyright_title: Derechos de autor
|
||||
copyright_content: Los derechos de autor son propiedad del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Haut
|
||||
copyright_title: Avis de copyright
|
||||
copyright_content: Le droit d'auteur appartient à l'auteur. Pour les réimpressions commerciales, veuillez contacter l'auteur pour autorisation. Pour les réimpressions non commerciales, veuillez indiquer la source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: 上へ
|
||||
copyright_title: 著作権表示
|
||||
copyright_content: 著作権は著者が所有しています。商業版の複製については、承認について著者に連絡してください。非商業版の複製については、出典を明記してください。
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: 톱
|
||||
copyright_title: 저작권 고지
|
||||
copyright_content: 저작권은 저자가 소유합니다. 상업용 재 인쇄의 경우 승인을 위해 저자에게 문의하십시오. 비상업적 재 인쇄의 경우 출처를 명시하십시오.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright melding
|
||||
copyright_content: Copyright is eigendom van de auteur. Neem voor commerciële herdrukken contact op met de auteur voor autorisatie. Geef de bron aan voor niet-commerciële herdrukken.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Sticky
|
||||
copyright_title: Opphavsrett
|
||||
copyright_content: Opphavsrett eies av forfatteren. For kommersielle opptrykk, vennligst kontakt forfatteren for godkjenning. For ikke-kommersiell uttrykk, vennligst oppgi kilden.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: Sticky
|
||||
copyright_title: direito autoral
|
||||
copyright_content: Os direitos autorais são de propriedade do autor. Para reimpressões comerciais, entre em contato com o autor para obter autorização. Para reimpressões não comerciais, indique a fonte.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: липкий
|
||||
copyright_title: Авторские права
|
||||
copyright_content: Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: dính
|
||||
copyright_title: Bản quyền
|
||||
copyright_content: Bản quyền thuộc sở hữu của tác giả. Đối với tái bản thương mại, xin vui lòng liên hệ với tác giả cho phép. Đối với tái bản phi thương mại, xin vui lòng cho biết nguồn.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: 置顶
|
||||
copyright_title: 版权声明
|
||||
copyright_content: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
|
||||
|
||||
lock:
|
||||
lock_info: 请输入访问密码
|
||||
lock_error: 密码错误,请重试
|
||||
confirm_text: 确定
|
||||
cancel_text: 取消
|
||||
|
@@ -30,3 +30,9 @@ post:
|
||||
sticky: 置頂
|
||||
copyright_title: 版權聲明
|
||||
copyright_content: 本博客所有文章除特別聲明外,著作權歸作者所有。轉載請註明出處!
|
||||
|
||||
lock:
|
||||
lock_info: 請輸入訪問密碼
|
||||
lock_error: 密碼錯誤,請重試
|
||||
confirm_text: 確定
|
||||
cancel_text: 取消
|
||||
|
@@ -1,66 +1,57 @@
|
||||
<%- js('/js/jquery-2.0.3.min') %>
|
||||
<%- js('/js/lazyload.min') %>
|
||||
<%- js('/js/jquery-3.6.0.min') %> <%- js('/js/lazyload.min') %>
|
||||
<!-- Tocbot -->
|
||||
<% if (theme.toc && is_post() && !page.no_toc){ %>
|
||||
<%- js('/js/tocbot.min') %>
|
||||
<% if (theme.toc && is_post() && !page.no_toc){ %> <%- js('/js/tocbot.min') %>
|
||||
<script>
|
||||
tocbot.init({
|
||||
tocSelector: '.tocbot',
|
||||
contentSelector: '.article-entry',
|
||||
headingSelector: 'h1, h2, h3, h4, h5, h6',
|
||||
tocSelector: ".tocbot",
|
||||
contentSelector: ".article-entry",
|
||||
headingSelector: "h1, h2, h3, h4, h5, h6",
|
||||
hasInnerContainers: true,
|
||||
scrollSmooth: true,
|
||||
scrollContainer: 'main',
|
||||
positionFixedSelector: '.tocbot',
|
||||
positionFixedClass: 'is-position-fixed',
|
||||
fixedSidebarOffset: 'auto'
|
||||
scrollContainer: "main",
|
||||
positionFixedSelector: ".tocbot",
|
||||
positionFixedClass: "is-position-fixed",
|
||||
fixedSidebarOffset: "auto",
|
||||
});
|
||||
</script>
|
||||
<% } %>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css"
|
||||
/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.7.0/dist/js/jquery.justifiedGallery.min.js"></script>
|
||||
<%- js('dist/main') %>
|
||||
<!-- ImageViewer -->
|
||||
<% if (theme.image_viewer){ %>
|
||||
<%- partial('viewer') %>
|
||||
<% } %>
|
||||
<% if (theme.image_viewer){ %> <%- partial('viewer') %> <% } %>
|
||||
<!-- MathJax -->
|
||||
<% if (theme.mathjax){ %>
|
||||
<%- partial('mathjax') %>
|
||||
<% if (theme.mathjax){ %> <%- partial('mathjax') %>
|
||||
<script>
|
||||
var ayerConfig = {
|
||||
mathjax: true
|
||||
}
|
||||
mathjax: true,
|
||||
};
|
||||
</script>
|
||||
<% } %>
|
||||
<!-- Katex -->
|
||||
<% if (theme.katex.enable){ %>
|
||||
<%- partial('katex') %>
|
||||
<% } %>
|
||||
<% if (theme.katex.enable){ %> <%- partial('katex') %> <% } %>
|
||||
<!-- busuanzi -->
|
||||
<% if (theme.busuanzi && theme.busuanzi.enable){ %>
|
||||
<%- js('/js/busuanzi-2.3.pure.min') %>
|
||||
<% } %>
|
||||
<% if (theme.busuanzi && theme.busuanzi.enable){ %> <%-
|
||||
js('/js/busuanzi-2.3.pure.min') %> <% } %>
|
||||
<!-- ClickLove -->
|
||||
<% if (theme.click_effect===1){ %>
|
||||
<%- js('/js/clickLove') %>
|
||||
<% } %>
|
||||
<% if (theme.click_effect===1){ %> <%- js('/js/clickLove') %> <% } %>
|
||||
<!-- ClickBoom1 -->
|
||||
<% if (theme.click_effect===2){ %>
|
||||
<script src="https://cdn.jsdelivr.net/npm/animejs@latest/anime.min.js"></script>
|
||||
<%- js('/js/clickBoom1') %>
|
||||
<% } %>
|
||||
<%- js('/js/clickBoom1') %> <% } %>
|
||||
<!-- ClickBoom2 -->
|
||||
<% if (theme.click_effect===3){ %>
|
||||
<%- js('/js/clickBoom2') %>
|
||||
<% } %>
|
||||
<% if (theme.click_effect===3){ %> <%- js('/js/clickBoom2') %> <% } %>
|
||||
<!-- CodeCopy -->
|
||||
<% if (theme.copy_btn == true) { %>
|
||||
<%- css('/css/clipboard') %>
|
||||
<%- partial('post/clipboard') %>
|
||||
<% } %>
|
||||
<% if (theme.copy_btn == true) { %> <%- css('/css/clipboard') %> <%-
|
||||
partial('post/clipboard') %> <% } %>
|
||||
<!-- CanvasBackground -->
|
||||
<% if (theme.canvas_bg == 1) { %>
|
||||
<%- js('/js/dz') %>
|
||||
<% } %>
|
||||
<% if (theme.canvas_bg == 1) { %> <%- js('/js/dz') %> <% } %>
|
||||
<script>
|
||||
if (window.mermaid) {
|
||||
mermaid.initialize({ theme: "<%= theme.mermaid.theme %>" });
|
||||
}
|
||||
</script>
|
||||
|
@@ -10,10 +10,13 @@
|
||||
<meta charset="utf-8" />
|
||||
<% var title = page.title; if (is_archive()) { title = __('archive_a'); if
|
||||
(is_month()) { title += ': ' + page.year + '/' + page.month; } else if
|
||||
(is_year()) { title += ': ' + page.year; } } else if (is_category()) { title
|
||||
= page.category; } else if (is_tag()) {
|
||||
title = __('tag') + ': ' + page.tag; } %> <% if (page.keywords){ %>
|
||||
<meta name="keywords" content="<%= page.keywords %>,<%= config.keywords %>" />
|
||||
(is_year()) { title += ': ' + page.year; } } else if (is_category()) {
|
||||
title = page.category; } else if (is_tag()) { title = __('tag') + ': ' +
|
||||
page.tag; } %> <% if (page.keywords){ %>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="<%= page.keywords %>,<%= config.keywords %>"
|
||||
/>
|
||||
<% } else if (config.keywords){ %>
|
||||
<meta name="keywords" content="<%= config.keywords %>" />
|
||||
<% } %> <% if (page.description){ %>
|
||||
@@ -21,21 +24,37 @@
|
||||
<% } else if (config.description){ %>
|
||||
<meta name="description" content="<%= config.description %>" />
|
||||
<% } %>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||
<title>
|
||||
<% if (title){ %><%= title %> | <% } %> <%= config.title %>
|
||||
</title>
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<title><% if (title){ %><%= title %> | <% } %> <%= config.title %></title>
|
||||
<% if (theme.favicon){ %>
|
||||
<link rel="shortcut icon" href="<%- theme.favicon %>" />
|
||||
<% } %>
|
||||
<%- css('dist/main') %>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/css/remixicon.min.css">
|
||||
<%- css('css/custom') %>
|
||||
<% if (theme.progressBar){ %>
|
||||
<% } %> <%- css('dist/main') %>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/css/remixicon.min.css"
|
||||
/>
|
||||
<%- css('css/custom') %> <% if (theme.progressBar){ %>
|
||||
<script src="https://cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
|
||||
<% } %>
|
||||
<%- partial('google-analytics') %>
|
||||
<%- partial('baidu-analytics') %>
|
||||
</head>
|
||||
<% } %> <%- partial('google-analytics') %> <%- partial('baidu-analytics')
|
||||
%>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
|
||||
/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>
|
||||
|
||||
<!-- mermaid -->
|
||||
<% if (theme.mermaid.enable) { %>
|
||||
<script src="<%= theme.mermaid.cdn %>"></script>
|
||||
<% } %>
|
||||
<style>
|
||||
.swal2-styled.swal2-confirm {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
</html>
|
||||
</html>
|
37
layout/_partial/lock.ejs
Normal file
37
layout/_partial/lock.ejs
Normal file
@@ -0,0 +1,37 @@
|
||||
<% if (theme.lock.enable){ %>
|
||||
<script>
|
||||
const password = "<%= theme.lock.password %>";
|
||||
const lock_password = window.sessionStorage.getItem("lock_password");
|
||||
console.log(password, lock_password);
|
||||
if (lock_password !== password) {
|
||||
Swal.fire({
|
||||
title: "<%= __('lock.lock_info') %>",
|
||||
input: "text",
|
||||
inputAttributes: {
|
||||
autocapitalize: "off",
|
||||
},
|
||||
showCancelButton: false,
|
||||
showLoaderOnConfirm: true,
|
||||
allowOutsideClick: false,
|
||||
confirmButtonText: "<%= __('lock.confirm_text') %>",
|
||||
}).then((result) => {
|
||||
console.log(result);
|
||||
if (result.isConfirmed) {
|
||||
console.log(password);
|
||||
if (result.value === password) {
|
||||
window.sessionStorage.setItem("lock_password", result.value);
|
||||
} else {
|
||||
Swal.fire({
|
||||
icon: "error",
|
||||
title: "<%= __('lock.lock_error') %>",
|
||||
confirmButtonText: "<%= __('lock.confirm_text') %>",
|
||||
allowOutsideClick: false,
|
||||
}).then(() => {
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<% } %>
|
@@ -1,5 +1,5 @@
|
||||
<span>
|
||||
<span><i class="ri-user-3-fill"></i><%- __('site_visitors') %>:<span id="busuanzi_value_site_uv"></span></s>
|
||||
<span><i class="ri-user-3-fill"></i><%- __('site_visitors') %>:<span id="busuanzi_value_site_uv"></span></span>
|
||||
<span class="division">|</span>
|
||||
<span><i class="ri-eye-fill"></i><%- __('page_views') %>:<span id="busuanzi_value_page_pv"></span></span>
|
||||
</span>
|
@@ -1,7 +1,7 @@
|
||||
<% if (theme.gitalk.enable && post.comments) { %>
|
||||
<div class="gitalk" id="gitalk-container"></div>
|
||||
<%- css('https://cdn.jsdelivr.net/npm/gitalk@1.6.2/dist/gitalk.css') %>
|
||||
<%- js('https://cdn.jsdelivr.net/npm/gitalk@1.6.2/dist/gitalk.min.js') %>
|
||||
<%- css('https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css') %>
|
||||
<%- js('https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js') %>
|
||||
<%- js('https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js') %>
|
||||
<script type="text/javascript">
|
||||
var gitalk = new Gitalk({
|
||||
|
@@ -3,7 +3,7 @@
|
||||
<div id="mvcomments-box">
|
||||
<div id="mvcomments"></div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/minivaline@latest"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/minivaline@6"></script>
|
||||
<script>
|
||||
new MiniValine(Object.assign(<%- JSON.stringify(theme.minivaline) %>, {
|
||||
el: '#mvcomments',
|
||||
@@ -24,54 +24,24 @@
|
||||
padding: 5px 0px;
|
||||
}
|
||||
}
|
||||
.darkmode .MiniValine *{
|
||||
color: #f1f1f1!important;
|
||||
:root .darkmode {
|
||||
--ohhho-color-p: #bbb;
|
||||
--ohhho-color-text: #fff;
|
||||
--ohhho-color-card: #252d38;
|
||||
--ohhho-color-block: rgba(68, 68, 68, 0.65);
|
||||
--ohhho-expand-before-background: linear-gradient(
|
||||
180deg,
|
||||
rgba(246, 246, 246, 0),
|
||||
rgba(0, 0, 0, 0.9)
|
||||
);
|
||||
--ohhho-expand-after-background: rgba(0, 0, 0, 0.9);
|
||||
}
|
||||
.darkmode .commentTrigger{
|
||||
background-color: #403e3e !important;
|
||||
.darkmode .ohhho pre {
|
||||
background: #888;
|
||||
border: 1px solid var(--ohhho-color-block);
|
||||
}
|
||||
.darkmode .MiniValine .vpage .more{
|
||||
background: #21232F
|
||||
}
|
||||
.darkmode img{
|
||||
filter: brightness(30%)
|
||||
}
|
||||
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:before{
|
||||
background: linear-gradient(180deg, rgba(246,246,246,0), rgba(0,0,0,0.9))
|
||||
}
|
||||
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment.expand:after{
|
||||
background: rgba(0,0,0,0.9)
|
||||
}
|
||||
.darkmode .MiniValine .vlist .vcard .vcomment-body .text-wrapper .vcomment pre{
|
||||
background: #282c34
|
||||
border: 1px solid #282c34
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-area .textarea-wrapper textarea{
|
||||
color: #000;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-area .auth-section .input-wrapper input{
|
||||
color: #000;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-area .vextra-area .vsmile-icons{
|
||||
background: transparent;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-wrap{
|
||||
border-color: #b2b2b5;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-wrap:hover{
|
||||
border: 1px dashed #2196f3;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-area .auth-section .input-wrapper{
|
||||
border-bottom: 1px dashed #b2b2b5;
|
||||
}
|
||||
.darkmode .MiniValine .vinputs-area .auth-section .input-wrapper:hover{
|
||||
border-bottom: 1px dashed #2196f3;
|
||||
}
|
||||
.darkmode .MiniValine .vbtn{
|
||||
background-color: transparent!important;
|
||||
}
|
||||
.darkmode .MiniValine .vbtn:hover{
|
||||
border: 1px dashed #2196f3;
|
||||
.darkmode .ohhho .vlist .vcard .vcomment-body .vhead {
|
||||
filter: brightness(85%);
|
||||
}
|
||||
</style>
|
||||
<% } %>
|
||||
|
@@ -34,6 +34,7 @@
|
||||
<% if (theme.music&&theme.music.enable){ %>
|
||||
<%- partial('_partial/music') %>
|
||||
<% } %>
|
||||
<%- partial('_partial/lock') %>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
12
package.json
12
package.json
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "hexo-theme-ayer",
|
||||
"version": "1.8.18",
|
||||
"version": "1.9.3",
|
||||
"description": "a clean and elegant theme for hexo.",
|
||||
"scripts": {
|
||||
"dev": "parcel serve source-src/main.js -d source/dist",
|
||||
"build": "rimraf source/dist && parcel build source-src/main.js -d source/dist --no-source-maps",
|
||||
"dev": "rollup -c -w",
|
||||
"build": "rollup -c",
|
||||
"postinstall": "node ./move_config.js",
|
||||
"test": "stylint source-src/css/style.styl -c .stylintrc"
|
||||
},
|
||||
@@ -28,9 +28,9 @@
|
||||
"homepage": "https://shen-yu.gitee.io/",
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^9.8.6",
|
||||
"cssnano": "^4.1.10",
|
||||
"parcel-bundler": "^1.12.5",
|
||||
"postcss-modules": "^1.5.0",
|
||||
"rollup": "^2.50.2",
|
||||
"rollup-plugin-styles": "^3.14.1",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
"stylint": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
16
rollup.config.js
Normal file
16
rollup.config.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import autoprefixer from "autoprefixer";
|
||||
import styles from "rollup-plugin-styles";
|
||||
import { terser } from "rollup-plugin-terser";
|
||||
|
||||
export default {
|
||||
input: "source-src/main.js",
|
||||
output: {
|
||||
dir: "source/dist",
|
||||
format: "iife",
|
||||
assetFileNames: "[name][extname]",
|
||||
},
|
||||
plugins: [
|
||||
styles({ mode: "extract", minimize: true, plugins: [autoprefixer()] }),
|
||||
terser(),
|
||||
],
|
||||
};
|
11
scripts/events/index.js
Normal file
11
scripts/events/index.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/* global hexo */
|
||||
|
||||
"use strict";
|
||||
|
||||
hexo.on("generateBefore", () => {
|
||||
require("./lib/merge-configs")(hexo);
|
||||
});
|
||||
|
||||
hexo.on("generateAfter", () => {
|
||||
require("./lib/hello")(hexo);
|
||||
});
|
38
scripts/events/lib/hello.js
Normal file
38
scripts/events/lib/hello.js
Normal file
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = (hexo) => {
|
||||
const isZh = hexo.theme.i18n.languages[0].search(/zh-CN/i) !== -1;
|
||||
if (isZh) {
|
||||
hexo.log.info(`
|
||||
------------------------------------------------
|
||||
| |
|
||||
| __ ________ _____ |
|
||||
| /\\\\ \\ / / ____| __ \\ |
|
||||
| / \\\\ \\_/ /| |__ | |__) | |
|
||||
| / /\\ \\\\ / | __| | _ / |
|
||||
| / ____ \\| | | |____| | \\ \\ |
|
||||
| /_/ \\_\\_| |______|_| \\_\\ |
|
||||
| |
|
||||
| 感谢使用 Ayer 主题 ! |
|
||||
| 文档: https://shen-yu.gitee.io/2019/ayer/ |
|
||||
| |
|
||||
------------------------------------------------
|
||||
`);
|
||||
} else {
|
||||
hexo.log.info(`
|
||||
----------------------------------------------------
|
||||
| |
|
||||
| __ ________ _____ |
|
||||
| /\\\\ \\ / / ____| __ \\ |
|
||||
| / \\\\ \\_/ /| |__ | |__) | |
|
||||
| / /\\ \\\\ / | __| | _ / |
|
||||
| / ____ \\| | | |____| | \\ \\ |
|
||||
| /_/ \\_\\_| |______|_| \\_\\ |
|
||||
| |
|
||||
| Thank you for using Ayer theme ! |
|
||||
| Docs: https://github.com/Shen-Yu/hexo-theme-ayer |
|
||||
| |
|
||||
----------------------------------------------------
|
||||
`);
|
||||
}
|
||||
};
|
28
scripts/events/lib/merge-configs.js
Normal file
28
scripts/events/lib/merge-configs.js
Normal file
@@ -0,0 +1,28 @@
|
||||
"use strict";
|
||||
|
||||
const objUtil = require("../../utils/object");
|
||||
const { isNotEmptyObject } = require("../../utils/object");
|
||||
|
||||
module.exports = (hexo) => {
|
||||
const isZh = hexo.theme.i18n.languages[0].search(/zh-CN/i) !== -1;
|
||||
|
||||
if (isNotEmptyObject(hexo.config.theme_config)) {
|
||||
hexo.theme.config = objUtil.merge(
|
||||
{},
|
||||
hexo.theme.config,
|
||||
hexo.config.theme_config
|
||||
);
|
||||
if (isZh) {
|
||||
hexo.log.info("[Ayer] 读取 _config.yml 中 theme_config 配置项覆盖配置");
|
||||
} else {
|
||||
hexo.log.info(
|
||||
"[Ayer] Merge theme config from theme_config in _config.yml"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
hexo.log.debug(
|
||||
"[Ayer] Output theme config:\n",
|
||||
JSON.stringify(hexo.theme.config, undefined, 2)
|
||||
);
|
||||
};
|
12
scripts/utils/join-path.js
Normal file
12
scripts/utils/join-path.js
Normal file
@@ -0,0 +1,12 @@
|
||||
'use strict';
|
||||
|
||||
const joinPath = function(base, relative) {
|
||||
if (relative && /^https*:\/\//.test(relative)) {
|
||||
return relative;
|
||||
}
|
||||
return relative
|
||||
? base.replace(/\/+$/, '') + '/' + relative.replace(/^\/+/, '')
|
||||
: base;
|
||||
};
|
||||
|
||||
module.exports = joinPath;
|
31
scripts/utils/object.js
Normal file
31
scripts/utils/object.js
Normal file
@@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
|
||||
const isObject = (obj) => {
|
||||
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
||||
};
|
||||
|
||||
const isNotEmptyObject = (obj) => {
|
||||
return obj && typeof obj === 'object' && Object.getOwnPropertyNames(obj).length !== 0;
|
||||
};
|
||||
|
||||
const merge = (target, ...sources) => {
|
||||
for (const source of sources) {
|
||||
for (const key in source) {
|
||||
if (!Object.prototype.hasOwnProperty.call(source, key)) {
|
||||
continue;
|
||||
}
|
||||
if (isObject(target[key]) && isObject(source[key])) {
|
||||
merge(target[key], source[key]);
|
||||
} else {
|
||||
target[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return target;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
isObject,
|
||||
isNotEmptyObject,
|
||||
merge
|
||||
};
|
@@ -73,7 +73,7 @@
|
||||
margin-right 0.5em
|
||||
margin-left 1em
|
||||
.caption
|
||||
color color-grey
|
||||
color froth
|
||||
display block
|
||||
font-size 0.9em
|
||||
margin-top 0.5em
|
||||
@@ -267,6 +267,8 @@ $article-share-link
|
||||
background google-color
|
||||
text-shadow 0 1px darken(google-color, 20%)
|
||||
|
||||
.pswp__caption__center
|
||||
text-align center !important
|
||||
|
||||
@import "tocbot"
|
||||
@import "gallery"
|
||||
|
@@ -56,12 +56,14 @@
|
||||
color sea
|
||||
|
||||
.float_btns
|
||||
position fixed
|
||||
position sticky
|
||||
bottom 10rem
|
||||
right 50px
|
||||
z-index 9996
|
||||
text-align center
|
||||
transform scale(1.2)
|
||||
width: 50px
|
||||
float: right
|
||||
|
||||
#mask
|
||||
position fixed
|
||||
|
@@ -14,6 +14,13 @@
|
||||
opacity .8
|
||||
background-color body-color
|
||||
&.nav-main
|
||||
height 60vh
|
||||
overflow-y scroll
|
||||
scrollbar-width none
|
||||
-ms-overflow-style none
|
||||
&::-webkit-scrollbar
|
||||
width 0px
|
||||
height 0px
|
||||
.nav-item-link
|
||||
i
|
||||
font-size 1rem
|
||||
|
@@ -10,7 +10,23 @@
|
||||
border-radius 8px
|
||||
>.toc-list
|
||||
position relative
|
||||
overflow hidden
|
||||
overflow-x hidden
|
||||
overflow-y scroll
|
||||
max-height 70vh
|
||||
|
||||
>.toc-list::-webkit-scrollbar
|
||||
width 4px
|
||||
|
||||
>.toc-list::-webkit-scrollbar-thumb
|
||||
border-radius 10px
|
||||
-webkit-box-shadow inset 0 0 5px rgba(0,0,0,0.2)
|
||||
background rgba(0,0,0,0.2)
|
||||
|
||||
>.toc-list::-webkit-scrollbar-track
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2)
|
||||
border-radius: 0
|
||||
background: rgba(0,0,0,0.1)
|
||||
|
||||
|
||||
|
||||
.toc-list
|
||||
|
@@ -15,7 +15,7 @@
|
||||
}, searchAnimDuration);
|
||||
};
|
||||
|
||||
$(".nav-item-search").click(() => {
|
||||
$(".nav-item-search").on("click", () => {
|
||||
if (isSearchAnim) return;
|
||||
startSearchAnim();
|
||||
$searchWrap.addClass("on");
|
||||
@@ -24,7 +24,7 @@
|
||||
});
|
||||
});
|
||||
|
||||
$(document).mouseup((e) => {
|
||||
$(document).on("mouseup", (e) => {
|
||||
const _con = $(".local-search");
|
||||
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
|
||||
$searchWrap.removeClass("on");
|
||||
@@ -32,7 +32,7 @@
|
||||
});
|
||||
|
||||
// Not recommended in mobile, /search.xml is actually large.
|
||||
if ($(".local-search").size()) {
|
||||
if ($(".local-search").length) {
|
||||
$.getScript("/js/search.js", function () {
|
||||
searchFunc("/search.xml", "local-search-input", "local-search-result");
|
||||
});
|
||||
@@ -67,7 +67,7 @@
|
||||
};
|
||||
|
||||
// Share
|
||||
$(".share-outer").click(() => $(".share-wrap").fadeToggle());
|
||||
$(".share-outer").on("click", () => $(".share-wrap").fadeToggle());
|
||||
|
||||
// Lazyload
|
||||
$("img.lazy").lazyload({
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
// ScrollDown
|
||||
$(document).ready(function ($) {
|
||||
$(".anchor").click(function (e) {
|
||||
$(".anchor").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("main").animate({ scrollTop: $(".cover").height() }, "smooth");
|
||||
});
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
// Show and hide the scroll to top link based on scroll position
|
||||
scrollElem.hide();
|
||||
$(".content").scroll(function () {
|
||||
$(".content").on("scroll", () => {
|
||||
const scrollTop = $(".content").scrollTop();
|
||||
if (scrollTop > upperLimit) {
|
||||
$(scrollElem).stop().fadeTo(200, 0.6); // fade back in
|
||||
@@ -112,28 +112,41 @@
|
||||
});
|
||||
|
||||
// Scroll to top animation on click
|
||||
$(scrollElem).click(function () {
|
||||
$(scrollElem).on("click", () => {
|
||||
$(".content").animate({ scrollTop: 0 }, scrollSpeed);
|
||||
return false;
|
||||
});
|
||||
})();
|
||||
|
||||
// Caption
|
||||
$(".article-entry").each(function (i) {
|
||||
$(this)
|
||||
.find("img")
|
||||
.each(function () {
|
||||
if ($(this).parent().is("a")) return;
|
||||
|
||||
const { alt } = this;
|
||||
|
||||
if (alt) $(this).after('<span class="caption">' + alt + "</span>");
|
||||
});
|
||||
});
|
||||
|
||||
// Mobile Nav
|
||||
const $content = $(".content"),
|
||||
$sidebar = $(".sidebar");
|
||||
|
||||
$(".navbar-toggle").on("click", function () {
|
||||
$(".navbar-toggle").on("click", () => {
|
||||
$(".content,.sidebar").addClass("anim");
|
||||
$content.toggleClass("on");
|
||||
$sidebar.toggleClass("on");
|
||||
});
|
||||
|
||||
// Reward
|
||||
$("#reward-btn").click(() => {
|
||||
$("#reward-btn").on("click", () => {
|
||||
$("#reward").fadeIn(150);
|
||||
$("#mask").fadeIn(150);
|
||||
});
|
||||
$("#reward .close, #mask").click(() => {
|
||||
$("#reward .close, #mask").on("click", () => {
|
||||
$("#mask").fadeOut(100);
|
||||
$("#reward").fadeOut(100);
|
||||
});
|
||||
@@ -146,7 +159,7 @@
|
||||
$("body").removeClass("darkmode");
|
||||
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
|
||||
}
|
||||
$("#todark").click(() => {
|
||||
$("#todark").on("click", () => {
|
||||
if (sessionStorage.getItem("darkmode") == 1) {
|
||||
$("body").removeClass("darkmode");
|
||||
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
|
||||
|
@@ -1,3 +1,3 @@
|
||||
import './css/style.styl'
|
||||
import './js/ayer'
|
||||
import './js/share'
|
||||
import "./css/style.styl";
|
||||
import "./js/ayer";
|
||||
import "./js/share";
|
||||
|
2
source/dist/main.css
vendored
2
source/dist/main.css
vendored
File diff suppressed because one or more lines are too long
10
source/dist/main.js
vendored
10
source/dist/main.js
vendored
@@ -1,9 +1 @@
|
||||
parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"MiQR":[function(require,module,exports) {
|
||||
|
||||
},{}],"jSg4":[function(require,module,exports) {
|
||||
!function(e){var o=e(".search-form-wrap"),a=!1;e(".nav-item-search").click(function(){var n;a||(a=!0,o.addClass("on"),n=function(){e(".local-search-input").focus()},setTimeout(function(){a=!1,n&&n()},200))}),e(document).mouseup(function(a){var n=e(".local-search");n.is(a.target)||0!==n.has(a.target).length||o.removeClass("on")}),e(".local-search").size()&&e.getScript("/js/search.js",function(){searchFunc("/search.xml","local-search-input","local-search-result")});var n;e(".share-outer").click(function(){return e(".share-wrap").fadeToggle()}),e("img.lazy").lazyload({effect:"fadeIn"}),e("#gallery").justifiedGallery({rowHeight:200,margins:5}),e(document).ready(function(e){e(".anchor").click(function(o){o.preventDefault(),e("main").animate({scrollTop:e(".cover").height()},"smooth")})}),(n=e("#totop")).hide(),e(".content").scroll(function(){e(".content").scrollTop()>1e3?e(n).stop().fadeTo(200,.6):e(n).stop().fadeTo(200,0)}),e(n).click(function(){return e(".content").animate({scrollTop:0},1e3),!1});var t=e(".content"),r=e(".sidebar");e(".navbar-toggle").on("click",function(){e(".content,.sidebar").addClass("anim"),t.toggleClass("on"),r.toggleClass("on")}),e("#reward-btn").click(function(){e("#reward").fadeIn(150),e("#mask").fadeIn(150)}),e("#reward .close, #mask").click(function(){e("#mask").fadeOut(100),e("#reward").fadeOut(100)}),1==sessionStorage.getItem("darkmode")?(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line")):(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line")),e("#todark").click(function(){1==sessionStorage.getItem("darkmode")?(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line"),sessionStorage.removeItem("darkmode")):(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line"),sessionStorage.setItem("darkmode",1))});console.log("%c%s%c%s%c%s","background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;","主题不错?⭐star 支持一下 ->","background-color: #ffbca2; padding: 8px; font-size: 14px;","https://github.com/Shen-Yu/hexo-theme-ayer","background-color: #eaf8ff;","\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n")}(jQuery),function(e){"use strict";!function(o){var a=window,n=document,t=e,r="".concat("https:"===n.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),s=n.createElement("script"),c=n.getElementsByTagName("script")[0];s.type="text/javascript",s.setAttribute("charset","UTF-8"),s.async=!0,s.src=r,s.id="LA_COLLECT",t.d=s;var i=function(){a.LA.ids.push(t)};a.LA?a.LA.ids&&i():(a.LA=e,a.LA.ids=[],i()),c.parentNode.insertBefore(s,c)}()}({id:"JGjrOr2rebvP6q2a",ck:"JGjrOr2rebvP6q2a"});
|
||||
},{}],"BNiz":[function(require,module,exports) {
|
||||
function e(e,t){e=e.replace(/<%-sUrl%>/g,encodeURIComponent(t.sUrl)).replace(/<%-sTitle%>/g,encodeURIComponent(t.sTitle)).replace(/<%-sDesc%>/g,encodeURIComponent(t.sDesc)).replace(/<%-sPic%>/g,encodeURIComponent(t.sPic));window.open(e)}function t(){$(".wx-share-modal").addClass("in ready"),$("#share-mask").show()}function s(){$(".wx-share-modal").removeClass("in ready"),$("#share-mask").hide()}function o(s,o){"weibo"===s?e("http://service.weibo.com/share/share.php?url=<%-sUrl%>&title=<%-sTitle%>&pic=<%-sPic%>",o):"qq"===s?e("http://connect.qq.com/widget/shareqq/index.html?url=<%-sUrl%>&title=<%-sTitle%>&source=<%-sDesc%>",o):"douban"===s?e("https://www.douban.com/share/service?image=<%-sPic%>&href=<%-sUrl%>&name=<%-sTitle%>&text=<%-sDesc%>",o):"qzone"===s?e("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%-sUrl%>&title=<%-sTitle%>&pics=<%-sPic%>&summary=<%-sDesc%>",o):"facebook"===s?e("https://www.facebook.com/sharer/sharer.php?u=<%-sUrl%>",o):"twitter"===s?e("https://twitter.com/intent/tweet?text=<%-sTitle%>&url=<%-sUrl%>",o):"google"===s?e("https://plus.google.com/share?url=<%-sUrl%>",o):"weixin"===s&&t()}var r=function(){var e=document.querySelectorAll(".share-sns");if(e&&0!==e.length){var t=window.location.href,r=document.querySelector("title").innerHTML,c=document.querySelectorAll(".article-entry img").length?document.querySelector(".article-entry img").getAttribute("src"):"";""===c||/^(http:|https:)?\/\//.test(c)||(c=window.location.origin+c),e.forEach(function(e){e.onclick=function(s){o(e.getAttribute("data-type"),{sUrl:t,sPic:c,sTitle:r,sDesc:r})}}),document.querySelector("#mask").onclick=s,document.querySelector(".modal-close").onclick=s}};r();
|
||||
},{}],"epB2":[function(require,module,exports) {
|
||||
"use strict";require("./css/style.styl"),require("./js/ayer"),require("./js/share");
|
||||
},{"./css/style.styl":"MiQR","./js/ayer":"jSg4","./js/share":"BNiz"}]},{},["epB2"], null)
|
||||
!function(){"use strict";var e;function t(e,t){e=e.replace(/<%-sUrl%>/g,encodeURIComponent(t.sUrl)).replace(/<%-sTitle%>/g,encodeURIComponent(t.sTitle)).replace(/<%-sDesc%>/g,encodeURIComponent(t.sDesc)).replace(/<%-sPic%>/g,encodeURIComponent(t.sPic));window.open(e)}function o(){$(".wx-share-modal").removeClass("in ready"),$("#share-mask").hide()}function s(e,o){"weibo"===e?t("http://service.weibo.com/share/share.php?url=<%-sUrl%>&title=<%-sTitle%>&pic=<%-sPic%>",o):"qq"===e?t("http://connect.qq.com/widget/shareqq/index.html?url=<%-sUrl%>&title=<%-sTitle%>&source=<%-sDesc%>",o):"douban"===e?t("https://www.douban.com/share/service?image=<%-sPic%>&href=<%-sUrl%>&name=<%-sTitle%>&text=<%-sDesc%>",o):"qzone"===e?t("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=<%-sUrl%>&title=<%-sTitle%>&pics=<%-sPic%>&summary=<%-sDesc%>",o):"facebook"===e?t("https://www.facebook.com/sharer/sharer.php?u=<%-sUrl%>",o):"twitter"===e?t("https://twitter.com/intent/tweet?text=<%-sTitle%>&url=<%-sUrl%>",o):"google"===e?t("https://plus.google.com/share?url=<%-sUrl%>",o):"weixin"===e&&($(".wx-share-modal").addClass("in ready"),$("#share-mask").show())}!function(e){let t=e(".search-form-wrap"),o=!1;e(".nav-item-search").on("click",(()=>{var s;o||(o=!0,t.addClass("on"),s=function(){e(".local-search-input").focus()},setTimeout((function(){o=!1,s&&s()}),200))})),e(document).on("mouseup",(o=>{const s=e(".local-search");s.is(o.target)||0!==s.has(o.target).length||t.removeClass("on")})),e(".local-search").length&&e.getScript("/js/search.js",(function(){searchFunc("/search.xml","local-search-input","local-search-result")})),e(".share-outer").on("click",(()=>e(".share-wrap").fadeToggle())),e("img.lazy").lazyload({effect:"fadeIn"}),e("#gallery").justifiedGallery({rowHeight:200,margins:5}),e(document).ready((function(e){e(".anchor").on("click",(function(t){t.preventDefault(),e("main").animate({scrollTop:e(".cover").height()},"smooth")}))})),(()=>{const t=e("#totop");t.hide(),e(".content").on("scroll",(()=>{e(".content").scrollTop()>1e3?e(t).stop().fadeTo(200,.6):e(t).stop().fadeTo(200,0)})),e(t).on("click",(()=>(e(".content").animate({scrollTop:0},1e3),!1)))})(),e(".article-entry").each((function(t){e(this).find("img").each((function(){if(e(this).parent().is("a"))return;const{alt:t}=this;t&&e(this).after('<span class="caption">'+t+"</span>")}))}));const s=e(".content"),r=e(".sidebar");e(".navbar-toggle").on("click",(()=>{e(".content,.sidebar").addClass("anim"),s.toggleClass("on"),r.toggleClass("on")})),e("#reward-btn").on("click",(()=>{e("#reward").fadeIn(150),e("#mask").fadeIn(150)})),e("#reward .close, #mask").on("click",(()=>{e("#mask").fadeOut(100),e("#reward").fadeOut(100)})),1==sessionStorage.getItem("darkmode")?(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line")):(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line")),e("#todark").on("click",(()=>{1==sessionStorage.getItem("darkmode")?(e("body").removeClass("darkmode"),e("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line"),sessionStorage.removeItem("darkmode")):(e("body").addClass("darkmode"),e("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line"),sessionStorage.setItem("darkmode",1))}));console.log("%c%s%c%s%c%s","background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;","主题不错?⭐star 支持一下 ->","background-color: #ffbca2; padding: 8px; font-size: 14px;","https://github.com/Shen-Yu/hexo-theme-ayer","background-color: #eaf8ff;","\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n")}(jQuery),e={id:"JGjrOr2rebvP6q2a",ck:"JGjrOr2rebvP6q2a"},function(t){var o=window,s=document,r=e,n="".concat("https:"===s.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),a=s.createElement("script"),c=s.getElementsByTagName("script")[0];a.type="text/javascript",a.setAttribute("charset","UTF-8"),a.async=!0,a.src=n,a.id="LA_COLLECT",r.d=a;var i=function(){o.LA.ids.push(r)};o.LA?o.LA.ids&&i():(o.LA=e,o.LA.ids=[],i()),c.parentNode.insertBefore(a,c)}();(()=>{let e=document.querySelectorAll(".share-sns");if(!e||0===e.length)return;let t=window.location.href,r=document.querySelector("title").innerHTML,n=document.querySelectorAll(".article-entry img").length?document.querySelector(".article-entry img").getAttribute("src"):"";""===n||/^(http:|https:)?\/\//.test(n)||(n=window.location.origin+n),e.forEach((e=>{e.onclick=o=>{s(e.getAttribute("data-type"),{sUrl:t,sPic:n,sTitle:r,sDesc:r})}})),document.querySelector("#mask").onclick=o,document.querySelector(".modal-close").onclick=o})()}();
|
||||
|
@@ -43,7 +43,7 @@ function setParticuleDirection(p) {
|
||||
let radius = [-1, 1][anime.random(0, 1)] * value;
|
||||
return {
|
||||
x: p.x + radius * Math.cos(angle),
|
||||
y: p.y + radius * Math.sin(angle)
|
||||
y: p.y + radius * Math.sin(angle),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ function animateParticules(x, y) {
|
||||
radius: 0.1,
|
||||
duration: anime.random(minAnimeDuration, maxAnimeDuration),
|
||||
easing: "easeOutExpo",
|
||||
update: renderParticule
|
||||
update: renderParticule,
|
||||
})
|
||||
.add({
|
||||
targets: circle,
|
||||
@@ -122,12 +122,12 @@ function animateParticules(x, y) {
|
||||
alpha: {
|
||||
value: 0,
|
||||
easing: "linear",
|
||||
duration: anime.random(600, 800)
|
||||
duration: anime.random(600, 800),
|
||||
},
|
||||
duration: anime.random(1200, 1800),
|
||||
easing: "easeOutExpo",
|
||||
update: renderParticule,
|
||||
offset: 0
|
||||
offset: 0,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ let render = anime({
|
||||
duration: Infinity,
|
||||
update: function () {
|
||||
ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
document.addEventListener(
|
||||
|
@@ -1,51 +1,62 @@
|
||||
class Circle {
|
||||
constructor({ origin, speed, color, angle, context }) {
|
||||
this.origin = origin
|
||||
this.position = { ...this.origin }
|
||||
this.color = color
|
||||
this.speed = speed
|
||||
this.angle = angle
|
||||
this.context = context
|
||||
this.renderCount = 0
|
||||
this.origin = origin;
|
||||
this.position = { ...this.origin };
|
||||
this.color = color;
|
||||
this.speed = speed;
|
||||
this.angle = angle;
|
||||
this.context = context;
|
||||
this.renderCount = 0;
|
||||
}
|
||||
|
||||
draw() {
|
||||
this.context.fillStyle = this.color
|
||||
this.context.beginPath()
|
||||
this.context.arc(this.position.x, this.position.y, 2, 0, Math.PI * 2)
|
||||
this.context.fill()
|
||||
this.context.fillStyle = this.color;
|
||||
this.context.beginPath();
|
||||
this.context.arc(this.position.x, this.position.y, 2, 0, Math.PI * 2);
|
||||
this.context.fill();
|
||||
}
|
||||
|
||||
move() {
|
||||
this.position.x = (Math.sin(this.angle) * this.speed) + this.position.x
|
||||
this.position.y = (Math.cos(this.angle) * this.speed) + this.position.y + (this.renderCount * 0.3)
|
||||
this.renderCount++
|
||||
this.position.x = Math.sin(this.angle) * this.speed + this.position.x;
|
||||
this.position.y =
|
||||
Math.cos(this.angle) * this.speed +
|
||||
this.position.y +
|
||||
this.renderCount * 0.3;
|
||||
this.renderCount++;
|
||||
}
|
||||
}
|
||||
|
||||
class Boom {
|
||||
constructor({ origin, context, circleCount = 10, area }) {
|
||||
this.origin = origin
|
||||
this.context = context
|
||||
this.circleCount = circleCount
|
||||
this.area = area
|
||||
this.stop = false
|
||||
this.circles = []
|
||||
this.origin = origin;
|
||||
this.context = context;
|
||||
this.circleCount = circleCount;
|
||||
this.area = area;
|
||||
this.stop = false;
|
||||
this.circles = [];
|
||||
}
|
||||
|
||||
randomArray(range) {
|
||||
const length = range.length
|
||||
const randomIndex = Math.floor(length * Math.random())
|
||||
return range[randomIndex]
|
||||
const length = range.length;
|
||||
const randomIndex = Math.floor(length * Math.random());
|
||||
return range[randomIndex];
|
||||
}
|
||||
|
||||
randomColor() {
|
||||
const range = ['8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
|
||||
return '#' + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range) + this.randomArray(range)
|
||||
const range = ["8", "9", "A", "B", "C", "D", "E", "F"];
|
||||
return (
|
||||
"#" +
|
||||
this.randomArray(range) +
|
||||
this.randomArray(range) +
|
||||
this.randomArray(range) +
|
||||
this.randomArray(range) +
|
||||
this.randomArray(range) +
|
||||
this.randomArray(range)
|
||||
);
|
||||
}
|
||||
|
||||
randomRange(start, end) {
|
||||
return (end - start) * Math.random() + start
|
||||
return (end - start) * Math.random() + start;
|
||||
}
|
||||
|
||||
init() {
|
||||
@@ -55,42 +66,45 @@ class Circle {
|
||||
origin: this.origin,
|
||||
color: this.randomColor(),
|
||||
angle: this.randomRange(Math.PI - 1, Math.PI + 1),
|
||||
speed: this.randomRange(1, 6)
|
||||
})
|
||||
this.circles.push(circle)
|
||||
speed: this.randomRange(1, 6),
|
||||
});
|
||||
this.circles.push(circle);
|
||||
}
|
||||
}
|
||||
|
||||
move() {
|
||||
this.circles.forEach((circle, index) => {
|
||||
if (circle.position.x > this.area.width || circle.position.y > this.area.height) {
|
||||
return this.circles.splice(index, 1)
|
||||
if (
|
||||
circle.position.x > this.area.width ||
|
||||
circle.position.y > this.area.height
|
||||
) {
|
||||
return this.circles.splice(index, 1);
|
||||
}
|
||||
circle.move()
|
||||
})
|
||||
circle.move();
|
||||
});
|
||||
if (this.circles.length == 0) {
|
||||
this.stop = true
|
||||
this.stop = true;
|
||||
}
|
||||
}
|
||||
|
||||
draw() {
|
||||
this.circles.forEach(circle => circle.draw())
|
||||
this.circles.forEach((circle) => circle.draw());
|
||||
}
|
||||
}
|
||||
|
||||
class CursorSpecialEffects {
|
||||
constructor() {
|
||||
this.computerCanvas = document.createElement('canvas')
|
||||
this.renderCanvas = document.createElement('canvas')
|
||||
this.computerCanvas = document.createElement("canvas");
|
||||
this.renderCanvas = document.createElement("canvas");
|
||||
|
||||
this.computerContext = this.computerCanvas.getContext('2d')
|
||||
this.renderContext = this.renderCanvas.getContext('2d')
|
||||
this.computerContext = this.computerCanvas.getContext("2d");
|
||||
this.renderContext = this.renderCanvas.getContext("2d");
|
||||
|
||||
this.globalWidth = window.innerWidth
|
||||
this.globalHeight = window.innerHeight
|
||||
this.globalWidth = window.innerWidth;
|
||||
this.globalHeight = window.innerHeight;
|
||||
|
||||
this.booms = []
|
||||
this.running = false
|
||||
this.booms = [];
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
handleMouseDown(e) {
|
||||
@@ -99,56 +113,68 @@ class Circle {
|
||||
context: this.computerContext,
|
||||
area: {
|
||||
width: this.globalWidth,
|
||||
height: this.globalHeight
|
||||
}
|
||||
})
|
||||
boom.init()
|
||||
this.booms.push(boom)
|
||||
this.running || this.run()
|
||||
height: this.globalHeight,
|
||||
},
|
||||
});
|
||||
boom.init();
|
||||
this.booms.push(boom);
|
||||
this.running || this.run();
|
||||
}
|
||||
|
||||
handlePageHide() {
|
||||
this.booms = []
|
||||
this.running = false
|
||||
this.booms = [];
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
init() {
|
||||
const style = this.renderCanvas.style
|
||||
style.position = 'fixed'
|
||||
style.top = style.left = 0
|
||||
style.zIndex = '99999'
|
||||
style.pointerEvents = 'none'
|
||||
const style = this.renderCanvas.style;
|
||||
style.position = "fixed";
|
||||
style.top = style.left = 0;
|
||||
style.zIndex = "99999";
|
||||
style.pointerEvents = "none";
|
||||
|
||||
style.width = this.renderCanvas.width = this.computerCanvas.width = this.globalWidth
|
||||
style.height = this.renderCanvas.height = this.computerCanvas.height = this.globalHeight
|
||||
style.width =
|
||||
this.renderCanvas.width =
|
||||
this.computerCanvas.width =
|
||||
this.globalWidth;
|
||||
style.height =
|
||||
this.renderCanvas.height =
|
||||
this.computerCanvas.height =
|
||||
this.globalHeight;
|
||||
|
||||
document.body.append(this.renderCanvas)
|
||||
document.body.append(this.renderCanvas);
|
||||
|
||||
window.addEventListener('mousedown', this.handleMouseDown.bind(this))
|
||||
window.addEventListener('pagehide', this.handlePageHide.bind(this))
|
||||
window.addEventListener("mousedown", this.handleMouseDown.bind(this));
|
||||
window.addEventListener("pagehide", this.handlePageHide.bind(this));
|
||||
}
|
||||
|
||||
run() {
|
||||
this.running = true
|
||||
this.running = true;
|
||||
if (this.booms.length == 0) {
|
||||
return this.running = false
|
||||
return (this.running = false);
|
||||
}
|
||||
|
||||
requestAnimationFrame(this.run.bind(this))
|
||||
requestAnimationFrame(this.run.bind(this));
|
||||
|
||||
this.computerContext.clearRect(0, 0, this.globalWidth, this.globalHeight)
|
||||
this.renderContext.clearRect(0, 0, this.globalWidth, this.globalHeight)
|
||||
this.computerContext.clearRect(0, 0, this.globalWidth, this.globalHeight);
|
||||
this.renderContext.clearRect(0, 0, this.globalWidth, this.globalHeight);
|
||||
|
||||
this.booms.forEach((boom, index) => {
|
||||
if (boom.stop) {
|
||||
return this.booms.splice(index, 1)
|
||||
return this.booms.splice(index, 1);
|
||||
}
|
||||
boom.move()
|
||||
boom.draw()
|
||||
})
|
||||
this.renderContext.drawImage(this.computerCanvas, 0, 0, this.globalWidth, this.globalHeight)
|
||||
boom.move();
|
||||
boom.draw();
|
||||
});
|
||||
this.renderContext.drawImage(
|
||||
this.computerCanvas,
|
||||
0,
|
||||
0,
|
||||
this.globalWidth,
|
||||
this.globalHeight
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const cursorSpecialEffects = new CursorSpecialEffects()
|
||||
cursorSpecialEffects.init()
|
||||
const cursorSpecialEffects = new CursorSpecialEffects();
|
||||
cursorSpecialEffects.init();
|
||||
|
6
source/js/jquery-2.0.3.min.js
vendored
6
source/js/jquery-2.0.3.min.js
vendored
File diff suppressed because one or more lines are too long
2
source/js/jquery-3.6.0.min.js
vendored
Normal file
2
source/js/jquery-3.6.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user