Compare commits
245 Commits
Author | SHA1 | Date | |
---|---|---|---|
1755d5d5b2 | |||
73b06f3cd4 | |||
![]() |
6bc9a57c00 | ||
![]() |
3e604cbdeb | ||
![]() |
bbf2d4f813 | ||
![]() |
3eda3ac083 | ||
![]() |
a6991680b8 | ||
![]() |
7a307a72a0 | ||
![]() |
13d9ad7f32 | ||
![]() |
8b2c9e1482 | ||
![]() |
86e8ee7e7d | ||
![]() |
495ac97dbd | ||
![]() |
af3de3609d | ||
![]() |
3bffe42e3e | ||
![]() |
d738b144b3 | ||
![]() |
f7983d906a | ||
![]() |
5190eb1920 | ||
![]() |
ee7ce903ff | ||
![]() |
abec39b9ec | ||
![]() |
6d65d92943 | ||
![]() |
f215616230 | ||
![]() |
60b14e65e9 | ||
![]() |
0b8bdc0e00 | ||
![]() |
4ec1f8e732 | ||
![]() |
65a7a9c536 | ||
![]() |
23e220b5f3 | ||
![]() |
e9297ac28b | ||
![]() |
ba5ae7c295 | ||
![]() |
9cd3e0bf68 | ||
![]() |
b2e0be5a6a | ||
![]() |
088da43913 | ||
![]() |
351d6728d0 | ||
![]() |
27d3a33222 | ||
![]() |
2ab1e3ae47 | ||
![]() |
8051ec1f09 | ||
![]() |
b559782447 | ||
![]() |
9aaaf388f8 | ||
![]() |
edb57eea34 | ||
![]() |
f955bcfa85 | ||
![]() |
45f7a84631 | ||
![]() |
f7f5311e6f | ||
![]() |
c4649b8284 | ||
![]() |
56526c8dac | ||
![]() |
df8f88f9c7 | ||
![]() |
bb7d753e4b | ||
![]() |
a736e8d11c | ||
![]() |
ae09494361 | ||
![]() |
ee4a22d88a | ||
![]() |
976af2c92d | ||
![]() |
fdfcadadcc | ||
![]() |
4e2229a73a | ||
![]() |
1c07248765 | ||
![]() |
ebd38a18ae | ||
![]() |
f92118257a | ||
![]() |
e6ee562996 | ||
![]() |
85c3eb9d3b | ||
![]() |
77da27a94b | ||
![]() |
27ca39f39e | ||
![]() |
1076ba9282 | ||
![]() |
b8ac0c8f95 | ||
![]() |
569b733e2a | ||
![]() |
67b5ae3a3a | ||
![]() |
d155afe2ae | ||
![]() |
e6abae4d5c | ||
![]() |
119b715655 | ||
![]() |
1b98206cad | ||
![]() |
9e42b3fad1 | ||
![]() |
d560e45ca2 | ||
![]() |
046bb90685 | ||
![]() |
e86002e941 | ||
![]() |
f8ac686c1c | ||
![]() |
082fb48650 | ||
![]() |
c07ff1df05 | ||
![]() |
c5c1f03557 | ||
![]() |
4e05bfb399 | ||
![]() |
30212827f0 | ||
![]() |
5aaeae2885 | ||
![]() |
526a4b7005 | ||
![]() |
b4fd858b94 | ||
![]() |
ad03e3011e | ||
![]() |
5686c96de2 | ||
![]() |
15933757ca | ||
![]() |
5610d561bb | ||
![]() |
385f0f023b | ||
![]() |
40c36a70f0 | ||
![]() |
25f978e06e | ||
![]() |
a0ce0996e0 | ||
![]() |
15c06f3445 | ||
![]() |
25aff95260 | ||
![]() |
93ec7e56e6 | ||
![]() |
cf47decf89 | ||
![]() |
b27a449dc5 | ||
![]() |
a7c7854617 | ||
![]() |
89a8289f68 | ||
![]() |
11685b9b7b | ||
![]() |
607d67051f | ||
![]() |
8e3409c4af | ||
![]() |
6ebb7d928a | ||
![]() |
509ca385d7 | ||
![]() |
a1117d3403 | ||
![]() |
d5a25fb0cc | ||
![]() |
3b4f87bdbf | ||
![]() |
43d403a019 | ||
![]() |
2ba53504e1 | ||
![]() |
2fe68caed9 | ||
![]() |
f59fca14f8 | ||
![]() |
39e17d6f68 | ||
![]() |
e08456419c | ||
![]() |
8405b789e9 | ||
![]() |
db7095c0bb | ||
![]() |
24229f1802 | ||
![]() |
b7ec24fd1b | ||
![]() |
574be4e134 | ||
![]() |
9453520e2a | ||
![]() |
35fff3e0cc | ||
![]() |
dfcdaf9245 | ||
![]() |
b4c5e79c1b | ||
![]() |
7be11c4b7f | ||
![]() |
03b83da513 | ||
![]() |
ccd85b2436 | ||
![]() |
53ad048763 | ||
![]() |
85871aadfc | ||
![]() |
61079367ef | ||
![]() |
07e199ba11 | ||
![]() |
92a55d49e5 | ||
![]() |
ee86b0d152 | ||
![]() |
53f3a902c1 | ||
![]() |
05dba844d7 | ||
![]() |
d44d4c2a79 | ||
![]() |
a4f496b796 | ||
![]() |
03ebd658ea | ||
![]() |
77a33df023 | ||
![]() |
588740f27b | ||
![]() |
726349a2e0 | ||
![]() |
fbac63d70e | ||
![]() |
c7e4f52499 | ||
![]() |
fdaabac210 | ||
![]() |
76bb84d195 | ||
![]() |
88e6bc5993 | ||
![]() |
3feea66b49 | ||
![]() |
6b589a8206 | ||
![]() |
835e98d85d | ||
![]() |
a2019876a2 | ||
![]() |
dca196c315 | ||
![]() |
85b7dc11ca | ||
![]() |
03fd9dc829 | ||
![]() |
a2f37c8470 | ||
![]() |
d0a6d943e0 | ||
![]() |
fa0f7856bf | ||
![]() |
dac9b379dc | ||
![]() |
a59b6a6f32 | ||
![]() |
40674ad12b | ||
![]() |
b0ad23d764 | ||
![]() |
6db5f5c3f9 | ||
![]() |
7b7b50fe1a | ||
![]() |
73b15c7271 | ||
![]() |
24b135ca4b | ||
![]() |
86b9b5aa50 | ||
![]() |
8918bff71f | ||
![]() |
dd3766bce3 | ||
![]() |
8310dd347d | ||
![]() |
d6de03a2d0 | ||
![]() |
21395a0263 | ||
![]() |
54ada081c7 | ||
![]() |
51221f0f91 | ||
![]() |
f84d590023 | ||
![]() |
7c9b834729 | ||
![]() |
e1c088c355 | ||
![]() |
d609eecb23 | ||
![]() |
08156f22b8 | ||
![]() |
fa414e827a | ||
![]() |
146bf52038 | ||
![]() |
ac712b9277 | ||
![]() |
0d1b00f7b0 | ||
![]() |
9160a33053 | ||
![]() |
525c8a7cf5 | ||
![]() |
90df1e1247 | ||
![]() |
b9511728f3 | ||
![]() |
cc91cd0e07 | ||
![]() |
aaa3a1449f | ||
![]() |
dacf4cd2c7 | ||
![]() |
913ae1821a | ||
![]() |
1ae0ca2488 | ||
![]() |
72972e3a10 | ||
![]() |
50f17ff502 | ||
![]() |
6865ec72c7 | ||
![]() |
0d4e0b9b84 | ||
![]() |
c0ba7eda06 | ||
![]() |
e0cfe0c50c | ||
![]() |
e4cb4f0188 | ||
![]() |
989e2c43dc | ||
![]() |
2d736b8f35 | ||
![]() |
b04c1b9aa0 | ||
![]() |
6a42188853 | ||
![]() |
0536ac37fc | ||
![]() |
0abad2539a | ||
![]() |
48df6401d8 | ||
![]() |
9632707ece | ||
![]() |
ea8a4f1dca | ||
![]() |
bebd279735 | ||
![]() |
9f2b1f37f8 | ||
![]() |
01f2c10ec8 | ||
![]() |
0711770e9f | ||
![]() |
4381eee782 | ||
![]() |
3f8ab12e47 | ||
![]() |
d6fbf924b8 | ||
![]() |
a7b9d5338e | ||
![]() |
1208213476 | ||
![]() |
dd8ffbb179 | ||
![]() |
04bf52abb8 | ||
![]() |
1cb9973dbb | ||
![]() |
4be573b5d3 | ||
![]() |
7592b211c1 | ||
![]() |
28a3d36f88 | ||
![]() |
70cba4cc6a | ||
![]() |
dc1c68d5c9 | ||
![]() |
d4730f89d2 | ||
![]() |
4037ea0d68 | ||
![]() |
523c12f0ec | ||
![]() |
d994042131 | ||
![]() |
56166c7e76 | ||
![]() |
f1fafdc587 | ||
![]() |
9bde077b0b | ||
![]() |
e0c4a0ecd4 | ||
![]() |
f41c3c0a73 | ||
![]() |
f3fc99ac03 | ||
![]() |
20aadcf9ac | ||
![]() |
2cc8f302d3 | ||
![]() |
5634c20a02 | ||
![]() |
e79234935b | ||
![]() |
39058e897d | ||
![]() |
568ef4ecc6 | ||
![]() |
6542375766 | ||
![]() |
6f03209e93 | ||
![]() |
2a7fd9f8fb | ||
![]() |
c38a439171 | ||
![]() |
dc66bc1a05 | ||
![]() |
fb007e57e5 | ||
![]() |
df09cbe4c0 | ||
![]() |
2276aae127 | ||
![]() |
71844813bb | ||
![]() |
784869832e | ||
![]() |
423d4c0ef9 | ||
![]() |
086ce454ff | ||
![]() |
02ba198cfa |
2
.github/ISSUE_TEMPLATE/bug-report.md
vendored
2
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@ -12,7 +12,7 @@ labels: bug
|
|||||||
|
|
||||||
> 请确认如下情况已检查,并将 [ ] 换成 [x] 来选择 (Change [ ] to [x] to selected which your could make sure)
|
> 请确认如下情况已检查,并将 [ ] 换成 [x] 来选择 (Change [ ] to [x] to selected which your could make sure)
|
||||||
|
|
||||||
- [ ] 已使用 Hugo Extended 0.86.0 或更高的版本 (I'm using Hugo Extended version 0.86.0 or later)
|
- [ ] 已使用 Hugo Extended 0.134.0 或更高的版本 (I'm using Hugo Extended version 0.134.0 or later)
|
||||||
- [ ] 已使用 Hugo NexT 4.0 或更高的版本 (I'm using Hugo NexT version 4.0 or later)
|
- [ ] 已使用 Hugo NexT 4.0 或更高的版本 (I'm using Hugo NexT version 4.0 or later)
|
||||||
- [ ] 已阅读 [Hugo 故障排除](https://gohugo.io/troubleshooting/)并尝试修复无果 (I had already read the [Troubleshooting page of Hugo](https://gohugo.io/troubleshooting/))
|
- [ ] 已阅读 [Hugo 故障排除](https://gohugo.io/troubleshooting/)并尝试修复无果 (I had already read the [Troubleshooting page of Hugo](https://gohugo.io/troubleshooting/))
|
||||||
- [ ] 已搜索过当前所有[已知问题](https://github.com/hugo-next/hugo-theme-next/issues)和[讨论区](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a) ,但没有找到帮助 (I had already searched for current [Issues](https://github.com/hugo-next/hugo-theme-next/issues) and [Q & A](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a), which does not help me.)
|
- [ ] 已搜索过当前所有[已知问题](https://github.com/hugo-next/hugo-theme-next/issues)和[讨论区](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a) ,但没有找到帮助 (I had already searched for current [Issues](https://github.com/hugo-next/hugo-theme-next/issues) and [Q & A](https://github.com/hugo-next/hugo-theme-next/discussions/categories/q-a), which does not help me.)
|
||||||
|
29
.gitignore
vendored
29
.gitignore
vendored
@ -1,25 +1,14 @@
|
|||||||
# Ignore files in Hugo NexT theme
|
# Ignore files in Hugo NexT theme
|
||||||
|
|
||||||
exampleSite/*
|
# Special files in content folder
|
||||||
|
exampleSite/public/
|
||||||
|
exampleSite/resources/
|
||||||
|
exampleSite/.hugo_build.lock
|
||||||
|
exampleSite/config.dev.yaml
|
||||||
|
exampleSite/config.release.yaml
|
||||||
|
exampleSite/dev-startup.sh
|
||||||
|
|
||||||
# Exclude special files in content folder
|
|
||||||
exampleSite/content/**/
|
|
||||||
!exampleSite/content
|
|
||||||
!exmapleSite/content/about.md
|
|
||||||
!exampleSite/content/archives
|
|
||||||
!exampleSite/content/post
|
|
||||||
|
|
||||||
# Exclude special files in data folder
|
|
||||||
!exampleSite/data
|
|
||||||
|
|
||||||
# Exclude special files in static folder
|
|
||||||
!exampleSite/static
|
|
||||||
|
|
||||||
# Exclude special files
|
|
||||||
!exampleSite/config.yaml
|
|
||||||
!exampleSite/start.sh
|
|
||||||
|
|
||||||
data/*
|
|
||||||
!data/config.yaml
|
|
||||||
!data/resources.yaml
|
|
||||||
|
|
||||||
|
# vscode
|
||||||
|
.vscode/
|
||||||
|
149
README.md
149
README.md
@ -1,7 +1,7 @@
|
|||||||
[中文](README.zh.md) | [English](#)
|
[中文](https://github.com/hugo-next/hugo-theme-next/blob/main/README.zh.md) | [English](#)
|
||||||
|
|
||||||
<a title="Hugo NexT Website" href="https://preview.hugo-next.eu.org">
|
<a title="Hugo NexT Website" href="https://preview.hugo-next.eu.org">
|
||||||
<img align="right" alt="NexT logo" width="266" src="https://lisenhui.gitee.io/imgs/hugo-next/logo/hugo-next-primary.png">
|
<img align="right" alt="NexT logo" width="266" src="images/hugo-next-primary.png">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
## Hugo NexT
|
## Hugo NexT
|
||||||
@ -10,49 +10,101 @@
|
|||||||
|
|
||||||
> All page designs & configuration compatibility with Hexo NexT, it's very easy migrate your site from Hexo to Hugo and enjoy yourself.
|
> All page designs & configuration compatibility with Hexo NexT, it's very easy migrate your site from Hexo to Hugo and enjoy yourself.
|
||||||
|
|
||||||
[](https://gitter.im/hugo-next/community) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
|
[](https://app.gitter.im/#/room/#hugo-next_community:gitter.im) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/graphs/contributors) [](https://github.com/hugo-next/hugo-theme-next/releases) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
|
||||||
|
|
||||||
## 4 Scheme
|

|
||||||
|
|
||||||
|
## 🎨 4 Scheme
|
||||||
|
|
||||||
* :heart_decoration: Muse
|
* :heart_decoration: Muse
|
||||||
* :six_pointed_star: Mist
|
* :six_pointed_star: Mist
|
||||||
* :pisces: Pisces
|
* :pisces: Pisces
|
||||||
* :gemini: Gemini (**default**)
|
* :gemini: Gemini (**default**)
|
||||||
|
|
||||||
## Live Preview
|
## 👀 Live Preview
|
||||||
|
|
||||||
| Environment | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | Status |
|
| Environment | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | Status |
|
||||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
| :---------: | :-----------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | :------------------------------------------------: | :-------------------------------------------------------------------------------------------------: |
|
||||||
| Preliminary | [Gemini](https://preview.hugo-next.eu.org/) | [Muse](https://preview.hugo-next.eu.org/muse/) | [Mist](https://preview.hugo-next.eu.org/mist/) | [Pisces](https://preview.hugo-next.eu.org/pisces/) |  |
|
| Preliminary | [Gemini](https://preview.hugo-next.eu.org/) | [Muse](https://preview.hugo-next.eu.org/muse/) | [Mist](https://preview.hugo-next.eu.org/mist/) | [Pisces](https://preview.hugo-next.eu.org/pisces/) |  |
|
||||||
| Production | [Gemini](https://hugo-next.eu.org/) | [Muse](https://hugo-next.eu.org/muse/) | [Mist](https://hugo-next.eu.org/mist/) | [Pisces](https://hugo-next.eu.org/pisces/) |  |
|
| Production | [Gemini](https://hugo-next.eu.org/) | [Muse](https://hugo-next.eu.org/muse/) | [Mist](https://hugo-next.eu.org/mist/) | [Pisces](https://hugo-next.eu.org/pisces/) |  |
|
||||||
|
|
||||||
> - Preliminary: all new feature developments will be previewed as soon as possible.
|
> - Preliminary: all new feature developments will be previewed as soon as possible.
|
||||||
> - Production: Only the features that are tested stably and meet the requirements will be officially released.
|
> - Production: Only the features that are tested stably and meet the requirements will be officially released.
|
||||||
|
|
||||||
## Quick Start
|
## 👣 Quick Start
|
||||||
|
|
||||||
Before use `Hugo NexT` theme, please make sure installed `Git` & `Hugo Extened` software in your PC, then use `submodule` to lead into the theme, see below commands:
|
Before use `Hugo NexT` theme, please make sure installed `Git` & `Hugo Extened` software in your PC.
|
||||||
|
|
||||||
|
### 📦 Install Hugo
|
||||||
|
|
||||||
|
If you want to quickly preview the actual effect of the theme, you can directly clone the repository code of the current theme and run the example site:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ hugo new site hugo-next-exmaple
|
$ git clone --single-branch -b main https://github.com/hugo-next/hugo-theme-next.git hugo-theme-next
|
||||||
$ cd hugo-next-exmaple
|
$ cd hugo-theme-next/exampleSite/
|
||||||
$ git init
|
$ sh startup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Open a computer browser and enter `http://127.0.0.1:1414/`, then you can access and view it.
|
||||||
|
|
||||||
|
### 📰 Use Template
|
||||||
|
|
||||||
|
If there your first time build blog site, Recommended use template of `Github` which can easily create your site code. Click & visit this repository: [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter), then click the green button which name call `Use this template` upper right corner on the page. Just like below image:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
After do that click the green button which name call `Create repository from template`, then will create your site code automatic, and clone it on your PC environment.
|
||||||
|
|
||||||
|
### 📐 Direct Reference
|
||||||
|
|
||||||
|
If you had a blog site, then use `submodule` to lead into the theme, see below commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
$ git submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
|
$ git submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
|
||||||
$ cp -r themes/hugo-theme-next/exampleSite/* .
|
$ cp themes/hugo-theme-next/exampleSite/hugo.yaml .
|
||||||
$ rm -rf config.toml
|
$ mv hugo.toml hugo.toml.backup
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use `Hugo module` to lead into the theme, see below commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
|
$ hugo mod init hugo-next-example
|
||||||
|
$ wget -O hugo.yaml https://github.com/hugo-next/hugo-theme-next/raw/main/exampleSite/hugo.yaml
|
||||||
|
$ sed -i 's/hugo-theme-next/github.com\/hugo-next\/hugo-theme-next\/v4/' hugo.yaml
|
||||||
|
$ mv hugo.toml hugo.toml.backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### 💻 Preview on Local
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
$ hugo server
|
$ hugo server
|
||||||
```
|
```
|
||||||
|
|
||||||
Done that input adrress http://127.0.0.1:1313/ on browser will see the effect & good luck for you! :tada::tada::tada:
|
Done that input adrress http://127.0.0.1:1313/ on browser will see the effect & good luck for you! :tada::tada::tada:
|
||||||
|
|
||||||
|
> **Note**
|
||||||
|
> Don't use `hugo server` command deploy your site and enable internet visit, it just used to preview when you develop on local environment. Recommended use `hugo` command build static files all site, then deploy them into Web server such as `Nginx`.
|
||||||
|
|
||||||
|
### 🔄 Upgrade Theme
|
||||||
|
|
||||||
Execute command as below in your site directory when the theme upgrade.
|
Execute command as below in your site directory when the theme upgrade.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ cd hugo-next-exmaple
|
$ cd hugo-next-example
|
||||||
$ git submodule update --remote
|
$ git submodule update --remote
|
||||||
```
|
```
|
||||||
|
|
||||||
## New Post
|
Execute command as below if you are using `Hugo module`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
|
$ hugo mod get -u
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 New Post
|
||||||
|
|
||||||
There had ready a new post template for you, It is recommended to use the following Hugo command to quickly create a new post:
|
There had ready a new post template for you, It is recommended to use the following Hugo command to quickly create a new post:
|
||||||
|
|
||||||
@ -60,8 +112,10 @@ There had ready a new post template for you, It is recommended to use the follo
|
|||||||
$ hugo new posts/hello-world.md
|
$ hugo new posts/hello-world.md
|
||||||
```
|
```
|
||||||
|
|
||||||
All front matter parameters's description in post as below:
|
> **Note**
|
||||||
|
> By defalut `hugo new` command will create new post under `content` root directory, so in here `posts` were you custom subfolder in `content` directory.
|
||||||
|
|
||||||
|
All front matter parameters's description in post as below:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
---
|
---
|
||||||
@ -88,41 +142,78 @@ tags:
|
|||||||
#expand: true
|
#expand: true
|
||||||
# It's means that will redirecting to external links
|
# It's means that will redirecting to external links
|
||||||
#extlink:
|
#extlink:
|
||||||
# Switch to enabled or disabled comment plugins in this post
|
# Disabled comment plugins in this post
|
||||||
#comment:
|
#comment:
|
||||||
# enable: false
|
# enable: false
|
||||||
# Enable table of content
|
# Disable table of content int this post
|
||||||
|
# Notice: By default will automatic build table of content
|
||||||
|
# with h2-h4 title in post and without other settings
|
||||||
#toc: false
|
#toc: false
|
||||||
# Absolute link for visit
|
# Absolute link for visit
|
||||||
#url: "{{ lower .Name }}.html"
|
#url: "{{ lower .Name }}.html"
|
||||||
# Sticky post set-top in home page and the smaller nubmer will more forward.
|
# Sticky post set-top in home page and the smaller nubmer will more forward.
|
||||||
#weight: 1
|
#weight: 1
|
||||||
|
# Support Math Formulas render, options: mathjax, katex
|
||||||
|
#math: mathjax
|
||||||
|
# Enable chart render, such as: flow, sequence, classes etc
|
||||||
|
#mermaid: true
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|
||||||
## Feedback
|
## 🎉 User's Cases
|
||||||
|
|
||||||
|
- [Hugo Docs & Demo](https://hugo-next.eu.org/)
|
||||||
|
- [凡梦星尘空间站](https://lisenhui.cn/)
|
||||||
|
- [阿哈吉](https://a.happy2008.top/)
|
||||||
|
- [研究僧](https://yuanlucas.com/)
|
||||||
|
- [Zero's Record](https://izeroo.cn/)
|
||||||
|
- [More Cases](https://hugo-next.eu.org/flinks.html)
|
||||||
|
|
||||||
|
Hope could submmit your site information in this file [flinks.yaml](https://github.com/hugo-next/hugo-next-docs/blob/develop/data/flinks.yaml) end line such as below code sytle when you use `Hugo NexT` theme, thanks.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: NexT 主题
|
||||||
|
desc: 保持简单的易用性和强大的功能
|
||||||
|
avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png
|
||||||
|
link: https://hugo-next.eu.org
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🙋 Feedback
|
||||||
|
|
||||||
- Join us [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) or [Gitter](https://gitter.im/hugo-next/community) to chat :beers:
|
- Join us [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) or [Gitter](https://gitter.im/hugo-next/community) to chat :beers:
|
||||||
- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) submit a new bug :bug:
|
- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) submit a new bug :bug:
|
||||||
- [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) tell me your ideas :sparkles:
|
- [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) tell me your ideas :sparkles:
|
||||||
|
|
||||||
## Join us
|
## 👨👩👧👦 Join us
|
||||||
|
|
||||||
All features development progress and new request in [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9), welcome to join us and compelete it together.
|
All features development progress and new request in [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9), welcome to join us and compelete it together.
|
||||||
|
|
||||||
## License
|
[](https://github.com/hugo-next/hugo-theme-next/graphs/contributors)
|
||||||
|
|
||||||
|
[](https://github.com/hugo-next/hugo-theme-next/stargazers)
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
[MIT License](LICENSE)
|
[MIT License](LICENSE)
|
||||||
|
|
||||||
Copyright (c) 2022, hugo-next teams.
|
Copyright (c) 2022, hugo-next teams.
|
||||||
|
|
||||||
## Thanks
|
## 💖 Thanks
|
||||||
|
|
||||||
That's my hobby to develop `Hugo NexT` theme, thanks all people who gived the donate, and let we follow it growth up.
|
That's my hobby to develop `Hugo NexT` theme, thanks all people who gived the donate, and let we follow it growth up.
|
||||||
|
|
||||||
List of Donors(Order by Date):
|
List of Donors(Order desc by Date):
|
||||||
|
|
||||||
|
| Donation time | Donors | Donation mode | Donation content | Message |
|
||||||
|
| :-----------: | ------ | ------------- | ---------------- | -------------------------------------------------------------------------- |
|
||||||
|
| 2024.05.11 | *祥 | alipay | RMB 66.66 | Thank you for creating such a great theme. |
|
||||||
|
| 2023.07.25 | *五 | alipay | RMB 50.00 | I really like the 'Next' theme, thank you, let me buy you a cup of coffee. |
|
||||||
|
| 2023.06.01 | **霖 | alipay | RMB 10.00 | / |
|
||||||
|
| 2022.11.15 | f888 | xianyu | RMB 6.20 | Good luck. |
|
||||||
|
| 2022.09.30 | *軒 | wechat pay | RMB 66.66 | Hope it could help more people. |
|
||||||
|
| 2022.09.30 | N*l | wechat pay | RMB 20.00 | / |
|
||||||
|
| 2022.07.09 | *风 | wechat pay | RMB 10.00 | / |
|
||||||
|
| 2022.05.08 | *泉 | wechat pay | RMB 6.60 | Good luck with next develop. |
|
||||||
|
| 2022.02.28 | *娇 | wechat pay | RMB 5.00 | / |
|
||||||
|
| 2021.12.21 | z*y | wechat pay | RMB 18.88 | / |
|
||||||
|
|
||||||
| Donation time | Donors | Donation mode | Donation content | Message |
|
|
||||||
| ------- | ------ | ------ | ---- | ---- |
|
|
||||||
| 2021.12.21 | z*y | wechat pay | RMB 18.88 | / |
|
|
||||||
| 2022.05.08 | *泉 | wechat pay | RMB 6.60 | Good luck with next develop. |
|
|
150
README.zh.md
150
README.zh.md
@ -1,7 +1,7 @@
|
|||||||
[中文](#) | [English](README.md)
|
[中文](#) | [English](https://github.com/hugo-next/hugo-theme-next/blob/main/README.md)
|
||||||
|
|
||||||
<a title="Hugo NexT 站点" href="https://preview.hugo-next.eu.org">
|
<a title="Hugo NexT 站点" href="https://preview.hugo-next.eu.org">
|
||||||
<img align="right" alt="NexT logo" width="266" src="https://lisenhui.gitee.io/imgs/hugo-next/logo/hugo-next-primary.png">
|
<img align="right" alt="NexT logo" width="266" src="images/hugo-next-primary.png">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
## Hugo NexT
|
## Hugo NexT
|
||||||
@ -10,50 +10,104 @@
|
|||||||
|
|
||||||
> 本主题的所有页面设计和配置项都与原来 `Hexo` 引擎的 `NexT` 主题保持了良好的兼容性,可以非常平滑的从 `Hexo` 迁移至 `Hugo` 引擎,欢迎大家使用并反馈。
|
> 本主题的所有页面设计和配置项都与原来 `Hexo` 引擎的 `NexT` 主题保持了良好的兼容性,可以非常平滑的从 `Hexo` 迁移至 `Hugo` 引擎,欢迎大家使用并反馈。
|
||||||
|
|
||||||
[](https://gitter.im/hugo-next/community) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
|
[](https://app.gitter.im/#/room/#hugo-next_community:gitter.im) [](https://github.com/gohugoio/hugo/releases/latest) [](https://github.com/hugo-next/hugo-theme-next) [](https://github.com/hugo-next/hugo-theme-next/graphs/contributors) [](https://github.com/hugo-next/hugo-theme-next/releases) [](https://github.com/hugo-next/hugo-theme-next/find/main) [](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
|
||||||
|
|
||||||
## 4 种页面模式
|

|
||||||
|
|
||||||
|
## 🎨 4 种页面模式
|
||||||
|
|
||||||
* :heart_decoration: 冥想 (Muse)
|
* :heart_decoration: 冥想 (Muse)
|
||||||
* :six_pointed_star: 迷雾 (Mist)
|
* :six_pointed_star: 迷雾 (Mist)
|
||||||
* :pisces: 双鱼座 (Pisces)
|
* :pisces: 双鱼座 (Pisces)
|
||||||
* :gemini: 双子座 (Gemini) (**默认**)
|
* :gemini: 双子座 (Gemini) (**默认**)
|
||||||
|
|
||||||
## 在线预览
|
## 👀 在线预览
|
||||||
|
|
||||||
| 环境 | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | 状态 |
|
| 环境 | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | 状态 |
|
||||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
| :------: | :-----------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | :------------------------------------------------: | :-----------------------------------------------------------------------------------------: |
|
||||||
| 开发版本 | [双子座](https://preview.hugo-next.eu.org/) | [冥想](https://preview.hugo-next.eu.org/muse/) | [迷雾](https://preview.hugo-next.eu.org/mist/) | [双鱼座](https://preview.hugo-next.eu.org/pisces/) |  |
|
| 开发版本 | [双子座](https://preview.hugo-next.eu.org/) | [冥想](https://preview.hugo-next.eu.org/muse/) | [迷雾](https://preview.hugo-next.eu.org/mist/) | [双鱼座](https://preview.hugo-next.eu.org/pisces/) |  |
|
||||||
| 正式版本 | [双子座](https://hugo-next.eu.org/) | [冥想](https://hugo-next.eu.org/muse/) | [迷雾](https://hugo-next.eu.org/mist/) | [双鱼座](https://hugo-next.eu.org/pisces/) |  |
|
| 正式版本 | [双子座](https://hugo-next.eu.org/) | [冥想](https://hugo-next.eu.org/muse/) | [迷雾](https://hugo-next.eu.org/mist/) | [双鱼座](https://hugo-next.eu.org/pisces/) |  |
|
||||||
|
|
||||||
> - 开发版本: 所有的新功能开发都会在此第一时间发布预览
|
> - 开发版本: 所有的新功能开发都会在此第一时间发布预览
|
||||||
> - 正式版本: 只有测试稳定且符合要求的功能才会正式发布
|
> - 正式版本: 只有测试稳定且符合要求的功能才会正式发布
|
||||||
|
|
||||||
## 快速开始
|
## 👣 快速开始
|
||||||
|
|
||||||
在使用 `Hugo NexT` 主题之前,请确认你的电脑上已经安装 `Git` 和 `Hugo Extened` 两款软件,然后通过 `submodule` 模式引用本主题,参考如下命令:
|
在使用 `Hugo NexT` 主题之前,请确认你的电脑上已经安装 `Git` 和 `Hugo Extened` 两款软件。
|
||||||
|
|
||||||
|
### 📦 快速预览
|
||||||
|
|
||||||
|
如想快速预览主题实际效果,可直接克隆当前主题的仓库代码,然后运行示例站点:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ hugo new site hugo-next-exmaple
|
$ git clone --single-branch -b main https://github.com/hugo-next/hugo-theme-next.git hugo-theme-next
|
||||||
$ cd hugo-next-exmaple
|
$ cd hugo-theme-next/exampleSite/
|
||||||
$ git init
|
$ sh startup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
打开电脑浏览器输入`http://127.0.0.1:1414/`即可访问查看。
|
||||||
|
|
||||||
|
### 📰 使用模板
|
||||||
|
|
||||||
|
如果你是初次建站的话,可以使用 `Github` 的模板功能,一键生成你的站点仓库代码。访问 [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter) 点击右上角的 `Use this template` 绿色按钮然后填写代码仓库的相关信息,参考如下:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
最后点击 `Create repository from template` 绿色按钮,会直接在你的空间中生成站点代码,再把它克隆到本地进行创作。
|
||||||
|
|
||||||
|
### 📐 直接引用
|
||||||
|
|
||||||
|
如果你已经有站点,可通过 `submodule` 模式引用本主题,参考如下命令:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
$ git submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
|
$ git submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
|
||||||
$ cp -r themes/hugo-theme-next/exampleSite/* .
|
$ cp themes/hugo-theme-next/exampleSite/hugo.yaml .
|
||||||
$ rm -rf config.toml
|
$ mv hugo.toml hugo.toml.backup
|
||||||
|
```
|
||||||
|
|
||||||
|
或通过 `Hugo module` 模式引用本主题,参考如下命令:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
|
$ hugo mod init hugo-next-example
|
||||||
|
$ wget -O hugo.yaml https://github.com/hugo-next/hugo-theme-next/raw/main/exampleSite/hugo.yaml
|
||||||
|
$ sed -i 's/hugo-theme-next/github.com\/hugo-next\/hugo-theme-next\/v4/' hugo.yaml
|
||||||
|
$ mv hugo.toml hugo.toml.backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### 💻 本地预览
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
$ hugo server
|
$ hugo server
|
||||||
```
|
```
|
||||||
|
|
||||||
打开浏览器,在地址栏输入 http://127.0.0.1:1313/ 查看主题效果,祝你好运!:tada::tada::tada:
|
打开浏览器,在地址栏输入 http://127.0.0.1:1313/ 查看主题效果,祝你好运!:tada::tada::tada:
|
||||||
|
|
||||||
|
> **Note**
|
||||||
|
> 要注意下 `hugo server` 命令只是用于本地开发或写文章时预览,并非是将其直接对外网开放访问。在正式发布时,可通过 `hugo` 命令生成全站静态文件,然后部署到类似 `Nginx` 的 Web 服务器即可。
|
||||||
|
|
||||||
|
### 🔄 主题更新
|
||||||
|
|
||||||
后续更新主题只需要在你的站点目录中,执行如下命令:
|
后续更新主题只需要在你的站点目录中,执行如下命令:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ cd hugo-next-exmaple
|
$ cd hugo-next-example
|
||||||
$ git submodule update --remote
|
$ git submodule update --remote
|
||||||
```
|
```
|
||||||
|
|
||||||
|
如使用 `Hugo module`,执行如下命令:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cd hugo-next-example
|
||||||
|
$ hugo mod get -u
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note**
|
||||||
> 本主题的代码同时也同步到 `Gitee` 仓库,在国内环境可切换用 [https://gitee.com/hugo-next/hugo-theme-next.git](https://gitee.com/hugo-next/hugo-theme-next.git) 镜像速度更快,也更稳定。
|
> 本主题的代码同时也同步到 `Gitee` 仓库,在国内环境可切换用 [https://gitee.com/hugo-next/hugo-theme-next.git](https://gitee.com/hugo-next/hugo-theme-next.git) 镜像速度更快,也更稳定。
|
||||||
|
|
||||||
## 发表新文章
|
## 📝 发表新文章
|
||||||
|
|
||||||
主题已经配置了默认的文章模板,建议使用如下 Hugo 命令快速创建新的文章:
|
主题已经配置了默认的文章模板,建议使用如下 Hugo 命令快速创建新的文章:
|
||||||
|
|
||||||
@ -61,8 +115,10 @@ $ git submodule update --remote
|
|||||||
$ hugo new posts/hello-world.md
|
$ hugo new posts/hello-world.md
|
||||||
```
|
```
|
||||||
|
|
||||||
关于文章头部那些参数作用的说明参考如下:
|
> **Note**
|
||||||
|
> 其中 `posts` 路径是 `content` 根目录下的子文件夹,可依据自己的文件管理形态调整。
|
||||||
|
|
||||||
|
关于文章头部那些参数作用的说明参考如下:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
---
|
---
|
||||||
@ -94,19 +150,42 @@ tags:
|
|||||||
#expand: true
|
#expand: true
|
||||||
# 外部链接地址,访问时直接跳转
|
# 外部链接地址,访问时直接跳转
|
||||||
#extlink:
|
#extlink:
|
||||||
# 在当前页面开启或关闭评论功能
|
# 在当前页面关闭评论功能
|
||||||
#comment:
|
#comment:
|
||||||
# enable: false
|
# enable: false
|
||||||
# 开启文章目录功能
|
# 关闭当前页面目录功能
|
||||||
|
# 注意:正常情况下文章中有H2-H4标题会自动生成目录,无需额外配置
|
||||||
#toc: false
|
#toc: false
|
||||||
# 绝对访问路径
|
# 绝对访问路径
|
||||||
#url: "{{ lower .Name }}.html"
|
#url: "{{ lower .Name }}.html"
|
||||||
# 开启文章置顶,数字越小越靠前
|
# 开启文章置顶,数字越小越靠前
|
||||||
#weight: 1
|
#weight: 1
|
||||||
|
# 开启数学公式渲染,可选值: mathjax, katex
|
||||||
|
#math: mathjax
|
||||||
|
# 开启各种图渲染,如流程图、时序图、类图等
|
||||||
|
#mermaid: true
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|
||||||
## 使用反馈
|
## 🎉 用户案例
|
||||||
|
|
||||||
|
- [Hugo Docs & Demo](https://hugo-next.eu.org/)
|
||||||
|
- [凡梦星尘空间站](https://lisenhui.cn/)
|
||||||
|
- [阿哈吉](https://a.happy2008.top/)
|
||||||
|
- [研究僧](https://yuanlucas.com/)
|
||||||
|
- [Zero's Record](https://izeroo.cn/)
|
||||||
|
- [更多案例上线](https://hugo-next.eu.org/flinks.html)
|
||||||
|
|
||||||
|
如你也正在使用 `Hugo NexT` 主题,欢迎在 [flinks.yaml](https://github.com/hugo-next/hugo-next-docs/blob/develop/data/flinks.yaml) 文件底部提交贵站的名称、描述、头像、链接等信息,具体格式内容参考如下:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: NexT 主题
|
||||||
|
desc: 保持简单的易用性和强大的功能
|
||||||
|
avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png
|
||||||
|
link: https://hugo-next.eu.org
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🙋 使用反馈
|
||||||
|
|
||||||
- 加入 [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) 或 [Gitter](https://gitter.im/hugo-next/community) 在线讨论 :beers:
|
- 加入 [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) 或 [Gitter](https://gitter.im/hugo-next/community) 在线讨论 :beers:
|
||||||
- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) 提交错误报告 :bug:
|
- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) 提交错误报告 :bug:
|
||||||
@ -114,23 +193,36 @@ tags:
|
|||||||
|
|
||||||
> 国内用户也可加入 QQ 群交流: 604710815
|
> 国内用户也可加入 QQ 群交流: 604710815
|
||||||
|
|
||||||
## 欢迎加入
|
## 👨👩👧👦 欢迎加入
|
||||||
|
|
||||||
关于本主题的开发进度和后续的发展路线图,可访问 [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9) 查看详情,也欢迎大家参与一起来完善。
|
关于本主题的开发进度和后续的发展路线图,可访问 [Hugo NexT V4 Roadmap](https://github.com/hugo-next/hugo-theme-next/issues/9) 查看详情,也欢迎大家参与一起来完善。
|
||||||
|
|
||||||
## 许可证
|
[](https://github.com/hugo-next/hugo-theme-next/graphs/contributors)
|
||||||
|
|
||||||
|
[](https://github.com/hugo-next/hugo-theme-next/stargazers)
|
||||||
|
|
||||||
|
## 📜 许可证
|
||||||
|
|
||||||
[MIT License](LICENSE)
|
[MIT License](LICENSE)
|
||||||
|
|
||||||
Copyright (c) 2022, hugo-next 团队
|
Copyright (c) 2022, hugo-next 团队
|
||||||
|
|
||||||
## 致谢
|
## 💖 致谢
|
||||||
|
|
||||||
开发 `Hugo NexT` 主题原本是个人的业余爱好,但没想到网友们这么的热情,感谢有你们的支持,让我们一起来见证它的成长。
|
开发 `Hugo NexT` 主题原本是个人的业余爱好,但没想到网友们这么的热情,感谢有你们的支持,让我们一起来见证它的成长。
|
||||||
|
|
||||||
以下是捐助名单列表(按时间顺序):
|
以下是打赏名单列表(按时间倒序):
|
||||||
|
|
||||||
|
| 打赏时间 | 打赏者 | 打赏方式 | 打赏内容 | 留言 |
|
||||||
|
| :--------: | ------ | -------- | -------- | -------------------------------- |
|
||||||
|
| 2024.05.11 | *祥 | 支付宝 | ¥66.66 | 感谢创作这么好的主题 |
|
||||||
|
| 2023.07.25 | *五 | 微信支付 | ¥50.00 | 很喜欢next主题,感谢,请你喝咖啡 |
|
||||||
|
| 2023.06.01 | **霖 | 支付宝 | ¥10.00 | / |
|
||||||
|
| 2022.11.15 | f888 | 咸鱼 | ¥6.20 | 聊表心意 |
|
||||||
|
| 2022.09.30 | *軒 | 微信支付 | ¥66.66 | 愿项目造福更多人! |
|
||||||
|
| 2022.09.30 | N*l | 微信支付 | ¥20.00 | / |
|
||||||
|
| 2022.07.09 | *风 | 微信支付 | ¥10.00 | / |
|
||||||
|
| 2022.05.08 | *泉 | 微信支付 | ¥6.60 | 祝开发next顺利 |
|
||||||
|
| 2022.02.28 | *娇 | 微信支付 | ¥5.00 | / |
|
||||||
|
| 2021.12.21 | z*y | 微信支付 | ¥18.88 | / |
|
||||||
|
|
||||||
| 捐助时间 | 捐助者 | 捐助方式 | 捐助内容 | 留言 |
|
|
||||||
| :-------: | ------ | ------ | ---- | ---- |
|
|
||||||
| 2021.12.21 | z*y | 微信支付 | ¥18.88 | / |
|
|
||||||
| 2022.05.08 | *泉 | 微信支付 | ¥6.60 | 祝开发next顺利 |顺利 |
|
|
@ -27,12 +27,12 @@ tags:
|
|||||||
# 外部链接地址,访问时直接跳转
|
# 外部链接地址,访问时直接跳转
|
||||||
# It's means that will redirecting to external links
|
# It's means that will redirecting to external links
|
||||||
#extlink:
|
#extlink:
|
||||||
# 在当前页面开启或关闭评论功能
|
# 在当前页面关闭评论功能
|
||||||
# Switch to enabled or disabled comment plugins in this post
|
# Disabled comment plugins in this post
|
||||||
#comment:
|
#comment:
|
||||||
# enable: false
|
# enable: false
|
||||||
# 开启文章目录功能
|
# 关闭文章目录功能
|
||||||
# Enable table of content
|
# Disable table of content
|
||||||
#toc: false
|
#toc: false
|
||||||
# 绝对访问路径
|
# 绝对访问路径
|
||||||
# Absolute link for visit
|
# Absolute link for visit
|
||||||
@ -40,6 +40,12 @@ tags:
|
|||||||
# 开启文章置顶,数字越小越靠前
|
# 开启文章置顶,数字越小越靠前
|
||||||
# Sticky post set-top in home page and the smaller nubmer will more forward.
|
# Sticky post set-top in home page and the smaller nubmer will more forward.
|
||||||
#weight: 1
|
#weight: 1
|
||||||
|
# 开启数学公式渲染,可选值: mathjax, katex
|
||||||
|
# Support Math Formulas render, options: mathjax, katex
|
||||||
|
#math: mathjax
|
||||||
|
# 开启各种图渲染,如流程图、时序图、类图等
|
||||||
|
# Enable chart render, such as: flow, sequence, classes etc
|
||||||
|
#mermaid: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{{ .Name }}
|
{{ .Name }}
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
--content-bg-color: #{$content-bg-color};
|
--content-bg-color: #{$content-bg-color};
|
||||||
--card-bg-color: #{$card-bg-color};
|
--card-bg-color: #{$card-bg-color};
|
||||||
--text-color: #{$text-color};
|
--text-color: #{$text-color};
|
||||||
|
--selection-bg: #{$grey-lighter};
|
||||||
|
--selection-color: #{$black-deep};
|
||||||
--blockquote-color: #{$blockquote-color};
|
--blockquote-color: #{$blockquote-color};
|
||||||
--link-color: #{$link-color};
|
--link-color: #{$link-color};
|
||||||
--link-hover-color: #{$link-hover-color};
|
--link-hover-color: #{$link-hover-color};
|
||||||
@ -14,6 +16,8 @@
|
|||||||
--menu-item-bg-color: #{$menu-item-bg-color};
|
--menu-item-bg-color: #{$menu-item-bg-color};
|
||||||
--theme-color: #{$theme-color};
|
--theme-color: #{$theme-color};
|
||||||
|
|
||||||
|
--border-color: #{$border-color};
|
||||||
|
|
||||||
--btn-default-bg: #{$btn-default-bg};
|
--btn-default-bg: #{$btn-default-bg};
|
||||||
--btn-default-color: #{$btn-default-color};
|
--btn-default-color: #{$btn-default-color};
|
||||||
--btn-default-border-color: #{$btn-default-border-color};
|
--btn-default-border-color: #{$btn-default-border-color};
|
||||||
@ -26,51 +30,56 @@
|
|||||||
--highlight-gutter-background: #{$highlight-gutter-background};
|
--highlight-gutter-background: #{$highlight-gutter-background};
|
||||||
--highlight-gutter-foreground: #{$highlight-gutter-foreground};
|
--highlight-gutter-foreground: #{$highlight-gutter-foreground};
|
||||||
|
|
||||||
|
--highlight-img-fill: brightness(1) invert(0);
|
||||||
|
|
||||||
color-scheme: light;
|
color-scheme: light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@if $darkmode {
|
:root[data-theme="dark"] {
|
||||||
@media (prefers-color-scheme: dark) {
|
--body-bg-color: #{$body-bg-color-dark};
|
||||||
:root {
|
--content-bg-color: #{$content-bg-color-dark};
|
||||||
--body-bg-color: #{$body-bg-color-dark};
|
--card-bg-color: #{$card-bg-color-dark};
|
||||||
--content-bg-color: #{$content-bg-color-dark};
|
--text-color: #{$text-color-dark};
|
||||||
--card-bg-color: #{$card-bg-color-dark};
|
--selection-bg: #{$gainsboro};
|
||||||
--text-color: #{$text-color-dark};
|
--selection-color: #{$black-dim};
|
||||||
--blockquote-color: #{$blockquote-color-dark};
|
--blockquote-color: #{$blockquote-color-dark};
|
||||||
--link-color: #{$link-color-dark};
|
--link-color: #{$link-color-dark};
|
||||||
--link-hover-color: #{$link-hover-color-dark};
|
--link-hover-color: #{$link-hover-color-dark};
|
||||||
--brand-color: #{$brand-color-dark};
|
--brand-color: #{$brand-color-dark};
|
||||||
--brand-hover-color: #{$brand-hover-color-dark};
|
--brand-hover-color: #{$brand-hover-color-dark};
|
||||||
--table-row-odd-bg-color: #{$table-row-odd-bg-color-dark};
|
--table-row-odd-bg-color: #{$table-row-odd-bg-color-dark};
|
||||||
--table-row-hover-bg-color: #{$table-row-hover-bg-color-dark};
|
--table-row-hover-bg-color: #{$table-row-hover-bg-color-dark};
|
||||||
--menu-item-bg-color: #{$menu-item-bg-color-dark};
|
--menu-item-bg-color: #{$menu-item-bg-color-dark};
|
||||||
--theme-color: #{$theme-color-dark};
|
--theme-color: #{$theme-color-dark};
|
||||||
|
|
||||||
--btn-default-bg: #{$btn-default-bg-dark};
|
--border-color: #{$border-color-dark};
|
||||||
--btn-default-color: #{$btn-default-color-dark};
|
|
||||||
--btn-default-border-color: #{$btn-default-border-color-dark};
|
|
||||||
--btn-default-hover-bg: #{$btn-default-hover-bg-dark};
|
|
||||||
--btn-default-hover-color: #{$btn-default-hover-color-dark};
|
|
||||||
--btn-default-hover-border-color: #{$btn-default-hover-border-color-dark};
|
|
||||||
|
|
||||||
--highlight-background: #{$highlight-background-dark};
|
--btn-default-bg: #{$btn-default-bg-dark};
|
||||||
--highlight-foreground: #{$highlight-foreground-dark};
|
--btn-default-color: #{$btn-default-color-dark};
|
||||||
--highlight-gutter-background: #{$highlight-gutter-background-dark};
|
--btn-default-border-color: #{$btn-default-border-color-dark};
|
||||||
--highlight-gutter-foreground: #{$highlight-gutter-foreground-dark};
|
--btn-default-hover-bg: #{$btn-default-hover-bg-dark};
|
||||||
|
--btn-default-hover-color: #{$btn-default-hover-color-dark};
|
||||||
|
--btn-default-hover-border-color: #{$btn-default-hover-border-color-dark};
|
||||||
|
|
||||||
color-scheme: dark;
|
--highlight-background: #{$highlight-background-dark};
|
||||||
}
|
--highlight-foreground: #{$highlight-foreground-dark};
|
||||||
|
--highlight-gutter-background: #{$highlight-gutter-background-dark};
|
||||||
|
--highlight-gutter-foreground: #{$highlight-gutter-foreground-dark};
|
||||||
|
|
||||||
img {
|
--highlight-img-fill: brightness(0) invert(1);
|
||||||
opacity: .75;
|
|
||||||
|
|
||||||
&:hover {
|
color-scheme: dark;
|
||||||
opacity: .9;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
iframe {
|
img[data-theme="dark"] {
|
||||||
color-scheme: light;
|
opacity: .75;
|
||||||
}
|
filter: brightness(1) invert(0);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: .9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iframe[data-theme="dark"] {
|
||||||
|
color-scheme: light;
|
||||||
|
}
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
@import 'utterances';
|
@import 'utterances';
|
||||||
@import 'search';
|
@import 'search';
|
||||||
@import 'related-posts';
|
@import 'related-posts';
|
||||||
@import 'math';
|
|
||||||
@import 'gitter';
|
@import 'gitter';
|
||||||
@import 'livere';
|
@import 'livere';
|
||||||
@import 'waline';
|
@import 'waline';
|
@ -13,7 +13,7 @@
|
|||||||
transition: visibility .4s, background .4s;
|
transition: visibility .4s, background .4s;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: $zindex-4;
|
z-index: $zindex-4;
|
||||||
|
|
||||||
.search-active & {
|
.search-active & {
|
||||||
background: rgba(0, 0, 0, .3);
|
background: rgba(0, 0, 0, .3);
|
||||||
@ -24,7 +24,7 @@
|
|||||||
.search-popup {
|
.search-popup {
|
||||||
background: var(--card-bg-color);
|
background: var(--card-bg-color);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
height: 80%;
|
height: 65%;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
transform: scale(0);
|
transform: scale(0);
|
||||||
transition: transform .4s;
|
transition: transform .4s;
|
||||||
@ -55,12 +55,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.search-header {
|
.search-header {
|
||||||
background: $gainsboro;
|
background: var(--content-bg-color);
|
||||||
@if $darkmode {
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
background: $grey-dim;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -72,6 +67,7 @@
|
|||||||
border: 0;
|
border: 0;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
color: var(--text-color);
|
||||||
|
|
||||||
&::-webkit-search-cancel-button {
|
&::-webkit-search-cancel-button {
|
||||||
display: none;
|
display: none;
|
||||||
@ -81,15 +77,46 @@
|
|||||||
.search-result-container {
|
.search-result-container {
|
||||||
height: calc(100% - 55px);
|
height: calc(100% - 55px);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding: 5px 25px;
|
padding: 0px 25px;
|
||||||
|
}
|
||||||
|
|
||||||
hr {
|
.search-footer {
|
||||||
margin: 5px 0 10px;
|
background: var(--content-bg-color);
|
||||||
|
border-bottom-left-radius: 5px;
|
||||||
|
border-bottom-right-radius: 5px;
|
||||||
|
padding: 0 5px;
|
||||||
|
color: var(--text-color);
|
||||||
|
|
||||||
&:first-child {
|
.search-meta-info {
|
||||||
display: none;
|
height: 26px;
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 0;
|
||||||
|
|
||||||
|
.search-hit-stats {
|
||||||
|
font-size: $font-size-smaller;
|
||||||
|
width: 65%;
|
||||||
|
padding: 2px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-vendor {
|
||||||
|
width: 34%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: $font-size-small;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 68px;
|
||||||
|
margin: 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-result-list {
|
.search-result-list {
|
||||||
@ -137,9 +164,16 @@
|
|||||||
|
|
||||||
.algolia-pagination {
|
.algolia-pagination {
|
||||||
// Override default style of ul
|
// Override default style of ul
|
||||||
margin: 40px 0;
|
//margin: 40px 0;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
font-size: $font-size-smallest;
|
||||||
|
margin-bottom: -16px;
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
visibility: visible;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.pagination-item {
|
.pagination-item {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -176,4 +210,4 @@
|
|||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
18
assets/css/_common/components/3rd/waline.scss
Normal file
18
assets/css/_common/components/3rd/waline.scss
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
@if $waline_enable {
|
||||||
|
.wl-actions>button:nth-child(3) {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
|
||||||
|
@include mobile() {
|
||||||
|
.wl-reaction-img {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
.wl-reaction-votes {
|
||||||
|
padding: 0.85px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: .65em;
|
||||||
|
line-height: .85;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,45 +0,0 @@
|
|||||||
@if $back2top_enable {
|
|
||||||
.back-to-top {
|
|
||||||
font-size: $b2t-font-size;
|
|
||||||
|
|
||||||
@if not $back2top_scrollpercent {
|
|
||||||
span {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $back2top_sidebar {
|
|
||||||
margin: 20px - $sidebar-offset -10px -20px;
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity $transition-ease;
|
|
||||||
|
|
||||||
&.back-to-top-on {
|
|
||||||
cursor: pointer;
|
|
||||||
opacity: $b2t-opacity;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: $b2t-opacity-hover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
bottom: $b2t-position-bottom;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: $b2t-color;
|
|
||||||
padding: 0 6px;
|
|
||||||
transition: bottom $transition-ease;
|
|
||||||
@include sidebar-toggle();
|
|
||||||
|
|
||||||
@if not $back2top_scrollpercent {
|
|
||||||
width: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: $sidebar-highlight;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.back-to-top-on {
|
|
||||||
bottom: $b2t-position-bottom-on;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -12,9 +12,17 @@
|
|||||||
z-index: $zindex-5;
|
z-index: $zindex-5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@import 'back-to-top';
|
.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@import 'tool-buttons';
|
||||||
@import 'reading-progress';
|
@import 'reading-progress';
|
||||||
|
|
||||||
@import 'post';
|
@import 'post';
|
||||||
@import 'pages';
|
@import 'pages';
|
||||||
@import 'third-party';
|
@import '3rd';
|
||||||
|
@ -15,14 +15,23 @@
|
|||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
|
||||||
|
|
||||||
.category-list-item {
|
.category-list-item:before {
|
||||||
margin: 5px 10px;
|
font-family: var(--fa-style-family,"Font Awesome 6 Free");
|
||||||
|
font-weight: var(--fa-style,900);
|
||||||
|
content: "\f07c";
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-list-item {
|
||||||
|
margin: 5px 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.category-list-count {
|
.category-list-count {
|
||||||
color: $grey;
|
color: $grey;
|
||||||
|
padding: 0 2px;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: ' (';
|
content: ' (';
|
||||||
@ -33,7 +42,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.category-list-child {
|
.category-children-list {
|
||||||
padding-left: 10px;
|
padding-left: 38px;
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
.category-children-list-item:before {
|
||||||
|
font-family: var(--fa-style-family,"Font Awesome 6 Free");
|
||||||
|
font-weight: var(--fa-style,900);
|
||||||
|
content: "\f0ae";
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-children-list-item {
|
||||||
|
font-size: 0.925em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.flinks-block {
|
.flinks-block {
|
||||||
|
|
||||||
.flinks-block-title {
|
.flinks-header {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
@ -24,13 +24,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@if $motion_trans_post_header {
|
@if $motion_trans_post_header {
|
||||||
.post-header {
|
.post-header, .flinks-header {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@if $motion_trans_post_body {
|
@if $motion_trans_post_body {
|
||||||
.post-body {
|
.post-body, .flinks-body {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,6 +42,34 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@if $toc_number {
|
||||||
|
.autonumber {
|
||||||
|
h2 {
|
||||||
|
counter-reset: h3;
|
||||||
|
&:before{
|
||||||
|
counter-increment: h2;
|
||||||
|
content: counter(h2) ". ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
counter-reset: h4;
|
||||||
|
&:before{
|
||||||
|
counter-increment: h3;
|
||||||
|
content: counter(h2) ". " counter(h3) ". ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
counter-reset: h5;
|
||||||
|
&:before{
|
||||||
|
counter-increment: h4;
|
||||||
|
content: counter(h2) "." counter(h3) "." counter(h4) ". ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@import 'post-collapse';
|
@import 'post-collapse';
|
||||||
@import 'post-body';
|
@import 'post-body';
|
||||||
@import 'post-gallery';
|
@import 'post-gallery';
|
||||||
@ -50,4 +78,4 @@
|
|||||||
@import 'post-footer';
|
@import 'post-footer';
|
||||||
@import 'post-widgets';
|
@import 'post-widgets';
|
||||||
@import 'post-reward';
|
@import 'post-reward';
|
||||||
@import 'post-followme';
|
@import 'post-followme';
|
36
assets/css/_common/components/post/post-alert.scss
Normal file
36
assets/css/_common/components/post/post-alert.scss
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
@mixin alert-styles($type, $color) {
|
||||||
|
.post-alert-#{$type} {
|
||||||
|
padding: 0 0 0 10px;
|
||||||
|
border-left: 6px solid $color;
|
||||||
|
font-size: 0.825em;
|
||||||
|
color: $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $key, $color in $post_alert_colors {
|
||||||
|
@include alert-styles(#{$key}, $color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-alert-title, .post-expired-title {
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-size: 1.25em;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin: 0 0 0 8px;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-alert-content, .post-expired-content {
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
@ -80,4 +80,66 @@
|
|||||||
svg {
|
svg {
|
||||||
max-width: 98%;
|
max-width: 98%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For read more post content anchor
|
||||||
|
#more {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Defined speical border properties for top card of post **/
|
||||||
|
$speical-border-width: 5px;
|
||||||
|
$speical-border-radius: 8px;
|
||||||
|
.post-expired-tip {
|
||||||
|
|
||||||
|
$expired-color: #4A90E2;
|
||||||
|
|
||||||
|
font-size: var(--font-size-small);
|
||||||
|
border: 1px solid #4A90E2;
|
||||||
|
border-radius: $speical-border-radius;
|
||||||
|
border-left: $speical-border-width solid #4A90E2;
|
||||||
|
border-top: $speical-border-width solid #4A90E2;
|
||||||
|
box-shadow: .6rem .5rem 0.3rem var(--body-bg-color);
|
||||||
|
margin: 0 0 0.85em 0;
|
||||||
|
padding: 0.65em 0.15em 0.65em 0.95em;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
.post-expired-title {
|
||||||
|
color: #4A90E2;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-expired-times {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.15em;
|
||||||
|
color: #e5534b;
|
||||||
|
margin: 0 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-summary-wrapper {
|
||||||
|
$summary-color: #ea6733;
|
||||||
|
|
||||||
|
margin: 0 0 .85em 0;
|
||||||
|
border-radius: $speical-border-radius;
|
||||||
|
border: 1px solid $summary-color;
|
||||||
|
border-right: $speical-border-width solid $summary-color;
|
||||||
|
border-bottom: $speical-border-width solid $summary-color;
|
||||||
|
box-shadow: .6rem .5rem 0.3rem var(--body-bg-color);
|
||||||
|
|
||||||
|
.summary-title {
|
||||||
|
margin: .65em .93em 0 .93em;
|
||||||
|
color: $summary-color;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-content {
|
||||||
|
background-color: var(--card-bg-color);
|
||||||
|
border-radius: $speical-border-radius;
|
||||||
|
box-shadow: .08rem .06rem 0.03rem var(--body-bg-color);
|
||||||
|
margin: .85em;
|
||||||
|
padding: .85em .95em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import 'post-alert';
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,10 @@
|
|||||||
@include post-card();
|
@include post-card();
|
||||||
border: none;
|
border: none;
|
||||||
background: none;
|
background: none;
|
||||||
|
|
||||||
|
li {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,3 +91,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@if $post_share_enable {
|
||||||
|
.post-share-tools {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
a {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $post_sharethis_set {
|
||||||
|
.st-cmp-settings {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -114,8 +114,7 @@
|
|||||||
height: 0;
|
height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@if $busuanzi_post_views {
|
#comments-count {
|
||||||
#busuanzi_container_page_pv {
|
cursor: pointer;
|
||||||
display: inline-block;
|
border-bottom: 1px solid $link-decoration-color;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
@if $math_mathjax_enable {
|
|
||||||
mjx-container[jax='CHTML'][display='true'], .has-jax {
|
|
||||||
overflow: auto hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
mjx-container[display='true'] + br {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
@if $waline_enable {
|
|
||||||
.wl-actions>button:nth-child(3) {
|
|
||||||
display: none
|
|
||||||
}
|
|
||||||
}
|
|
91
assets/css/_common/components/tool-buttons.scss
Normal file
91
assets/css/_common/components/tool-buttons.scss
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
.tool-buttons {
|
||||||
|
|
||||||
|
@include sidebar-toggle();
|
||||||
|
background: none;
|
||||||
|
bottom: 58px;
|
||||||
|
filter: alpha(opacity=0);
|
||||||
|
font-size: $font-size-smaller;
|
||||||
|
@include mobile() {
|
||||||
|
font-size: $font-size-smallest;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: $tool-btn-bg;
|
||||||
|
color: $tool-btn-color;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 35px;
|
||||||
|
padding: 0;
|
||||||
|
outline: 0;
|
||||||
|
border: none;
|
||||||
|
text-transform: none;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: $tool-btn-opacity;
|
||||||
|
touch-action: manipulation;
|
||||||
|
|
||||||
|
@include mobile() {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $tool-btn-hover-fore-color;
|
||||||
|
opacity: $tool-btn-opacity-hover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.goto-comments {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $back2top_enable {
|
||||||
|
.back-to-top {
|
||||||
|
|
||||||
|
@if not $back2top_scrollpercent {
|
||||||
|
span {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $back2top_sidebar {
|
||||||
|
margin: 20px -$sidebar-offset -10px -20px;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity $transition-ease;
|
||||||
|
|
||||||
|
&.back-to-top-on {
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: $b2t-opacity;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: $b2t-opacity-hover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} @else {
|
||||||
|
bottom: $b2t-position-bottom;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: $b2t-color;
|
||||||
|
padding: 0 6px;
|
||||||
|
transition: bottom $transition-ease;
|
||||||
|
@include sidebar-toggle();
|
||||||
|
|
||||||
|
@if not $back2top_scrollpercent {
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $sidebar-highlight;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.back-to-top-on {
|
||||||
|
bottom: $b2t-position-bottom-on;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -29,6 +29,152 @@
|
|||||||
font-size: $font-size-smallest;
|
font-size: $font-size-smallest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.i18n-translate {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
font-size: $font-size-largest;
|
||||||
|
margin: auto 0;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-select, .lang-options {
|
||||||
|
|
||||||
|
.flag-icon {
|
||||||
|
background-size: cover;
|
||||||
|
width: 30px;
|
||||||
|
height: 20px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-zh-cn {
|
||||||
|
background-image: url("/imgs/flags/zh-cn.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-en-us {
|
||||||
|
background-image: url("/imgs/flags/en-us.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-fr-fr {
|
||||||
|
background-image: url("/imgs/flags/fr-fr.svg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-select {
|
||||||
|
|
||||||
|
.flag-icon {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-select {
|
||||||
|
margin-left: 16px;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1.25;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
font-size: $font-size-large;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selected-option {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
justify-content: center;
|
||||||
|
width: 140px;
|
||||||
|
|
||||||
|
/* &:hover {
|
||||||
|
+ .lang-options {
|
||||||
|
display: block;
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
|
||||||
|
.selected-language {
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-options {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-top: none;
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
display: block;
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-option {
|
||||||
|
padding: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
justify-content: left;
|
||||||
|
padding-left: 14px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--selection-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-name {
|
||||||
|
margin: 0 16px 0 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* select {
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
option {
|
||||||
|
font-size: $font-size-small;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right center;
|
||||||
|
padding-right: 30px;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-zh-cn {
|
||||||
|
background-image: url("../imgs/flags/zh-CN.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-en-us {
|
||||||
|
background-image: url("../imgs/flags/en-US.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
.flag-icon-fr-fr {
|
||||||
|
background-image: url("../imgs/flags/fr-FR.png");
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
/* .google-translate {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
.fa {
|
||||||
|
font-size: $font-size-larger;
|
||||||
|
margin: auto 0;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
|
||||||
@if $footer_vendors_enable {
|
@if $footer_vendors_enable {
|
||||||
.vendors-list {
|
.vendors-list {
|
||||||
a {
|
a {
|
||||||
@ -37,6 +183,18 @@
|
|||||||
|
|
||||||
img {
|
img {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
max-width: 48px;
|
||||||
|
min-width: 14px;
|
||||||
|
max-height: 16px;
|
||||||
|
|
||||||
|
@include mobile() {
|
||||||
|
max-width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only work for svg image
|
||||||
|
&[src$=".svg"] {
|
||||||
|
filter: var(--highlight-img-fill);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$footer_vendors_imgs_len: length($footer_vendors_imgs_width);
|
$footer_vendors_imgs_len: length($footer_vendors_imgs_width);
|
||||||
@ -97,16 +255,3 @@
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.busuanzi-count {
|
|
||||||
@if $busuanzi_visitors {
|
|
||||||
#busuanzi_container_site_uv {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@if $busuanzi_views {
|
|
||||||
#busuanzi_container_site_pv {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,12 +1,26 @@
|
|||||||
// Menu
|
// Menu
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
.menu {
|
.menu, .menu-children {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 1em 0;
|
padding: 1em 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-item {
|
.menu-children {
|
||||||
|
max-height: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: max-height 1.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-children {
|
||||||
|
&.expand {
|
||||||
|
max-height: 400px;
|
||||||
|
transition: max-height 1.5s ease-in;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-item, .menu-child-item {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
@ -33,6 +47,8 @@
|
|||||||
|
|
||||||
.fa, .fab, .far, .fas {
|
.fa, .fab, .far, .fas {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
|
width: 16px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge {
|
.badge {
|
||||||
@ -49,6 +65,15 @@
|
|||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu-item-shrink-icon {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-child-item {
|
||||||
|
display: block;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.use-motion .menu-item {
|
.use-motion .menu-item {
|
||||||
|
@ -20,7 +20,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-block {
|
.post-block {
|
||||||
margin-top: initial !important;
|
//margin-top: initial !important;
|
||||||
|
// https://github.com/hugo-next/hugo-theme-next/issues/154
|
||||||
|
// make the post block more clear in small screen
|
||||||
|
margin-top: 5px !important;
|
||||||
// Inside posts blocks content padding (default 40px).
|
// Inside posts blocks content padding (default 40px).
|
||||||
padding: $content-mobile-padding 18px $content-mobile-padding !important;
|
padding: $content-mobile-padding 18px $content-mobile-padding !important;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.sidebar-inner {
|
.sidebar-inner, .sidebar-card-widget {
|
||||||
color: $grey-dark;
|
color: $grey-dark;
|
||||||
// Init Sidebar & TOC inner dimensions on all pages and for all schemes.
|
// Init Sidebar & TOC inner dimensions on all pages and for all schemes.
|
||||||
$offset : if(($scheme == 'Pisces') or ($scheme == 'Gemini'), $sidebar-offset, $sidebar-padding);
|
$offset : if(($scheme == 'Pisces') or ($scheme == 'Gemini'), $sidebar-offset, $sidebar-padding);
|
||||||
@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
img {
|
img {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
max-width: 120px;
|
||||||
|
max-height: 42px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,3 +41,4 @@
|
|||||||
@import 'sidebar-toggle';
|
@import 'sidebar-toggle';
|
||||||
@import 'sidebar-toc';
|
@import 'sidebar-toc';
|
||||||
@import 'site-state';
|
@import 'site-state';
|
||||||
|
@import 'sidebar-card-widget';
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
.site-author-image {
|
.site-author-image {
|
||||||
border: $site-author-image-border-width solid $site-author-image-border-color;
|
border: $site-author-image-border-width solid $site-author-image-border-color;
|
||||||
max-width: $site-author-image-width;
|
width: $site-author-image-width;
|
||||||
|
height: $site-author-image-width;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
|
||||||
@if $avatar_rounded {
|
@if $avatar_rounded {
|
||||||
|
60
assets/css/_common/outline/sidebar/sidebar-card-widget.scss
Normal file
60
assets/css/_common/outline/sidebar/sidebar-card-widget.scss
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.sidebar-card-widget {
|
||||||
|
background: var(--content-bg-color);
|
||||||
|
@if ($scheme == 'Pisces') or ($scheme == 'Gemini'){
|
||||||
|
border-radius: $border-radius;
|
||||||
|
box-shadow: $box-shadow;
|
||||||
|
}
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-color);
|
||||||
|
margin-top: $sidebar-offset;
|
||||||
|
|
||||||
|
.item-headline {
|
||||||
|
text-align: left;
|
||||||
|
font-size: $font-size-small;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.siteinfo {
|
||||||
|
font-size: $font-size-small;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
.siteinfo-item {
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 2px 10px 0;
|
||||||
|
|
||||||
|
i {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div:first-child {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-o-box-flex: 1;
|
||||||
|
box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-to-top-card {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
div:first-child {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $sidebar-nav-hover-color;
|
color: $sidebar-nav-hover-color;
|
||||||
|
border-bottom-color: $sidebar-highlight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -29,6 +30,7 @@
|
|||||||
.sidebar-toc-active .sidebar-nav-toc, .sidebar-overview-active .sidebar-nav-overview {
|
.sidebar-toc-active .sidebar-nav-toc, .sidebar-overview-active .sidebar-nav-overview {
|
||||||
border-bottom-color: $sidebar-highlight;
|
border-bottom-color: $sidebar-highlight;
|
||||||
color: $sidebar-highlight;
|
color: $sidebar-highlight;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $sidebar-highlight;
|
color: $sidebar-highlight;
|
||||||
|
@ -1,62 +1,103 @@
|
|||||||
@if $toc_enable {
|
.post-toc {
|
||||||
.post-toc {
|
font-size: $font-size-small;
|
||||||
font-size: $font-size-small;
|
padding: 0 8px;
|
||||||
padding: 0 8px;
|
|
||||||
|
|
||||||
ul {
|
.active-current {
|
||||||
list-style: none;
|
color: $orange;
|
||||||
margin: 0;
|
}
|
||||||
padding: 0 2px 5px 10px;
|
|
||||||
text-align: left;
|
|
||||||
|
|
||||||
> li {
|
ul {
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
list-style: none;
|
||||||
transition: all $transition-ease;
|
margin: 0;
|
||||||
}
|
padding: 0 2px 5px 10px;
|
||||||
}
|
text-align: left;
|
||||||
|
counter-reset: item;
|
||||||
|
|
||||||
.nav-item {
|
>li {
|
||||||
line-height: 1.8;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
|
|
||||||
@if not $toc_wrap {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav {
|
> ul {
|
||||||
.nav-child {
|
border-left: 1px solid;
|
||||||
display: if($toc_expand_all, block, none);
|
margin-left: 4px;
|
||||||
}
|
|
||||||
|
|
||||||
.active > .nav-child {
|
li {
|
||||||
display: block;
|
position: relative;
|
||||||
}
|
padding-left: 0;
|
||||||
|
|
||||||
.active-current > .nav-child {
|
&:before {
|
||||||
display: block;
|
position: absolute;
|
||||||
|
content: ' ';
|
||||||
> .nav-item {
|
top: 0.14em;
|
||||||
display: block;
|
left: -0.75em;
|
||||||
|
width: 0.65em;
|
||||||
|
height: 0.815em;
|
||||||
|
border-style: none none dashed none;
|
||||||
|
border-width: 0.05em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.active > a {
|
|
||||||
border-bottom-color: $sidebar-highlight;
|
}
|
||||||
color: $sidebar-highlight;
|
|
||||||
|
|
||||||
|
|
||||||
|
a {
|
||||||
|
transition: all $transition-ease;
|
||||||
|
border: none;
|
||||||
|
@if $toc_number {
|
||||||
|
&:before {
|
||||||
|
content: counters(item, ".") ". ";
|
||||||
|
counter-increment: item;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.active-current > a {
|
&:hover {
|
||||||
color: $sidebar-highlight;
|
text-decoration: underline;
|
||||||
|
color: $orange;
|
||||||
&:hover {
|
|
||||||
color: $sidebar-highlight;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
.nav-item {
|
||||||
|
line-height: 1.8;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
|
@if not $toc_wrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
.nav-child {
|
||||||
|
display: if($toc_expand_all, block, none);
|
||||||
|
}
|
||||||
|
|
||||||
|
.active>.nav-child {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-current>.nav-child {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
>.nav-item {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active>a {
|
||||||
|
border-bottom-color: $sidebar-highlight;
|
||||||
|
color: $sidebar-highlight;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-current>a {
|
||||||
|
color: $sidebar-highlight;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $sidebar-highlight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
::selection {
|
::selection {
|
||||||
background: $selection-bg;
|
background: var(--selection-bg);
|
||||||
color: $selection-color;
|
color: var(--selection-color);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
|
@ -3,85 +3,182 @@
|
|||||||
|
|
||||||
background: var(--highlight-background);
|
background: var(--highlight-background);
|
||||||
margin-bottom: 26px;
|
margin-bottom: 26px;
|
||||||
|
line-height: 1.25;
|
||||||
|
|
||||||
//TODO Need fixed the copy button show position.
|
> .code-header {
|
||||||
div:first-child {
|
color:#f8f8f2;
|
||||||
overflow-x: auto;
|
display: flex;
|
||||||
}
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: .25rem 0;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
pre {
|
&:hover {
|
||||||
position: relative;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
table tbody tr {
|
.code-lang {
|
||||||
//TODO Fixed the too long code line over
|
width: 100%;
|
||||||
// layout background color.
|
text-align: center;
|
||||||
background: #272822;
|
font-weight: bold;
|
||||||
}
|
|
||||||
|
|
||||||
/* pre > code span {
|
&::after {
|
||||||
white-space: break-spaces;
|
content: "Code";
|
||||||
overflow: hidden;
|
}
|
||||||
word-break: break-all;
|
}
|
||||||
word-wrap: break-word;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $codeblock_copy_btn_enable {
|
.collapse-btn {
|
||||||
|
font-family: "Font Awesome 6 Free";
|
||||||
.highlight:hover .copy-btn, pre:hover .copy-btn {
|
font-weight: 900;
|
||||||
opacity: 1;
|
text-align: center;
|
||||||
}
|
width: 1.25em;
|
||||||
|
display: inline-block;
|
||||||
.copy-btn {
|
font-style: normal;
|
||||||
color: $black-dim;
|
font-variant: normal;
|
||||||
cursor: pointer;
|
line-height: 1;
|
||||||
line-height: 1.6;
|
text-rendering: auto;
|
||||||
opacity: 0;
|
padding-right: .25rem;
|
||||||
padding: 2px 6px;
|
transition: content 1s ease-in-out;
|
||||||
position: absolute;
|
|
||||||
right: 8px;
|
|
||||||
top: 4px;
|
|
||||||
transition: opacity $transition-ease;
|
|
||||||
background: var(--highlight-background);
|
|
||||||
|
|
||||||
@if $codeblock_style == 'flat' {
|
|
||||||
background: white;
|
|
||||||
border: 0;
|
|
||||||
font-size: $font-size-smaller;
|
|
||||||
|
|
||||||
} @else if $codeblock_style == 'mac' {
|
|
||||||
color: var(--highlight-foreground);
|
|
||||||
font-size: 14px;
|
|
||||||
border-radius: 3px;
|
|
||||||
} @else {
|
|
||||||
background-color: $gainsboro;
|
|
||||||
background-image: linear-gradient(#fcfcfc, $gainsboro);
|
|
||||||
border: 1px solid #d5d5d5;
|
|
||||||
border-radius: 3px;
|
|
||||||
font-size: $font-size-smaller;
|
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "\f102";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.collapse::before {
|
||||||
|
content: "\f103";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $type, $text in $code-type-list {
|
||||||
|
&.#{$type} .code-lang::after {
|
||||||
|
content: $text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ellipses-btn {
|
||||||
|
padding-right: .45rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@if $codeblock_style == 'mac' {
|
> .chroma {
|
||||||
.highlight {
|
position: relative;
|
||||||
|
max-height: 500px;
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transition: max-height 0.8s ease-in-out, opacity 0.7s ease-in-out;
|
||||||
|
|
||||||
|
&.hidden-code {
|
||||||
|
max-height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
|
||||||
|
animation-name: slideInUp;
|
||||||
|
animation-duration: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: .45rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lntd:first-child {
|
||||||
|
min-width: 1.6rem;
|
||||||
|
text-align: right;
|
||||||
|
background-color: #272822;
|
||||||
|
|
||||||
|
a {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lntd:last-child {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
line-break: anywhere;
|
||||||
|
word-break: break-all;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> code > span {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
line-break: anywhere;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $codeblock_copy_btn_enable {
|
||||||
|
|
||||||
|
&:hover .copy-btn {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-btn {
|
||||||
|
color: $black-dim;
|
||||||
|
cursor: pointer;
|
||||||
|
line-height: 1.6;
|
||||||
|
opacity: 0;
|
||||||
|
padding: 2px 6px;
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
top: 4px;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-size: $font-size-medium;
|
||||||
|
transition: opacity $transition-ease;
|
||||||
|
background: var(--highlight-background);
|
||||||
|
|
||||||
|
font-family: "Font Awesome 6 Free";
|
||||||
|
font-weight: 900;
|
||||||
|
text-align: center;
|
||||||
|
width: 1.25em;
|
||||||
|
display: inline-block;
|
||||||
|
font-style: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
text-rendering: auto;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "\f0c5";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.copied::before {
|
||||||
|
content: "\f058";
|
||||||
|
}
|
||||||
|
|
||||||
|
&.uncopied::before {
|
||||||
|
content: "\f057";
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $codeblock_style == 'flat' {
|
||||||
|
background: white;
|
||||||
|
border: 0;
|
||||||
|
} @else if $codeblock_style == 'mac' {
|
||||||
|
color: var(--highlight-foreground);
|
||||||
|
} @else {
|
||||||
|
background-color: $gainsboro;
|
||||||
|
background-image: linear-gradient(#fcfcfc, $gainsboro);
|
||||||
|
border: 1px solid #d5d5d5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@if $codeblock_style == 'mac' {
|
||||||
|
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4);
|
box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4);
|
||||||
padding-top: 30px;
|
|
||||||
|
|
||||||
.table-container {
|
.code-header {
|
||||||
border-radius: 0 0 5px 5px;
|
|
||||||
}
|
&::before {
|
||||||
|
background: #fc625d;
|
||||||
&::before {
|
box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;
|
||||||
background: #fc625d;
|
margin-left: 10px;
|
||||||
box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b;
|
@include round-icon(12px);
|
||||||
margin-top: -20px;
|
}
|
||||||
margin-left: 10px;
|
}
|
||||||
position: absolute;
|
|
||||||
@include round-icon(12px);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
@import 'copy-code';
|
@import 'copy-code';
|
||||||
|
@import 'monokai';
|
||||||
|
|
||||||
%code-inline {
|
%code-inline {
|
||||||
background: var(--highlight-background);
|
background: var(--highlight-background);
|
||||||
@ -8,7 +9,7 @@
|
|||||||
pre {
|
pre {
|
||||||
padding: 18px;
|
padding: 18px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p > code, li > code {
|
p > code, li > code {
|
||||||
@extend %code-inline;
|
@extend %code-inline;
|
||||||
|
87
assets/css/_common/scaffolding/highlight/monokai.scss
Normal file
87
assets/css/_common/scaffolding/highlight/monokai.scss
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/** monokai highlight style **/
|
||||||
|
/* Background */ .bg { color:#f8f8f2;background-color:#272822; }
|
||||||
|
/* PreWrapper */ .chroma { color:#f8f8f2;background-color:#272822; }
|
||||||
|
/* Other */ .chroma .x { }
|
||||||
|
/* Error */ .chroma .err { color:#960050;background-color:#1e0010 }
|
||||||
|
/* CodeLine */ .chroma .cl { }
|
||||||
|
/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
|
||||||
|
/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
|
||||||
|
/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
|
||||||
|
/* LineHighlight */ .chroma .hl { background-color:#3c3d38 }
|
||||||
|
/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||||
|
/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||||
|
/* Line */ .chroma .line { display:flex; }
|
||||||
|
/* Keyword */ .chroma .k { color:#66d9ef }
|
||||||
|
/* KeywordConstant */ .chroma .kc { color:#66d9ef }
|
||||||
|
/* KeywordDeclaration */ .chroma .kd { color:#66d9ef }
|
||||||
|
/* KeywordNamespace */ .chroma .kn { color:#f92672 }
|
||||||
|
/* KeywordPseudo */ .chroma .kp { color:#66d9ef }
|
||||||
|
/* KeywordReserved */ .chroma .kr { color:#66d9ef }
|
||||||
|
/* KeywordType */ .chroma .kt { color:#66d9ef }
|
||||||
|
/* Name */ .chroma .n { }
|
||||||
|
/* NameAttribute */ .chroma .na { color:#a6e22e }
|
||||||
|
/* NameBuiltin */ .chroma .nb { }
|
||||||
|
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||||
|
/* NameClass */ .chroma .nc { color:#a6e22e }
|
||||||
|
/* NameConstant */ .chroma .no { color:#66d9ef }
|
||||||
|
/* NameDecorator */ .chroma .nd { color:#a6e22e }
|
||||||
|
/* NameEntity */ .chroma .ni { }
|
||||||
|
/* NameException */ .chroma .ne { color:#a6e22e }
|
||||||
|
/* NameFunction */ .chroma .nf { color:#a6e22e }
|
||||||
|
/* NameFunctionMagic */ .chroma .fm { }
|
||||||
|
/* NameLabel */ .chroma .nl { }
|
||||||
|
/* NameNamespace */ .chroma .nn { }
|
||||||
|
/* NameOther */ .chroma .nx { color:#a6e22e }
|
||||||
|
/* NameProperty */ .chroma .py { }
|
||||||
|
/* NameTag */ .chroma .nt { color:#f92672 }
|
||||||
|
/* NameVariable */ .chroma .nv { }
|
||||||
|
/* NameVariableClass */ .chroma .vc { }
|
||||||
|
/* NameVariableGlobal */ .chroma .vg { }
|
||||||
|
/* NameVariableInstance */ .chroma .vi { }
|
||||||
|
/* NameVariableMagic */ .chroma .vm { }
|
||||||
|
/* Literal */ .chroma .l { color:#ae81ff }
|
||||||
|
/* LiteralDate */ .chroma .ld { color:#e6db74 }
|
||||||
|
/* LiteralString */ .chroma .s { color:#e6db74 }
|
||||||
|
/* LiteralStringAffix */ .chroma .sa { color:#e6db74 }
|
||||||
|
/* LiteralStringBacktick */ .chroma .sb { color:#e6db74 }
|
||||||
|
/* LiteralStringChar */ .chroma .sc { color:#e6db74 }
|
||||||
|
/* LiteralStringDelimiter */ .chroma .dl { color:#e6db74 }
|
||||||
|
/* LiteralStringDoc */ .chroma .sd { color:#e6db74 }
|
||||||
|
/* LiteralStringDouble */ .chroma .s2 { color:#e6db74 }
|
||||||
|
/* LiteralStringEscape */ .chroma .se { color:#ae81ff }
|
||||||
|
/* LiteralStringHeredoc */ .chroma .sh { color:#e6db74 }
|
||||||
|
/* LiteralStringInterpol */ .chroma .si { color:#e6db74 }
|
||||||
|
/* LiteralStringOther */ .chroma .sx { color:#e6db74 }
|
||||||
|
/* LiteralStringRegex */ .chroma .sr { color:#e6db74 }
|
||||||
|
/* LiteralStringSingle */ .chroma .s1 { color:#e6db74 }
|
||||||
|
/* LiteralStringSymbol */ .chroma .ss { color:#e6db74 }
|
||||||
|
/* LiteralNumber */ .chroma .m { color:#ae81ff }
|
||||||
|
/* LiteralNumberBin */ .chroma .mb { color:#ae81ff }
|
||||||
|
/* LiteralNumberFloat */ .chroma .mf { color:#ae81ff }
|
||||||
|
/* LiteralNumberHex */ .chroma .mh { color:#ae81ff }
|
||||||
|
/* LiteralNumberInteger */ .chroma .mi { color:#ae81ff }
|
||||||
|
/* LiteralNumberIntegerLong */ .chroma .il { color:#ae81ff }
|
||||||
|
/* LiteralNumberOct */ .chroma .mo { color:#ae81ff }
|
||||||
|
/* Operator */ .chroma .o { color:#f92672 }
|
||||||
|
/* OperatorWord */ .chroma .ow { color:#f92672 }
|
||||||
|
/* Punctuation */ .chroma .p { }
|
||||||
|
/* Comment */ .chroma .c { color:#75715e }
|
||||||
|
/* CommentHashbang */ .chroma .ch { color:#75715e }
|
||||||
|
/* CommentMultiline */ .chroma .cm { color:#75715e }
|
||||||
|
/* CommentSingle */ .chroma .c1 { color:#75715e }
|
||||||
|
/* CommentSpecial */ .chroma .cs { color:#75715e }
|
||||||
|
/* CommentPreproc */ .chroma .cp { color:#75715e }
|
||||||
|
/* CommentPreprocFile */ .chroma .cpf { color:#75715e }
|
||||||
|
/* Generic */ .chroma .g { }
|
||||||
|
/* GenericDeleted */ .chroma .gd { color:#f92672 }
|
||||||
|
/* GenericEmph */ .chroma .ge { font-style:italic }
|
||||||
|
/* GenericError */ .chroma .gr { }
|
||||||
|
/* GenericHeading */ .chroma .gh { }
|
||||||
|
/* GenericInserted */ .chroma .gi { color:#a6e22e }
|
||||||
|
/* GenericOutput */ .chroma .go { }
|
||||||
|
/* GenericPrompt */ .chroma .gp { }
|
||||||
|
/* GenericStrong */ .chroma .gs { font-weight:bold }
|
||||||
|
/* GenericSubheading */ .chroma .gu { color:#75715e }
|
||||||
|
/* GenericTraceback */ .chroma .gt { }
|
||||||
|
/* GenericUnderline */ .chroma .gl { }
|
||||||
|
/* TextWhitespace */ .chroma .w { }
|
@ -17,6 +17,7 @@ html {
|
|||||||
*/
|
*/
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
counter-reset: h2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
16
assets/css/_common/scaffolding/tags/bilibili.scss
Normal file
16
assets/css/_common/scaffolding/tags/bilibili.scss
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
.bilibili-video {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 0;
|
||||||
|
padding-bottom: 50%;
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
iframe {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
@import 'group-pictures';
|
@import 'group-pictures';
|
||||||
@import 'label';
|
@import 'label';
|
||||||
@import 'link-grid';
|
@import 'link-grid';
|
||||||
@import 'mermaid';
|
|
||||||
@import 'note';
|
@import 'note';
|
||||||
@import 'pdf';
|
@import 'pdf';
|
||||||
@import 'tabs';
|
@import 'tabs';
|
||||||
|
@import 'bilibili'
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
@if $mermaid_enable {
|
|
||||||
.mermaid {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
@mixin mobile-smallest() {
|
@mixin mobile-smallest() {
|
||||||
@media (max-width: 413px) {
|
@media (max-width: 413px) {
|
||||||
@content;;
|
@content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,7 @@
|
|||||||
@if $icon {
|
@if $icon {
|
||||||
content: $icon;
|
content: $icon;
|
||||||
}
|
}
|
||||||
font-family: 'Font Awesome 5 Free';
|
font-family: 'Font Awesome 6 Free';
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
border-bottom: 1px solid $body-bg-color;
|
border-bottom: 1px solid $body-bg-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3, h4 {
|
||||||
border-bottom: 1px dotted $body-bg-color;
|
border-bottom: 1px dotted $body-bg-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// a + ul {
|
||||||
|
// top: calc(30% + 5px);
|
||||||
|
// }
|
||||||
|
|
||||||
.badge {
|
.badge {
|
||||||
background: white;
|
background: white;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
@ -41,5 +45,24 @@
|
|||||||
padding: 1px 4px;
|
padding: 1px 4px;
|
||||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, .1);
|
text-shadow: 1px 1px 0 rgba(0, 0, 0, .1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu-item-shrink-icon {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-children {
|
||||||
|
display: none;
|
||||||
|
transition: transform 1s ease-in-out;
|
||||||
|
transform: translateY(-100%);
|
||||||
|
// position: absolute;
|
||||||
|
// z-index: 999;
|
||||||
|
|
||||||
|
&.expand {
|
||||||
|
display: block;
|
||||||
|
max-height: 400px;
|
||||||
|
transition: transform 1.5s ease-in;
|
||||||
|
transform: translateY(-100%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,4 +43,4 @@
|
|||||||
top: 50%;
|
top: 50%;
|
||||||
width: 6px;
|
width: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,6 +13,7 @@ $grey-lighter : #ddd;
|
|||||||
$grey-light : #ccc;
|
$grey-light : #ccc;
|
||||||
$grey : #bbb;
|
$grey : #bbb;
|
||||||
$grey-dark : #999;
|
$grey-dark : #999;
|
||||||
|
$grey-cnt : #5c5c5c;
|
||||||
$grey-dim : #666;
|
$grey-dim : #666;
|
||||||
$black-light : #555;
|
$black-light : #555;
|
||||||
$black-dim : #333;
|
$black-dim : #333;
|
||||||
@ -49,7 +50,8 @@ $blockquote-color : $grey-dim;
|
|||||||
$blockquote-color-dark : $grey;
|
$blockquote-color-dark : $grey;
|
||||||
|
|
||||||
// Global border color.
|
// Global border color.
|
||||||
$border-color : $grey-light;
|
$border-color : $grey-dark;
|
||||||
|
$border-color-dark : $grey-lighter;
|
||||||
|
|
||||||
// Background color for <body>
|
// Background color for <body>
|
||||||
$body-bg-color : white;
|
$body-bg-color : white;
|
||||||
@ -58,8 +60,10 @@ $content-bg-color : white;
|
|||||||
$content-bg-color-dark : $black-dim;
|
$content-bg-color-dark : $black-dim;
|
||||||
|
|
||||||
// Selection
|
// Selection
|
||||||
$selection-bg : $blue-deep;
|
$selection-bg : rgba(53, 166, 247, 0.25) !default;
|
||||||
|
$selection-bg-dark : rgba(50, 112, 194, 0.4) !default;
|
||||||
$selection-color : $gainsboro;
|
$selection-color : $gainsboro;
|
||||||
|
$selection-color-dark : $grey-dark;
|
||||||
|
|
||||||
// Dark mode color
|
// Dark mode color
|
||||||
$card-bg-color : $whitesmoke;
|
$card-bg-color : $whitesmoke;
|
||||||
@ -171,6 +175,60 @@ $highlight-foreground-dark : $highlight_dark_foreground;
|
|||||||
$highlight-gutter-background-dark : mix($highlight-background-dark, $highlight-foreground-dark, 90%);
|
$highlight-gutter-background-dark : mix($highlight-background-dark, $highlight-foreground-dark, 90%);
|
||||||
$highlight-gutter-foreground-dark : mix($highlight-background-dark, $highlight-foreground-dark, 10%);
|
$highlight-gutter-foreground-dark : mix($highlight-background-dark, $highlight-foreground-dark, 10%);
|
||||||
|
|
||||||
|
// Code type list
|
||||||
|
$code-type-list:
|
||||||
|
"language-bash" "Bash",
|
||||||
|
"language-c" "C",
|
||||||
|
"language-cs" "C#",
|
||||||
|
"language-cpp" "C++",
|
||||||
|
"language-clojure" "Clojure",
|
||||||
|
"language-coffeescript" "CoffeeScript",
|
||||||
|
"language-css" "CSS",
|
||||||
|
"language-dart" "Dart",
|
||||||
|
"language-diff" "Diff",
|
||||||
|
"language-erlang" "Erlang",
|
||||||
|
"language-go" "Go",
|
||||||
|
"language-go-html-template" "Go HTML Template",
|
||||||
|
"language-groovy" "Groovy",
|
||||||
|
"language-haskell" "Haskell",
|
||||||
|
"language-html" "HTML",
|
||||||
|
"language-http" "HTTP",
|
||||||
|
"language-xml" "XML",
|
||||||
|
"language-java" "Java",
|
||||||
|
"language-js" "JavaScript",
|
||||||
|
"language-javascript" "JavaScript",
|
||||||
|
"language-json" "JSON",
|
||||||
|
"language-kotlin" "Kotlin",
|
||||||
|
"language-latex" "LaTeX",
|
||||||
|
"language-less" "Less",
|
||||||
|
"language-lisp" "Lisp",
|
||||||
|
"language-lua" "Lua",
|
||||||
|
"language-makefile" "Makefile",
|
||||||
|
"language-markdown" "Markdown",
|
||||||
|
"language-matlab" "Matlab",
|
||||||
|
"language-objectivec" "Objective-C",
|
||||||
|
"language-php" "PHP",
|
||||||
|
"language-perl" "Perl",
|
||||||
|
"language-powershell" "PowerShell",
|
||||||
|
"language-posh" "PowerShell",
|
||||||
|
"language-pwsh" "PowerShell",
|
||||||
|
"language-python" "Python",
|
||||||
|
"language-r" "R",
|
||||||
|
"language-ruby" "Ruby",
|
||||||
|
"language-rust" "Rust",
|
||||||
|
"language-scala" "Scala",
|
||||||
|
"language-scss" "Scss",
|
||||||
|
"language-shell" "Shell",
|
||||||
|
"language-sql" "SQL",
|
||||||
|
"language-swift" "Swift",
|
||||||
|
"language-tex" "TeX",
|
||||||
|
"language-toml" "TOML",
|
||||||
|
"language-ts" "TypeScript",
|
||||||
|
"language-typescript" "TypeScript",
|
||||||
|
"language-vue" "Vue",
|
||||||
|
"language-yml" "YAML",
|
||||||
|
"language-yaml" "YAML",
|
||||||
|
!default;
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
@ -283,13 +341,20 @@ $site-state-item-name-color : inherit;
|
|||||||
|
|
||||||
// Components
|
// Components
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
|
// Tool buttons
|
||||||
|
$tool-btn-bg : $black-deep;
|
||||||
|
$tool-btn-color : white;
|
||||||
|
$tool-btn-hover-fore-color : $orange;
|
||||||
|
$tool-btn-opacity : .8;
|
||||||
|
$tool-btn-opacity-hover : 1;
|
||||||
|
|
||||||
// Back to top
|
// Back to top
|
||||||
$b2t-opacity : .8;
|
$b2t-opacity : .8;
|
||||||
$b2t-opacity-hover : 1;
|
$b2t-opacity-hover : 1;
|
||||||
$b2t-position-bottom : -100px;
|
$b2t-position-bottom : -100px;
|
||||||
$b2t-position-bottom-on : 19px;
|
$b2t-position-bottom-on : 19px;
|
||||||
$b2t-position-right : 30px;
|
$b2t-position-right : 30px;
|
||||||
$b2t-position-right-mobile : 20px;
|
$b2t-position-right-mobile : 16px;
|
||||||
$b2t-font-size : 12px;
|
$b2t-font-size : 12px;
|
||||||
$b2t-color : white;
|
$b2t-color : white;
|
||||||
$b2t-bg-color : $black-deep;
|
$b2t-bg-color : $black-deep;
|
||||||
|
@ -1,176 +0,0 @@
|
|||||||
/** User-defined style. **/
|
|
||||||
{{ $P := .Site.Params -}}
|
|
||||||
|
|
||||||
{{- with $P.sidebar -}}
|
|
||||||
{{- $width := (int (math.Max .width 240)) -}}
|
|
||||||
{{- $offset := (int (math.Max .offset 12)) -}}
|
|
||||||
{{- $padding := (int (math.Max .padding 18)) -}}
|
|
||||||
{{- $positPad := (add $width $offset) }}
|
|
||||||
.main {
|
|
||||||
{{ if eq .position "right" }}
|
|
||||||
flex-direction: row-reverse;
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
.header-inner {
|
|
||||||
width: {{ $width }}px;
|
|
||||||
}
|
|
||||||
.main-inner {
|
|
||||||
width: calc(100% - {{ $positPad }}px);
|
|
||||||
}
|
|
||||||
.sidebar {
|
|
||||||
width: {{ $width }}px;
|
|
||||||
visibility: inherit;
|
|
||||||
}
|
|
||||||
.sidebar-inner {
|
|
||||||
padding: {{ $padding }}px 10px;
|
|
||||||
}
|
|
||||||
.footer-inner {
|
|
||||||
padding-{{ .position }}: {{ $positPad }}px;
|
|
||||||
}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
.site-author-image {
|
|
||||||
{{- if $P.avatar.rounded }}
|
|
||||||
border-radius:50%;
|
|
||||||
{{- end }}
|
|
||||||
{{- if $P.avatar.rotated }}
|
|
||||||
transition: transform 1s ease-out;
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-author-image:hover {
|
|
||||||
transform: rotateZ(360deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-state-item {
|
|
||||||
border-left: 1px solid #eee;
|
|
||||||
}
|
|
||||||
.site-state-item:first-child {
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rss-link {
|
|
||||||
border-top: 1px dotted #ccc;
|
|
||||||
border-bottom: 1px dotted #ccc;
|
|
||||||
text-align: center;
|
|
||||||
margin: 10px 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rss-link a {
|
|
||||||
display: block;
|
|
||||||
color: #fc6423;
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rss-link a:hover {
|
|
||||||
animation-name: wobble-vertical;
|
|
||||||
animation-duration: 2s;
|
|
||||||
animation-timing-function: ease-in-out;
|
|
||||||
animation-iteration-count: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rss-link a:hover > i {
|
|
||||||
-webkit-transform: scaleY(-1);
|
|
||||||
transform: scaleY(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.links-of-social a {
|
|
||||||
font-size: 0.8125em;
|
|
||||||
}
|
|
||||||
.links-of-social .fa,
|
|
||||||
.links-of-social .fab,
|
|
||||||
.links-of-social .far,
|
|
||||||
.links-of-social .fas {
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
.links-of-social {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.links-of-social-item {
|
|
||||||
margin: 5px 0 0;
|
|
||||||
{{- if and $P.socialIcons.enable (not $P.socialIcons.iconsOnly) }}
|
|
||||||
width: 50%;
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
.links-of-social-item a {
|
|
||||||
box-sizing: border-box;
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
padding: 0 5px;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.links-of-social-item a {
|
|
||||||
border-bottom: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.links-of-social-item a:hover {
|
|
||||||
background: var(--body-bg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.cc-license {
|
|
||||||
{{ if eq $P.creativeCommons.size "big" }}
|
|
||||||
margin-top: 10px;
|
|
||||||
{{ else }}
|
|
||||||
margin-top: 5px;
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
|
|
||||||
.back-to-top {
|
|
||||||
bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.posts-expand .post-meta-container {
|
|
||||||
margin: 10px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-meta-item-icon {
|
|
||||||
margin: 0 0 0 -5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:not(.post-meta-break) + .post-meta-item::before {
|
|
||||||
content: '|';
|
|
||||||
margin: 0 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-meta-catg:not(:last-child)::after {
|
|
||||||
content: ';';
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.posts-expand .post-header {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.posts-expand .post-body {
|
|
||||||
margin: 28px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-footer-btn {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.beian img {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 3px;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.with-love {
|
|
||||||
{{- with $P.footer.icon.color }}
|
|
||||||
color: {{ $P.footer.icon.color }};
|
|
||||||
{{- end }}
|
|
||||||
{{- if $P.footer.icon.animated }}
|
|
||||||
animation: icon-animate 1.33s ease-in-out infinite;
|
|
||||||
{{- end }}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Font Awesome */
|
|
||||||
.fa-spin {
|
|
||||||
-webkit-animation: fa-spin .8s infinite linear;
|
|
||||||
animation: fa-spin .8s infinite linear;
|
|
||||||
}
|
|
@ -1,13 +1,12 @@
|
|||||||
// CSS Style Guide : https://codeguide.co/#css
|
// CSS Style Guide : https://codeguide.co/#css
|
||||||
// All variables from site's config content.
|
// All variables from site's config content.
|
||||||
{{- $P := .Site.Params }}
|
{{ $P := .Site.Params }}
|
||||||
// Base
|
// Base
|
||||||
$scheme : {{ $P.scheme }};
|
$scheme : {{ $P.scheme }};
|
||||||
$darkmode : {{ $P.darkmode }};
|
$darkmode : {{ $P.darkmode }};
|
||||||
|
|
||||||
$body_scrollbar_overlay : {{ $P.bodyScrollbar.overlay }};
|
$body_scrollbar_overlay : {{ $P.bodyScrollbar.overlay }};
|
||||||
$body_scrollbar_stable : {{ $P.bodyScrollbar.stable }};
|
$body_scrollbar_stable : {{ $P.bodyScrollbar.stable }};
|
||||||
$mermaid_enable : {{ $P.mermaid.enable }};
|
|
||||||
$mobile_layout_economy : {{ $P.mobileLayoutEconomy }};
|
$mobile_layout_economy : {{ $P.mobileLayoutEconomy }};
|
||||||
$theme_color_dark : {{ $P.themeColor.dark }};
|
$theme_color_dark : {{ $P.themeColor.dark }};
|
||||||
$theme_color_light : {{ $P.themeColor.light }};
|
$theme_color_light : {{ $P.themeColor.light }};
|
||||||
@ -33,11 +32,6 @@ $footer_vendors_enable : {{ isset $P.footer "vendors" }};
|
|||||||
{{ printf "$footer_vendors_imgs_width:%s;" (delimit (after 1 $width) ", ") }}
|
{{ printf "$footer_vendors_imgs_width:%s;" (delimit (after 1 $width) ", ") }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
// Counter
|
|
||||||
$busuanzi_visitors : {{ $P.busuanzi.visitors }};
|
|
||||||
$busuanzi_views : {{ $P.busuanzi.views }};
|
|
||||||
$busuanzi_post_views : {{ $P.busuanzi.postViews }};
|
|
||||||
|
|
||||||
// Font
|
// Font
|
||||||
$font_enable : {{ $P.font.enable }};
|
$font_enable : {{ $P.font.enable }};
|
||||||
$font_global_size : {{ default $P.font.global.size 1 }};
|
$font_global_size : {{ default $P.font.global.size 1 }};
|
||||||
@ -70,11 +64,12 @@ $back2top_sidebar : {{ $P.backTop.sidebar }};
|
|||||||
$avatar_rotated : {{ $P.avatar.rotated }};
|
$avatar_rotated : {{ $P.avatar.rotated }};
|
||||||
$avatar_rounded : {{ $P.avatar.rounded }};
|
$avatar_rounded : {{ $P.avatar.rounded }};
|
||||||
$avatar_rounded : {{ $P.avatar.rounded }};
|
$avatar_rounded : {{ $P.avatar.rounded }};
|
||||||
$site_state : {{ $P.siteState }};
|
$site_state : {{ $P.siteState.basic }};
|
||||||
$social_icons_only : {{ $P.socialIcons.iconsOnly }};
|
$social_icons_only : {{ $P.socialIcons.iconsOnly }};
|
||||||
$social_icons_transition : {{ $P.socialIcons.transition }};
|
$social_icons_transition : {{ $P.socialIcons.transition }};
|
||||||
$links_settings_layout : {{ $P.linksSets.layout }};
|
$links_settings_layout : {{ $P.linksSets.layout }};
|
||||||
$toc_enable : {{ $P.toc.enable }};
|
$toc_enable : {{ $P.toc.enable }};
|
||||||
|
$toc_number : {{ $P.toc.number }};
|
||||||
$toc_expand_all : {{ $P.toc.expandAll }};
|
$toc_expand_all : {{ $P.toc.expandAll }};
|
||||||
$toc_wrap : {{ $P.toc.wrap }};
|
$toc_wrap : {{ $P.toc.wrap }};
|
||||||
|
|
||||||
@ -89,6 +84,9 @@ $post_edit_enable : {{ $P.postEdit.enable }};
|
|||||||
$post_meta_item_text : {{ $P.postMeta.itemText }};
|
$post_meta_item_text : {{ $P.postMeta.itemText }};
|
||||||
$reward_settings_animation : {{ $P.rewardSets.animation }};
|
$reward_settings_animation : {{ $P.rewardSets.animation }};
|
||||||
$post_end_tag_icon : {{ $P.postFooter.tagIcon }};
|
$post_end_tag_icon : {{ $P.postFooter.tagIcon }};
|
||||||
|
$post_share_enable : {{ $P.share.enable }};
|
||||||
|
$post_sharethis_set : {{ isset $P.share "sharethis" }};
|
||||||
|
$post_alert_colors : ({{ range $key, $value := $P.postAlerts }} {{ $key }}: {{ $value.color }}, {{ end }});
|
||||||
|
|
||||||
// TODO find the paramters
|
// TODO find the paramters
|
||||||
$text_align_desktop : {{ $P.textAlign.desktop }};
|
$text_align_desktop : {{ $P.textAlign.desktop }};
|
||||||
@ -112,7 +110,6 @@ $reading_progress_position : {{ $P.readingProgress.position }};
|
|||||||
$reading_progress_reversed : {{ $P.readingProgress.reversed }};
|
$reading_progress_reversed : {{ $P.readingProgress.reversed }};
|
||||||
|
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$math_mathjax_enable : {{ $P.math.mathjax.enable }};
|
|
||||||
// TODO
|
// TODO
|
||||||
//$related_posts_enable : {{ $P.relatedPosts.enable }};
|
//$related_posts_enable : {{ $P.relatedPosts.enable }};
|
||||||
$related_posts_enable : false;
|
$related_posts_enable : false;
|
||||||
@ -134,18 +131,18 @@ $disqusjs_enable : false;
|
|||||||
$livere_enable : {{ isset $P "livere" }};
|
$livere_enable : {{ isset $P "livere" }};
|
||||||
$utterances_enable : {{ isset $P "utterances" }};
|
$utterances_enable : {{ isset $P "utterances" }};
|
||||||
$waline_enable : {{ isset $P "waline" }};
|
$waline_enable : {{ isset $P "waline" }};
|
||||||
{{- with .Site.Params.comments }}
|
{{ with .Site.Params.comments }}
|
||||||
{{- $tce := and (isset . "nav") (and .storage (gt (len .nav) 1)) }}
|
{{ $tce := and (isset . "nav") (and .storage (gt (len .nav) 1)) }}
|
||||||
$two_comments_enable : {{ $tce }};
|
$two_comments_enable : {{ $tce }};
|
||||||
{{- if $tce }}
|
{{ if $tce }}
|
||||||
{{- $sortNav := sort .nav "weight" }}
|
{{ $sortNav := sort .nav "weight" }}
|
||||||
$two_comments_actived : {{ .active }};
|
$two_comments_actived : {{ .active }};
|
||||||
$first_comment_color : {{ (index $sortNav 0).color }};
|
$first_comment_color : {{ (index $sortNav 0).color }};
|
||||||
$first_comment_name : {{ lower (index $sortNav 0).name }};
|
$first_comment_name : {{ lower (index $sortNav 0).name }};
|
||||||
$second_comment_color : {{ (index $sortNav 1).color }};
|
$second_comment_color : {{ (index $sortNav 1).color }};
|
||||||
$second_comment_name : {{ lower (index $sortNav 1).name }};
|
$second_comment_name : {{ lower (index $sortNav 1).name }};
|
||||||
{{- end }}
|
{{ end }}
|
||||||
{{- end }}
|
{{ end }}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Variables Layer
|
// Variables Layer
|
||||||
@ -180,9 +177,4 @@ $second_comment_name : {{ lower (index $sortNav 1).name }};
|
|||||||
|
|
||||||
// Schemes Layer
|
// Schemes Layer
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
{{ printf "@import '_schemes/%s/';" $P.scheme }}
|
{{ printf "@import '_schemes/%s/';" $P.scheme }}
|
||||||
|
|
||||||
// Custom Layer
|
|
||||||
// TODO
|
|
||||||
// --------------------------------------------------
|
|
||||||
// @import 'theme.injects.style';
|
|
@ -3,10 +3,13 @@ body { margin-top: 2rem; }
|
|||||||
.use-motion .menu-item,
|
.use-motion .menu-item,
|
||||||
.use-motion .sidebar,
|
.use-motion .sidebar,
|
||||||
.use-motion .post-block,
|
.use-motion .post-block,
|
||||||
|
.use-motion .flinks-block,
|
||||||
.use-motion .pagination,
|
.use-motion .pagination,
|
||||||
.use-motion .comments,
|
.use-motion .comments,
|
||||||
.use-motion .post-header,
|
.use-motion .post-header,
|
||||||
|
.use-motion .flinks-header,
|
||||||
.use-motion .post-body,
|
.use-motion .post-body,
|
||||||
|
.use-motion .flinks-body,
|
||||||
.use-motion .collection-header {
|
.use-motion .collection-header {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
/* Artalk comment plugin */
|
||||||
|
NexT.plugins.comments.artalk = function() {
|
||||||
const element = '.artalk-container';
|
const element = '.artalk-container';
|
||||||
if (!NexT.CONFIG.page.comments
|
if (!NexT.CONFIG.artalk
|
||||||
|| !NexT.CONFIG.artalk
|
|
||||||
|| !NexT.utils.checkDOMExist(element)) return;
|
|| !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
const artalk_css = NexT.utils.getCDNResource(NexT.CONFIG.artalk.css);
|
|
||||||
NexT.utils.getStyle(artalk_css, null);
|
|
||||||
|
|
||||||
const artalk_js = NexT.utils.getCDNResource(NexT.CONFIG.artalk.js);
|
const artalk_js = NexT.utils.getCDNResource(NexT.CONFIG.artalk.js);
|
||||||
const {
|
const {
|
||||||
site,
|
site,
|
||||||
@ -15,10 +11,10 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
server,
|
server,
|
||||||
} = NexT.CONFIG.artalk.cfg;
|
} = NexT.CONFIG.artalk.cfg;
|
||||||
|
|
||||||
NexT.utils.loadComments(element)
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
.then(() => NexT.utils.getScript(artalk_js, {
|
NexT.utils.getScript(artalk_js, function(){
|
||||||
}))
|
const artalk_css = NexT.utils.getCDNResource(NexT.CONFIG.artalk.css);
|
||||||
.then(() => {
|
NexT.utils.getStyle(artalk_css);
|
||||||
|
|
||||||
new Artalk({
|
new Artalk({
|
||||||
el : element,
|
el : element,
|
||||||
@ -29,8 +25,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
locale : NexT.CONFIG.lang,
|
locale : NexT.CONFIG.lang,
|
||||||
placeholder : placeholder,
|
placeholder : placeholder,
|
||||||
darkMode : 'auto'
|
darkMode : 'auto'
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
NexT.utils.hiddeLodingCmp(element);
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
});
|
});
|
||||||
});
|
}
|
@ -1,5 +1,5 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
/* Giscus comment plugin */
|
||||||
|
NexT.plugins.comments.giscus = function() {
|
||||||
const element = '.giscus-container';
|
const element = '.giscus-container';
|
||||||
if (!NexT.CONFIG.page.comments
|
if (!NexT.CONFIG.page.comments
|
||||||
|| !NexT.CONFIG.giscus
|
|| !NexT.CONFIG.giscus
|
||||||
@ -17,8 +17,8 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
theme } = NexT.CONFIG.giscus.cfg;
|
theme } = NexT.CONFIG.giscus.cfg;
|
||||||
|
|
||||||
|
|
||||||
NexT.utils.loadComments(element)
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
.then(() => NexT.utils.getScript(NexT.CONFIG.giscus.js, {
|
NexT.utils.getScript(NexT.CONFIG.giscus.js, {
|
||||||
attributes: {
|
attributes: {
|
||||||
'async' : true,
|
'async' : true,
|
||||||
'crossorigin' : 'anonymous',
|
'crossorigin' : 'anonymous',
|
||||||
@ -35,7 +35,8 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
'data-loading' : 'lazy'
|
'data-loading' : 'lazy'
|
||||||
},
|
},
|
||||||
parentNode: document.querySelector(element)
|
parentNode: document.querySelector(element)
|
||||||
}));
|
});
|
||||||
|
|
||||||
NexT.utils.hiddeLodingCmp(element);
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
});
|
});
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
/* LiveRe comment plugin */
|
||||||
|
NexT.plugins.comments.livere = function() {
|
||||||
const element = '#lv-container';
|
const element = '#lv-container';
|
||||||
if (!NexT.CONFIG.page.comments
|
if (!NexT.CONFIG.livere
|
||||||
|| !NexT.CONFIG.livere
|
|
||||||
|| !NexT.utils.checkDOMExist(element)) return;
|
|| !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
NexT.utils.loadComments(element).then(() => {
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
NexT.utils.getScript(NexT.CONFIG.livere.js, {
|
NexT.utils.getScript(NexT.CONFIG.livere.js, {
|
||||||
attributes: {
|
attributes: {
|
||||||
async: true
|
async: true
|
||||||
@ -15,4 +14,4 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
|
|
||||||
NexT.utils.hiddeLodingCmp(element);
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
});
|
});
|
||||||
});
|
}
|
@ -1,8 +1,7 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
/* Utterances comment plugin */
|
||||||
|
NexT.plugins.comments.utterances = function() {
|
||||||
const element = '.utterances-container';
|
const element = '.utterances-container';
|
||||||
if (!NexT.CONFIG.page.comments
|
if (!NexT.CONFIG.utterances
|
||||||
|| !NexT.CONFIG.utterances
|
|
||||||
|| !NexT.utils.checkDOMExist(element)) return;
|
|| !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -11,17 +10,19 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
label,
|
label,
|
||||||
theme } = NexT.CONFIG.utterances.cfg;
|
theme } = NexT.CONFIG.utterances.cfg;
|
||||||
|
|
||||||
NexT.utils.loadComments(element)
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
.then(() => NexT.utils.getScript(NexT.CONFIG.utterances.js, {
|
NexT.utils.getScript(NexT.CONFIG.utterances.js, {
|
||||||
attributes: {
|
attributes: {
|
||||||
'async' : true,
|
'async' : true,
|
||||||
'crossorigin' : 'anonymous',
|
'crossorigin' : 'anonymous',
|
||||||
'repo' : repo,
|
'repo' : repo,
|
||||||
'issue-term' : issueterm,
|
'issue-term' : issueterm,
|
||||||
|
'label' : label,
|
||||||
'theme' : theme
|
'theme' : theme
|
||||||
},
|
},
|
||||||
parentNode: document.querySelector(element)
|
parentNode: document.querySelector(element)
|
||||||
}));
|
});
|
||||||
|
|
||||||
NexT.utils.hiddeLodingCmp(element);
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
});
|
});
|
||||||
|
}
|
53
assets/js/3rd/comments/waline.js
Normal file
53
assets/js/3rd/comments/waline.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/* Waline comment plugin */
|
||||||
|
NexT.plugins.comments.waline = function() {
|
||||||
|
const element = '.waline-container';
|
||||||
|
if (!NexT.CONFIG.waline
|
||||||
|
|| !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
|
const {
|
||||||
|
emoji,
|
||||||
|
imguploader,
|
||||||
|
placeholder,
|
||||||
|
sofa,
|
||||||
|
requiredmeta,
|
||||||
|
serverurl,
|
||||||
|
wordlimit,
|
||||||
|
reaction,
|
||||||
|
reactiontext,
|
||||||
|
reactiontitle
|
||||||
|
} = NexT.CONFIG.waline.cfg;
|
||||||
|
|
||||||
|
const waline_js = NexT.utils.getCDNResource(NexT.CONFIG.waline.js);
|
||||||
|
|
||||||
|
let locale = {
|
||||||
|
placeholder : placeholder,
|
||||||
|
sofa : sofa,
|
||||||
|
reactionTitle : reactiontitle
|
||||||
|
};
|
||||||
|
|
||||||
|
reactiontext.forEach(function(value, index){
|
||||||
|
locale['reaction'+index] = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
NexT.utils.lazyLoadComponent(element, function () {
|
||||||
|
NexT.utils.getScript(waline_js, function(){
|
||||||
|
const waline_css = NexT.utils.getCDNResource(NexT.CONFIG.waline.css);
|
||||||
|
NexT.utils.getStyle(waline_css, 'before');
|
||||||
|
|
||||||
|
Waline.init({
|
||||||
|
locale,
|
||||||
|
el : element,
|
||||||
|
emoji : emoji,
|
||||||
|
imageUploader : imguploader,
|
||||||
|
wordLimit : wordlimit,
|
||||||
|
requiredMeta : requiredmeta,
|
||||||
|
reaction : reaction,
|
||||||
|
serverURL : serverurl,
|
||||||
|
lang : NexT.CONFIG.lang,
|
||||||
|
dark : 'html[data-theme="dark"]'
|
||||||
|
});
|
||||||
|
|
||||||
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
60
assets/js/3rd/comments/waline3.js
Normal file
60
assets/js/3rd/comments/waline3.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* Waline3 comment plugin */
|
||||||
|
NexT.plugins.comments.waline3 = function () {
|
||||||
|
const element = '.waline3-container';
|
||||||
|
if (!NexT.CONFIG.waline3
|
||||||
|
|| !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
|
const {
|
||||||
|
emoji,
|
||||||
|
search,
|
||||||
|
imguploader,
|
||||||
|
placeholder,
|
||||||
|
sofa,
|
||||||
|
requiredmeta,
|
||||||
|
serverurl,
|
||||||
|
wordlimit,
|
||||||
|
reaction,
|
||||||
|
reactiontext,
|
||||||
|
reactiontitle
|
||||||
|
} = NexT.CONFIG.waline3.cfg;
|
||||||
|
|
||||||
|
const waline_js = NexT.utils.getCDNResource(NexT.CONFIG.waline3.js);
|
||||||
|
|
||||||
|
NexT.utils.lazyLoadComponent(element, () => {
|
||||||
|
|
||||||
|
const waline_css = NexT.utils.getCDNResource(NexT.CONFIG.waline3.css);
|
||||||
|
NexT.utils.getStyle(waline_css, 'before');
|
||||||
|
|
||||||
|
let waline_script = `
|
||||||
|
let locale = {
|
||||||
|
placeholder : '${placeholder}',
|
||||||
|
sofa : '${sofa}',
|
||||||
|
reactionTitle : '${reactiontitle}'
|
||||||
|
};
|
||||||
|
|
||||||
|
let recatt = ${JSON.stringify(reactiontext)}
|
||||||
|
recatt.forEach(function(value, index){
|
||||||
|
locale['reaction'+index] = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
import('${waline_js}').then((Waline) => {
|
||||||
|
Waline.init({
|
||||||
|
locale,
|
||||||
|
el : '${element}',
|
||||||
|
emoji : ${emoji},
|
||||||
|
search : ${search},
|
||||||
|
imageUploader : ${imguploader},
|
||||||
|
wordLimit : ${wordlimit},
|
||||||
|
requiredMeta : ${JSON.stringify(requiredmeta)},
|
||||||
|
reaction : ${reaction},
|
||||||
|
serverURL : '${serverurl}',
|
||||||
|
dark : 'html[data-theme="dark"]'
|
||||||
|
});
|
||||||
|
|
||||||
|
NexT.utils.hiddeLodingCmp('${element}');
|
||||||
|
});
|
||||||
|
`;
|
||||||
|
|
||||||
|
NexT.utils.getScript(null, { module: true, textContent: waline_script });
|
||||||
|
});
|
||||||
|
}
|
57
assets/js/3rd/others/clipboard.js
Normal file
57
assets/js/3rd/others/clipboard.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/* clipboard plugin */
|
||||||
|
NexT.plugins.others.clipboard = function () {
|
||||||
|
|
||||||
|
let chromaDiv = document.querySelectorAll('div.highlight div.chroma');
|
||||||
|
if (chromaDiv.length === 0) return;
|
||||||
|
|
||||||
|
chromaDiv.forEach(element => {
|
||||||
|
// Add copy button DOM.
|
||||||
|
let codeblock = element.querySelector('code[class]:not([class=""]');
|
||||||
|
let lang = codeblock.className;
|
||||||
|
let copyBtn = document.createElement('div');
|
||||||
|
copyBtn.classList.add('copy-btn');
|
||||||
|
codeblock.parentNode.appendChild(copyBtn);
|
||||||
|
|
||||||
|
element.addEventListener('mouseleave', () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
copyBtn.classList.remove('copied','uncopied');
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add code header show
|
||||||
|
var ch = document.createElement('div');
|
||||||
|
ch.classList.add('code-header');
|
||||||
|
ch.classList.add(lang);
|
||||||
|
ch.insertAdjacentHTML('afterbegin',
|
||||||
|
'<span class="code-lang"></span><span class="collapse-btn"></span>');
|
||||||
|
ch.addEventListener('click', function () {
|
||||||
|
element.classList.toggle('hidden-code');
|
||||||
|
ch.querySelector('.collapse-btn').classList.toggle('collapse');
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
element.parentNode.insertBefore(ch, element);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!NexT.CONFIG.copybtn || !NexT.CONFIG.page.clipboard) return;
|
||||||
|
|
||||||
|
const clipboard_js = NexT.utils.getCDNResource(NexT.CONFIG.page.clipboard.js);
|
||||||
|
NexT.utils.getScript(clipboard_js, function () {
|
||||||
|
// Register the clipboard event.
|
||||||
|
var clipboard = new ClipboardJS('.copy-btn', {
|
||||||
|
text: function (trigger) {
|
||||||
|
// TODO: Why there clipboard default text content with enter?
|
||||||
|
return trigger.previousElementSibling.textContent.trim();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
clipboard.on('success', function (e) {
|
||||||
|
e.clearSelection();
|
||||||
|
e.trigger.classList.add('copied');
|
||||||
|
});
|
||||||
|
|
||||||
|
clipboard.on('error', function (e) {
|
||||||
|
console.error('Copy failed:', e);
|
||||||
|
e.trigger.classList.add('uncopied');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
66
assets/js/3rd/others/counter.js
Normal file
66
assets/js/3rd/others/counter.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/* Page's view & comment counter plugin */
|
||||||
|
NexT.plugins.others.counter = function () {
|
||||||
|
let pageview_js = undefined;
|
||||||
|
let comment_js = undefined;
|
||||||
|
|
||||||
|
const post_meta = NexT.CONFIG.postmeta;
|
||||||
|
|
||||||
|
const views = post_meta.views;
|
||||||
|
if (views != undefined && views.enable) {
|
||||||
|
let pageview_el = '#pageview-count';
|
||||||
|
|
||||||
|
switch (views.plugin) {
|
||||||
|
case 'waline':
|
||||||
|
pageview_js = NexT.utils.getCDNResource(NexT.CONFIG.page.waline.pagecnt);
|
||||||
|
NexT.utils.getScript(pageview_js, function () {
|
||||||
|
Waline.pageviewCount({
|
||||||
|
selector : pageview_el,
|
||||||
|
serverURL: NexT.CONFIG.waline.cfg.serverurl
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'waline3':
|
||||||
|
pageview_js = NexT.utils.getCDNResource(NexT.CONFIG.page.waline3.pagecnt);
|
||||||
|
|
||||||
|
let pageview_script = `
|
||||||
|
import('${pageview_js}').then((Waline) => {
|
||||||
|
Waline.pageviewCount({
|
||||||
|
selector : '${pageview_el}',
|
||||||
|
serverURL: '${NexT.CONFIG.waline3.cfg.serverurl}'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
`;
|
||||||
|
NexT.utils.getScript(null, { module: true, textContent: pageview_script });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const comments = post_meta.comments;
|
||||||
|
if (comments != undefined && comments.enable) {
|
||||||
|
let comments_el = '#comments-count';
|
||||||
|
switch (comments.plugin) {
|
||||||
|
case 'waline':
|
||||||
|
comment_js = NexT.utils.getCDNResource(NexT.CONFIG.page.waline.commentcnt);
|
||||||
|
NexT.utils.getScript(comment_js, function () {
|
||||||
|
Waline.commentCount({
|
||||||
|
selector : comments_el,
|
||||||
|
serverURL: NexT.CONFIG.waline.cfg.serverurl
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'waline3':
|
||||||
|
comment_js = NexT.utils.getCDNResource(NexT.CONFIG.page.waline3.commentcnt);
|
||||||
|
let comment_script = `
|
||||||
|
import('${comment_js}').then((Waline) => {
|
||||||
|
Waline.commentCount({
|
||||||
|
selector : '${comments_el}',
|
||||||
|
serverURL: '${NexT.CONFIG.waline3.cfg.serverurl}'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
`;
|
||||||
|
NexT.utils.getScript(null, { module: true, textContent: comment_script });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
assets/js/3rd/others/lawidget.js
Normal file
22
assets/js/3rd/others/lawidget.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 51La sidebar data widget */
|
||||||
|
NexT.plugins.others.lawidget = function() {
|
||||||
|
|
||||||
|
if (!NexT.CONFIG.lawidget ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const element = '#siteinfo-card-widget';
|
||||||
|
const lawt_js = NexT.CONFIG.lawidget.js.replace('laId', NexT.CONFIG.lawidget.id);
|
||||||
|
|
||||||
|
NexT.utils.lazyLoadComponent(element, function () {
|
||||||
|
NexT.utils.getScript(lawt_js,{
|
||||||
|
attributes: {
|
||||||
|
id: 'LA-DATA-WIDGET',
|
||||||
|
crossorigin: 'anonymous',
|
||||||
|
charset: 'UTF-8',
|
||||||
|
defer: true
|
||||||
|
},
|
||||||
|
parentNode: document.getElementById('la-siteinfo-widget')
|
||||||
|
}, NexT.utils.fmtLaWidget());
|
||||||
|
});
|
||||||
|
}
|
49
assets/js/3rd/others/math.js
Normal file
49
assets/js/3rd/others/math.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* Math render plugin */
|
||||||
|
NexT.plugins.others.math = function() {
|
||||||
|
const render = NexT.CONFIG.page.math.render;
|
||||||
|
|
||||||
|
if (render === 'mathjax') {
|
||||||
|
const render_js = NexT.utils.getCDNResource(NexT.CONFIG.page.math.js);
|
||||||
|
const mathjaxCfg = `
|
||||||
|
window.MathJax = {
|
||||||
|
// 自定义内联数学公式的分隔符号
|
||||||
|
tex: {
|
||||||
|
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
||||||
|
},
|
||||||
|
// SVG 渲染配置为全局共享字体缓存
|
||||||
|
svg: {
|
||||||
|
fontCache: 'global'
|
||||||
|
},
|
||||||
|
// 排除特定的HTML标签,避免过度渲染
|
||||||
|
options: {
|
||||||
|
skipHtmlTags: ["script", "noscript", "style", "textarea", "pre", "footer"],
|
||||||
|
}
|
||||||
|
};
|
||||||
|
`;
|
||||||
|
NexT.utils.getScript(null, { textContent: mathjaxCfg });
|
||||||
|
NexT.utils.getScript(render_js, { attributes: { id: "MathJax-script", "async": true }});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (render === 'katex') {
|
||||||
|
const render_css = NexT.utils.getCDNResource(NexT.CONFIG.page.math.css);
|
||||||
|
NexT.utils.getStyle(render_css);
|
||||||
|
const render_js_list = NexT.CONFIG.page.math.js;
|
||||||
|
render_js_list.forEach(js => {
|
||||||
|
const js_loader = NexT.utils.getScript(NexT.utils.getCDNResource(js));
|
||||||
|
if(js.name === 'auto-render') {
|
||||||
|
js_loader.then(function(){
|
||||||
|
renderMathInElement(document.body, {
|
||||||
|
delimiters: [
|
||||||
|
{left: '$$', right: '$$', display: true},
|
||||||
|
{left: '$', right: '$', display: false},
|
||||||
|
{left: '\\(', right: '\\)', display: false},
|
||||||
|
{left: '\\[', right: '\\]', display: true}
|
||||||
|
],
|
||||||
|
|
||||||
|
throwOnError : false
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
15
assets/js/3rd/others/mermaid.js
Normal file
15
assets/js/3rd/others/mermaid.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/* Mermaid plugin */
|
||||||
|
NexT.plugins.others.mermaid = function() {
|
||||||
|
const mermaid_js = NexT.utils.getCDNResource(NexT.CONFIG.page.mermaid.js);
|
||||||
|
|
||||||
|
NexT.utils.getScript(mermaid_js, function(){
|
||||||
|
mermaid.initialize({
|
||||||
|
sequence: {
|
||||||
|
showSequenceNumbers: true,
|
||||||
|
actorMargin: 50,
|
||||||
|
diagramMarginX:10,
|
||||||
|
diagramMarginY:10
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
@ -1,12 +1,11 @@
|
|||||||
/* global instantsearch, algoliasearch, CONFIG, pjax */
|
/* Algolia search engine */
|
||||||
|
NexT.plugins.search.algolia = function() {
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
const algoliajs = NexT.utils.getCDNResource(NexT.CONFIG.algolia.js);
|
||||||
|
|
||||||
const algoiajs = NexT.utils.getCDNResource(NexT.CONFIG.algolia.js);
|
|
||||||
const instantschjs = NexT.utils.getCDNResource(NexT.CONFIG.algolia.instantjs);
|
const instantschjs = NexT.utils.getCDNResource(NexT.CONFIG.algolia.instantjs);
|
||||||
|
|
||||||
NexT.utils.getScript(algoiajs, {});
|
NexT.utils.getScript(algoliajs);
|
||||||
NexT.utils.getScript(instantschjs, {}).then(() => {
|
NexT.utils.getScript(instantschjs, function() {
|
||||||
|
|
||||||
const { indexname, appid, apikey, hits } = NexT.CONFIG.algolia.cfg;
|
const { indexname, appid, apikey, hits } = NexT.CONFIG.algolia.cfg;
|
||||||
const indexName = indexname;
|
const indexName = indexname;
|
||||||
@ -56,7 +55,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const stats = NexT.CONFIG.i18n.hits_time
|
const stats = NexT.CONFIG.i18n.hits_time
|
||||||
.replace('${hits}', data.nbHits)
|
.replace('${hits}', data.nbHits)
|
||||||
.replace('${time}', data.processingTimeMS);
|
.replace('${time}', data.processingTimeMS);
|
||||||
return `<span>${stats}</span><img src="/imgs/algolia-logo.svg" alt="Algolia">`;
|
return `${stats}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cssClasses: {
|
cssClasses: {
|
||||||
@ -138,7 +137,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
onPopupClose();
|
onPopupClose();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});;
|
});
|
||||||
|
|
||||||
|
}
|
||||||
});
|
|
@ -1,4 +1,4 @@
|
|||||||
/* global CONFIG, pjax, LocalSearch */
|
/* LocalSearch engine */
|
||||||
class LocalSearch {
|
class LocalSearch {
|
||||||
constructor({
|
constructor({
|
||||||
path = '',
|
path = '',
|
||||||
@ -227,7 +227,7 @@ class LocalSearch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
NexT.plugins.search.localsearch = function() {
|
||||||
if (! NexT.CONFIG.localSearch.path) {
|
if (! NexT.CONFIG.localSearch.path) {
|
||||||
// Search DB path
|
// Search DB path
|
||||||
console.warn('`search indexes file` is not configurate!');
|
console.warn('`search indexes file` is not configurate!');
|
||||||
@ -323,4 +323,4 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
onPopupClose();
|
onPopupClose();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
}
|
24
assets/js/3rd/share/addtoany.js
Normal file
24
assets/js/3rd/share/addtoany.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* Addtoany share plugin */
|
||||||
|
NexT.plugins.share.addtoany = function() {
|
||||||
|
const element = '.a2a_kit';
|
||||||
|
if (!NexT.CONFIG.share.enable || !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
|
const addtoany = NexT.CONFIG.share.addtoany;
|
||||||
|
|
||||||
|
if (!addtoany) return;
|
||||||
|
|
||||||
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
|
let addtoany_cfg = `
|
||||||
|
var a2a_config = a2a_config || {};
|
||||||
|
a2a_config.onclick = 1;
|
||||||
|
a2a_config.locale = "${addtoany.locale}";
|
||||||
|
a2a_config.num_services = ${addtoany.num};
|
||||||
|
`;
|
||||||
|
|
||||||
|
NexT.utils.getScript(null, {
|
||||||
|
textContent: addtoany_cfg
|
||||||
|
});
|
||||||
|
|
||||||
|
NexT.utils.getScript(addtoany.js, () => { NexT.utils.hiddeLodingCmp(element); });
|
||||||
|
});
|
||||||
|
}
|
21
assets/js/3rd/share/sharethis.js
Normal file
21
assets/js/3rd/share/sharethis.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* Sharethis share plugin */
|
||||||
|
NexT.plugins.share.sharethis = function() {
|
||||||
|
const element = '.sharethis-inline-share-buttons';
|
||||||
|
if (!NexT.CONFIG.share.enable || !NexT.utils.checkDOMExist(element)) return;
|
||||||
|
|
||||||
|
const sharethis = NexT.CONFIG.share.sharethis;
|
||||||
|
|
||||||
|
if (!sharethis) return;
|
||||||
|
|
||||||
|
const sharethis_js = sharethis.js.replace(/id/, sharethis.id);
|
||||||
|
|
||||||
|
NexT.utils.lazyLoadComponent(element, function() {
|
||||||
|
NexT.utils.getScript(sharethis_js, {
|
||||||
|
attributes: {
|
||||||
|
async: 'async'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
NexT.utils.hiddeLodingCmp(element);
|
||||||
|
});
|
||||||
|
}
|
@ -1,4 +1,52 @@
|
|||||||
if (!window.NexT) window.NexT = {};
|
/* global NexT, boot, CONFIG */
|
||||||
|
window.NexT = {};
|
||||||
|
NexT.boot = {};
|
||||||
|
NexT.plugins = {};
|
||||||
|
|
||||||
|
// Defined comment component & add register event
|
||||||
|
NexT.plugins.comments = {};
|
||||||
|
NexT.plugins.comments.register = function() {
|
||||||
|
if (!NexT.CONFIG.page.comments) return;
|
||||||
|
for(var c in NexT.plugins.comments) {
|
||||||
|
if (c === 'register') continue;
|
||||||
|
eval('NexT.plugins.comments.'+c)();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defined search engine & add register event
|
||||||
|
NexT.plugins.search = {}
|
||||||
|
NexT.plugins.search.register = function() {
|
||||||
|
for(var s in NexT.plugins.search) {
|
||||||
|
if (s === 'register') continue;
|
||||||
|
eval('NexT.plugins.search.'+s)();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defined share plugin & add register event
|
||||||
|
NexT.plugins.share = {}
|
||||||
|
NexT.plugins.share.register = function() {
|
||||||
|
for(var s in NexT.plugins.share) {
|
||||||
|
if (s === 'register') continue;
|
||||||
|
eval('NexT.plugins.share.'+s)();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Defined other plugin & add register event
|
||||||
|
NexT.plugins.others = {}
|
||||||
|
NexT.plugins.others.register = function() {
|
||||||
|
for(var o in NexT.plugins.others) {
|
||||||
|
if (o === 'register') continue;
|
||||||
|
eval('NexT.plugins.others.'+o)();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add event to register all third party plugins
|
||||||
|
NexT.plugins.register = function() {
|
||||||
|
for(var p in NexT.plugins) {
|
||||||
|
if (p === 'register') continue;
|
||||||
|
eval('NexT.plugins.'+p+'.register')();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
const className = 'next-config';
|
const className = 'next-config';
|
||||||
|
@ -95,10 +95,10 @@ NexT.motion.middleWares = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
animate(postblock, '.post-block,.flinks-block, .pagination, .post-comments');
|
animate(postblock, '.post-block, .flinks-block, .pagination, .post-comments');
|
||||||
animate(collheader, '.collection-header');
|
animate(collheader, '.collection-header');
|
||||||
animate(postheader, '.post-header');
|
animate(postheader, '.post-header, .flinks-header');
|
||||||
animate(postbody, '.post-body');
|
animate(postbody, '.post-body, .flinks-body');
|
||||||
|
|
||||||
return sequence;
|
return sequence;
|
||||||
},
|
},
|
||||||
|
@ -1,11 +1,37 @@
|
|||||||
/* global NexT, CONFIG */
|
/* boot starup */
|
||||||
|
|
||||||
NexT.boot = {};
|
(function () {
|
||||||
|
const onPageLoaded = () => document.dispatchEvent(
|
||||||
|
new Event('page:loaded', {
|
||||||
|
bubbles: true
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('readystatechange', onPageLoaded, { once: true });
|
||||||
|
} else {
|
||||||
|
onPageLoaded();
|
||||||
|
}
|
||||||
|
document.addEventListener('pjax:success', onPageLoaded);
|
||||||
|
})();
|
||||||
|
|
||||||
NexT.boot.registerEvents = function() {
|
NexT.boot.registerEvents = function() {
|
||||||
|
|
||||||
|
NexT.utils.registerMenuClick();
|
||||||
|
NexT.utils.registerImageLoadEvent();
|
||||||
NexT.utils.registerScrollPercent();
|
NexT.utils.registerScrollPercent();
|
||||||
// NexT.utils.registerCanIUseTag();
|
// NexT.utils.registerCanIUseTag();
|
||||||
|
NexT.utils.registerToolButtons();
|
||||||
|
// Register comment's components
|
||||||
|
NexT.plugins.register();
|
||||||
|
|
||||||
|
// Register comment counter click event
|
||||||
|
const commentCnt = document.querySelector('#comments-count');
|
||||||
|
if (commentCnt && NexT.CONFIG.page.isPage) {
|
||||||
|
commentCnt.addEventListener('click', event => {
|
||||||
|
NexT.utils.slidScrollBarAnime('comments');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Mobile top menu bar.
|
// Mobile top menu bar.
|
||||||
document.querySelector('.site-nav-toggle .toggle').addEventListener('click', event => {
|
document.querySelector('.site-nav-toggle .toggle').addEventListener('click', event => {
|
||||||
@ -33,17 +59,27 @@ NexT.boot.registerEvents = function() {
|
|||||||
|
|
||||||
NexT.boot.refresh = function() {
|
NexT.boot.refresh = function() {
|
||||||
|
|
||||||
|
NexT.utils.fmtSiteInfo();
|
||||||
|
|
||||||
|
if (NexT.CONFIG.isMultiLang) {
|
||||||
|
NexT.utils.registerLangSelect();
|
||||||
|
}
|
||||||
|
|
||||||
if (!NexT.CONFIG.page.isPage) return;
|
if (!NexT.CONFIG.page.isPage) return;
|
||||||
|
|
||||||
NexT.utils.registerSidebarTOC();
|
if (NexT.CONFIG.page.toc) NexT.utils.registerSidebarTOC();
|
||||||
NexT.utils.replacePostCRLink();
|
if (NexT.CONFIG.page.expired) NexT.utils.calPostExpiredDate();
|
||||||
NexT.utils.registerCopyCode();
|
if (NexT.CONFIG.page.music) NexT.utils.registerAPlayer();
|
||||||
|
|
||||||
|
NexT.utils.registerImageViewer();
|
||||||
NexT.utils.registerPostReward();
|
NexT.utils.registerPostReward();
|
||||||
|
|
||||||
if(NexT.CONFIG.page.comments) {
|
if(NexT.CONFIG.page.comments) {
|
||||||
NexT.utils.initCommontesDispaly();
|
NexT.utils.initCommontesDispaly();
|
||||||
NexT.utils.registerCommonSwitch();
|
NexT.utils.registerCommonSwitch();
|
||||||
|
NexT.utils.domAddClass('#goto-comments', 'show');
|
||||||
} else {
|
} else {
|
||||||
NexT.utils.hideCommontes();
|
NexT.utils.domAddClass('#goto-comments', 'hidden');
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
|
48
assets/js/third-party/comments/waline.js
vendored
48
assets/js/third-party/comments/waline.js
vendored
@ -1,48 +0,0 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
|
||||||
|
|
||||||
const element = '.waline-container';
|
|
||||||
if (!NexT.CONFIG.page.comments
|
|
||||||
|| !NexT.CONFIG.waline
|
|
||||||
|| !NexT.utils.checkDOMExist(element)) return;
|
|
||||||
|
|
||||||
const {
|
|
||||||
emoji,
|
|
||||||
imguploader,
|
|
||||||
pageview,
|
|
||||||
placeholder,
|
|
||||||
requiredmeta,
|
|
||||||
serverurl,
|
|
||||||
wordlimit
|
|
||||||
} = NexT.CONFIG.waline.cfg;
|
|
||||||
|
|
||||||
|
|
||||||
const waline_css = NexT.utils.getCDNResource(NexT.CONFIG.waline.css);
|
|
||||||
NexT.utils.getStyle(waline_css, null);
|
|
||||||
|
|
||||||
const waline_js = NexT.utils.getCDNResource(NexT.CONFIG.waline.js);
|
|
||||||
|
|
||||||
const locale = {
|
|
||||||
placeholder: placeholder
|
|
||||||
};
|
|
||||||
|
|
||||||
NexT.utils.loadComments(element)
|
|
||||||
.then(() => NexT.utils.getScript(waline_js, {
|
|
||||||
}))
|
|
||||||
.then(() => {
|
|
||||||
|
|
||||||
Waline.init({
|
|
||||||
locale,
|
|
||||||
el : element,
|
|
||||||
pageview : pageview,
|
|
||||||
emoji : emoji,
|
|
||||||
imageUploader : imguploader,
|
|
||||||
wordLimit : wordlimit,
|
|
||||||
requiredMeta : requiredmeta,
|
|
||||||
serverURL : serverurl,
|
|
||||||
lang : NexT.CONFIG.lang,
|
|
||||||
dark : "auto"
|
|
||||||
});
|
|
||||||
|
|
||||||
NexT.utils.hiddeLodingCmp(element);
|
|
||||||
});
|
|
||||||
});
|
|
16
assets/js/third-party/share/addthis.js
vendored
16
assets/js/third-party/share/addthis.js
vendored
@ -1,16 +0,0 @@
|
|||||||
document.addEventListener('DOMContentLoaded', () => {
|
|
||||||
|
|
||||||
const element = '.addthis_inline_share_toolbox';
|
|
||||||
if (!NexT.CONFIG.addthis || !NexT.utils.checkDOMExist(element)) return;
|
|
||||||
|
|
||||||
const addthis_js = NexT.CONFIG.addthis.js + '?pubid=' + NexT.CONFIG.addthis.cfg.pubid;
|
|
||||||
|
|
||||||
NexT.utils.loadComments(element).then(() => {
|
|
||||||
NexT.utils.getScript(addthis_js, {
|
|
||||||
attributes: {
|
|
||||||
async: true
|
|
||||||
},
|
|
||||||
parentNode: document.querySelector(element)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,91 +1,362 @@
|
|||||||
/* global NexT, CONFIG */
|
/* util tools */
|
||||||
|
|
||||||
HTMLElement.prototype.wrap = function(wrapper) {
|
HTMLElement.prototype.wrap = function (wrapper) {
|
||||||
this.parentNode.insertBefore(wrapper, this);
|
this.parentNode.insertBefore(wrapper, this);
|
||||||
this.parentNode.removeChild(this);
|
this.parentNode.removeChild(this);
|
||||||
wrapper.appendChild(this);
|
wrapper.appendChild(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
(function() {
|
|
||||||
const onPageLoaded = () => document.dispatchEvent(
|
|
||||||
new Event('page:loaded', {
|
|
||||||
bubbles: true
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
if (document.readyState === 'loading') {
|
|
||||||
document.addEventListener('readystatechange', onPageLoaded, { once: true });
|
|
||||||
} else {
|
|
||||||
onPageLoaded();
|
|
||||||
}
|
|
||||||
document.addEventListener('pjax:success', onPageLoaded);
|
|
||||||
})();
|
|
||||||
|
|
||||||
NexT.utils = {
|
NexT.utils = {
|
||||||
|
registerAPlayer: function () {
|
||||||
|
this.getStyle(
|
||||||
|
NexT.utils.getCDNResource(NexT.CONFIG.page.music.css)
|
||||||
|
);
|
||||||
|
|
||||||
|
NexT.CONFIG.page.music.js.forEach(function(js) {
|
||||||
|
NexT.utils.getScript(NexT.utils.getCDNResource(js), true);
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
calPostExpiredDate: function() {
|
||||||
|
const postMetaDom = document.querySelector('.post-meta-container');
|
||||||
|
let postTime = postMetaDom.querySelector('time[itemprop="dateCreated datePublished"]').getAttribute("datetime");
|
||||||
|
let postLastmodTime = postMetaDom.querySelector('time[itemprop="dateModified dateLastmod"]');
|
||||||
|
|
||||||
checkDOMExist: function(selector) {
|
if (postLastmodTime != null) postTime = postLastmodTime.getAttribute("datetime");
|
||||||
|
|
||||||
|
let expiredTip = '';
|
||||||
|
const expireCfg = NexT.CONFIG.page.expiredTips;
|
||||||
|
let expiredTime = this.diffDate(postTime, 2);
|
||||||
|
|
||||||
|
if (expiredTime.indexOf(NexT.CONFIG.i18n.ds_years) > -1) {
|
||||||
|
expiredTip = expireCfg.warn.split('#');
|
||||||
|
} else {
|
||||||
|
let days = parseInt(expiredTime.replace(NexT.CONFIG.i18n.ds_days, '').trim(), 10);
|
||||||
|
if (days < 180) return;
|
||||||
|
expiredTip = expireCfg.info.split('#');
|
||||||
|
}
|
||||||
|
|
||||||
|
let expiredTipPre = expiredTip[0];
|
||||||
|
let expiredTipSuf = expiredTip[1];
|
||||||
|
expiredTip = expiredTipPre + '<span class="post-expired-times">' + expiredTime + '</span>' + expiredTipSuf;
|
||||||
|
document.getElementById('post-expired-content').innerHTML = expiredTip;
|
||||||
|
this.domAddClass('#post-expired-tip', 'show');
|
||||||
|
},
|
||||||
|
registerMenuClick: function () {
|
||||||
|
const pMenus = document.querySelectorAll('.main-menu > li > a.menus-parent');
|
||||||
|
pMenus.forEach(function (item) {
|
||||||
|
const icon = item.querySelector('span > i');
|
||||||
|
var ul = item.nextElementSibling;
|
||||||
|
|
||||||
|
item.addEventListener('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
ul.classList.toggle('expand');
|
||||||
|
if (ul.classList.contains('expand')) {
|
||||||
|
icon.className = 'fa fa-angle-down';
|
||||||
|
} else {
|
||||||
|
icon.className = 'fa fa-angle-right';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var cCls = ul.querySelectorAll('.menu-item-active');
|
||||||
|
if (cCls != null && cCls.length > 0) {
|
||||||
|
item.click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
registerImageLoadEvent: function () {
|
||||||
|
const images = document.querySelectorAll('.sidebar img, .post-block img, .vendors-list img');
|
||||||
|
|
||||||
|
const callback = (entries) => {
|
||||||
|
entries.forEach(item => {
|
||||||
|
if (item.intersectionRatio > 0) {
|
||||||
|
let ele = item.target;
|
||||||
|
let imgSrc = ele.getAttribute('data-src');
|
||||||
|
if (imgSrc) {
|
||||||
|
let img = new Image();
|
||||||
|
img.addEventListener('load', function () {
|
||||||
|
ele.src = imgSrc;
|
||||||
|
}, false);
|
||||||
|
ele.src = imgSrc;
|
||||||
|
// Prevent load image again
|
||||||
|
ele.removeAttribute('data-src');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver(callback);
|
||||||
|
images.forEach(img => {
|
||||||
|
observer.observe(img);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
registerImageViewer: function () {
|
||||||
|
const post_body = document.querySelector('.post-body');
|
||||||
|
if (post_body) {
|
||||||
|
new Viewer(post_body, { navbar: 2, toolbar: 2 });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
registerToolButtons: function () {
|
||||||
|
const buttons = document.querySelector('.tool-buttons');
|
||||||
|
|
||||||
|
const scrollbar_buttons = buttons.querySelectorAll('div:not(#toggle-theme)');
|
||||||
|
scrollbar_buttons.forEach(button => {
|
||||||
|
let targetId = button.id;
|
||||||
|
if (targetId != '') {
|
||||||
|
targetId = targetId.substring(5);
|
||||||
|
}
|
||||||
|
button.addEventListener('click', () => {
|
||||||
|
this.slidScrollBarAnime(targetId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
buttons.querySelector('div#toggle-theme').addEventListener('click', () => {
|
||||||
|
const cur_theme = document.documentElement.getAttribute('data-theme');
|
||||||
|
window.theme.toggle(cur_theme === 'dark' ? 'light' : 'dark');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
slidScrollBarAnime: function (targetId, easing = 'linear', duration = 500) {
|
||||||
|
const targetObj = document.getElementById(targetId);
|
||||||
|
|
||||||
|
window.anime({
|
||||||
|
targets: document.scrollingElement,
|
||||||
|
duration: duration,
|
||||||
|
easing: easing,
|
||||||
|
scrollTop: targetId == '' || !targetObj ? 0 : targetObj.getBoundingClientRect().top + window.scrollY
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
domAddClass: function (selector, cls) {
|
||||||
|
const doms = document.querySelectorAll(selector);
|
||||||
|
if (doms) {
|
||||||
|
doms.forEach(dom => {
|
||||||
|
dom.classList.add(cls);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
fmtSiteInfo: function () {
|
||||||
|
const runtimeCount = document.getElementById('runTimes');
|
||||||
|
if (runtimeCount) {
|
||||||
|
const publishDate = runtimeCount.getAttribute('data-publishDate');
|
||||||
|
const runTimes = this.diffDate(publishDate, 2);
|
||||||
|
runtimeCount.innerText = runTimes;
|
||||||
|
}
|
||||||
|
|
||||||
|
const wordsCount = document.getElementById('wordsCount');
|
||||||
|
if (wordsCount) {
|
||||||
|
const words = wordsCount.getAttribute('data-count');
|
||||||
|
wordsCount.innerText = this.numberFormat(words);
|
||||||
|
}
|
||||||
|
|
||||||
|
const readTimes = document.getElementById('readTimes');
|
||||||
|
if (readTimes) {
|
||||||
|
const times = readTimes.getAttribute('data-times');
|
||||||
|
|
||||||
|
const hour = 60;
|
||||||
|
const day = hour * 24;
|
||||||
|
|
||||||
|
const daysCount = parseInt(times / day);
|
||||||
|
const hoursCount = parseInt(times / hour);
|
||||||
|
|
||||||
|
let timesLabel;
|
||||||
|
if (daysCount >= 1) {
|
||||||
|
timesLabel = daysCount + NexT.CONFIG.i18n.ds_days + parseInt((times - daysCount * day) / hour) + NexT.CONFIG.i18n.ds_hours;
|
||||||
|
} else if (hoursCount >= 1) {
|
||||||
|
timesLabel = hoursCount + NexT.CONFIG.i18n.ds_hours + (times - hoursCount * hour) + NexT.CONFIG.i18n.ds_mins;
|
||||||
|
} else {
|
||||||
|
timesLabel = times + NexT.CONFIG.i18n.ds_mins;
|
||||||
|
}
|
||||||
|
|
||||||
|
readTimes.innerText = timesLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lastPushDate = document.getElementById('last-push-date');
|
||||||
|
if (lastPushDate) {
|
||||||
|
const pushDateVal = this.diffDate(lastPushDate.getAttribute('data-lastPushDate'), 1);
|
||||||
|
lastPushDate.innerText = pushDateVal;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
fmtLaWidget: function () {
|
||||||
|
setTimeout(function () {
|
||||||
|
const laWidget = document.querySelectorAll('#la-siteinfo-widget span');
|
||||||
|
if (laWidget.length > 0) {
|
||||||
|
const valIds = [0, 2, 4, 6];
|
||||||
|
const domIds = ['today_site_pv', 'yesterday_site_pv', 'month_site_pv', 'total_site_pv']
|
||||||
|
for (let i in valIds) {
|
||||||
|
let pv = NexT.utils.numberFormat(laWidget[valIds[i]].innerText);
|
||||||
|
document.getElementById(domIds[i]).innerText = pv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 800);
|
||||||
|
},
|
||||||
|
|
||||||
|
fmtBusuanzi: function () {
|
||||||
|
setTimeout(function () {
|
||||||
|
const bszUV = document.getElementById('busuanzi_value_site_uv');
|
||||||
|
if (bszUV) {
|
||||||
|
bszUV.innerText = NexT.utils.numberFormat(bszUV.innerText);
|
||||||
|
}
|
||||||
|
const bszPV = document.getElementById('busuanzi_value_site_pv');
|
||||||
|
if (bszPV) {
|
||||||
|
bszPV.innerText = NexT.utils.numberFormat(bszPV.innerText);
|
||||||
|
}
|
||||||
|
}, 800);
|
||||||
|
},
|
||||||
|
|
||||||
|
numberFormat: function (number) {
|
||||||
|
let result;
|
||||||
|
if (number.indexOf(',') > 0) {
|
||||||
|
number = number.replaceAll(",", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (number > 10000) {
|
||||||
|
result = (number / 10000.0).toFixed(2) + ' w';
|
||||||
|
} else if (number > 1000) {
|
||||||
|
result = (number / 1000.0).toFixed(2) + ' k';
|
||||||
|
} else {
|
||||||
|
result = number;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
|
diffDate: function (date, mode = 0) {
|
||||||
|
const dateNow = new Date();
|
||||||
|
const datePost = new Date(date);
|
||||||
|
const dateDiff = dateNow.getTime() - datePost.getTime();
|
||||||
|
const minute = 1000 * 60;
|
||||||
|
const hour = minute * 60;
|
||||||
|
const day = hour * 24;
|
||||||
|
const month = day * 30;
|
||||||
|
const year = month * 12;
|
||||||
|
|
||||||
|
let result;
|
||||||
|
if (mode == 1) {
|
||||||
|
const monthCount = dateDiff / month;
|
||||||
|
const dayCount = dateDiff / day;
|
||||||
|
const hourCount = dateDiff / hour;
|
||||||
|
const minuteCount = dateDiff / minute;
|
||||||
|
|
||||||
|
if (monthCount > 12) {
|
||||||
|
result = datePost.toLocaleDateString().replace(/\//g, '-');
|
||||||
|
} else if (monthCount >= 1) {
|
||||||
|
result = parseInt(monthCount) + NexT.CONFIG.i18n.ds_month;
|
||||||
|
} else if (dayCount >= 1) {
|
||||||
|
result = parseInt(dayCount) + NexT.CONFIG.i18n.ds_day;
|
||||||
|
} else if (hourCount >= 1) {
|
||||||
|
result = parseInt(hourCount) + NexT.CONFIG.i18n.ds_hour;
|
||||||
|
} else if (minuteCount >= 1) {
|
||||||
|
result = parseInt(minuteCount) + NexT.CONFIG.i18n.ds_min;
|
||||||
|
} else {
|
||||||
|
result = NexT.CONFIG.i18n.ds_just;
|
||||||
|
}
|
||||||
|
} else if (mode == 2) {
|
||||||
|
const yearCount = parseInt(dateDiff / year);
|
||||||
|
if (yearCount >= 1) {
|
||||||
|
const dayCount = parseInt((dateDiff - (yearCount * year)) / day);
|
||||||
|
result = yearCount + NexT.CONFIG.i18n.ds_years + dayCount + NexT.CONFIG.i18n.ds_days;
|
||||||
|
} else {
|
||||||
|
const dayCount = parseInt(dateDiff / day);
|
||||||
|
result = dayCount + NexT.CONFIG.i18n.ds_days;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result = parseInt(dateDiff / day);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
|
checkDOMExist: function (selector) {
|
||||||
return document.querySelector(selector) != null;
|
return document.querySelector(selector) != null;
|
||||||
},
|
},
|
||||||
|
|
||||||
getCDNResource: function(res) {
|
getCDNResource: function (res) {
|
||||||
let { plugins, router } = NexT.CONFIG.vendor;
|
|
||||||
let { name, version, file, alias } = res;
|
let router = NexT.CONFIG.vendor.router;
|
||||||
|
let { name, version, file, alias, alias_name } = res;
|
||||||
|
|
||||||
let npm_name = name;
|
|
||||||
let res_src = '';
|
let res_src = '';
|
||||||
switch(plugins) {
|
|
||||||
case 'cdnjs':
|
switch (router.type) {
|
||||||
let cdnjs_name = alias || name;
|
case "modern":
|
||||||
let cdnjs_file = file.replace(/\.js$/, '.min.js').replace(/^(dist|lib|source\/js|)\/(browser\/|)/, '');
|
if (alias_name) name = alias_name;
|
||||||
res_src = `${router}/${cdnjs_name}/${version}/${cdnjs_file}`
|
let alias_file = file.replace(/^(dist|lib|source|\/js|)\/(browser\/|)/, '');
|
||||||
|
if (alias_file.indexOf('min') == -1) {
|
||||||
|
alias_file = alias_file.replace(/\.js$/, '.min.js');
|
||||||
|
}
|
||||||
|
res_src = `${router.url}/${name}/${version}/${alias_file}`;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
res_src = `${router}/${npm_name}@${version}/${file}`
|
if (alias) name = alias;
|
||||||
|
res_src = `${router.url}/${name}@${version}/${file}`;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return res_src;
|
return res_src;
|
||||||
},
|
},
|
||||||
|
|
||||||
replacePostCRLink: function() {
|
|
||||||
if (NexT.CONFIG.hostname.startsWith('http')) return;
|
|
||||||
// Try to support mutli domain without base URL sets.
|
|
||||||
let href = window.location.href;
|
|
||||||
if (href.indexOf('#')>-1){
|
|
||||||
href = href.split('#')[0];
|
|
||||||
}
|
|
||||||
let postLink = document.getElementById('post-cr-link');
|
|
||||||
if (!postLink) return;
|
|
||||||
postLink.text = href;
|
|
||||||
postLink.href = href;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* One-click copy code support.
|
* One-click copy code support.
|
||||||
*/
|
*/
|
||||||
registerCopyCode: function() {
|
registerCopyCode: function () {
|
||||||
if (!NexT.CONFIG.copybtn) return;
|
if (!NexT.CONFIG.copybtn) return;
|
||||||
|
|
||||||
let figure = document.querySelectorAll('.highlight pre');
|
/** let figure = document.querySelectorAll('.highlight pre');
|
||||||
if (figure.length === 0 || !NexT.CONFIG.copybtn) return;
|
if (figure.length === 0 || !NexT.CONFIG.copybtn) return;
|
||||||
figure.forEach(element => {
|
figure.forEach(element => {
|
||||||
let cn = element.querySelector('code').className;
|
let cn = element.querySelector('code').className;
|
||||||
// TODO seems hard code need find other ways fixed it.
|
if (cn === '') return;
|
||||||
if (cn == '') return;
|
element.children[0].insertAdjacentHTML('beforebegin', '<div class="copy-btn" data-clipboard-snippe><i class="fa fa-copy fa-fw"></i></div>');
|
||||||
element.insertAdjacentHTML('beforeend', '<div class="copy-btn"><i class="fa fa-copy fa-fw"></i></div>');
|
var clipboard = new ClipboardJS(element.children[0],
|
||||||
|
{
|
||||||
|
text: function(trigger) {
|
||||||
|
return trigger.nextElementSibling.textContent.trim();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
clipboard.on('success', function (e) {
|
||||||
|
e.clearSelection();
|
||||||
|
console.info('Action:', e.action);
|
||||||
|
console.info('Text:', e.text);
|
||||||
|
button.querySelector('i').className = 'fa fa-check-circle fa-fw';
|
||||||
|
});
|
||||||
|
clipboard.on('error', function (e) {
|
||||||
|
console.error('复制失败:', e);
|
||||||
|
button.querySelector('i').className = 'fa fa-times-circle fa-fw';
|
||||||
|
});
|
||||||
const button = element.querySelector('.copy-btn');
|
const button = element.querySelector('.copy-btn');
|
||||||
button.addEventListener('click', () => {
|
element.addEventListener('mouseleave', () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
button.querySelector('i').className = 'fa fa-copy fa-fw';
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
});**/
|
||||||
|
/** figure.forEach(element => {
|
||||||
|
let cn = element.querySelector('code').className;
|
||||||
|
if (cn === '') return;
|
||||||
|
element.insertAdjacentHTML('beforeend', '<div class="copy-btn"><i class="fa fa-copy fa-fw"></i></div>');
|
||||||
|
// element.insertAdjacentHTML('beforeend', '<div class="copy-btn"><i class="fa fa-copy fa-fw"></i></div>');
|
||||||
|
const button = element.querySelector('.copy-btn');
|
||||||
|
button.addEventListener('click', async () => {
|
||||||
const lines = element.querySelector('.code') || element.querySelector('code');
|
const lines = element.querySelector('.code') || element.querySelector('code');
|
||||||
const code = lines.innerText;
|
let code = lines.textContent.trim();
|
||||||
|
console.log('尝试复制代码:', code);
|
||||||
|
|
||||||
if (navigator.clipboard) {
|
if (navigator.clipboard) {
|
||||||
// https://caniuse.com/mdn-api_clipboard_writetext
|
|
||||||
navigator.clipboard.writeText(code).then(() => {
|
navigator.clipboard.writeText(code).then(() => {
|
||||||
|
console.log('复制成功');
|
||||||
button.querySelector('i').className = 'fa fa-check-circle fa-fw';
|
button.querySelector('i').className = 'fa fa-check-circle fa-fw';
|
||||||
}, () => {
|
}).catch((err) => {
|
||||||
|
console.error('复制失败:', err);
|
||||||
button.querySelector('i').className = 'fa fa-times-circle fa-fw';
|
button.querySelector('i').className = 'fa fa-times-circle fa-fw';
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const ta = document.createElement('textarea');
|
const ta = document.createElement('textarea');
|
||||||
ta.style.top = window.scrollY + 'px'; // Prevent page scrolling
|
ta.style.top = window.scrollY + 'px';
|
||||||
ta.style.position = 'absolute';
|
ta.style.position = 'absolute';
|
||||||
ta.style.opacity = '0';
|
ta.style.opacity = '0';
|
||||||
ta.readOnly = true;
|
ta.readOnly = true;
|
||||||
@ -93,23 +364,25 @@ NexT.utils = {
|
|||||||
document.body.append(ta);
|
document.body.append(ta);
|
||||||
ta.select();
|
ta.select();
|
||||||
ta.setSelectionRange(0, code.length);
|
ta.setSelectionRange(0, code.length);
|
||||||
ta.readOnly = false;
|
try {
|
||||||
const result = document.execCommand('copy');
|
const successful = document.execCommand('copy');
|
||||||
button.querySelector('i').className = result ? 'fa fa-check-circle fa-fw' : 'fa fa-times-circle fa-fw';
|
if (!successful) throw new Error('复制命令执行失败');
|
||||||
ta.blur(); // For iOS
|
} catch (err) {
|
||||||
button.blur();
|
console.error('复制失败:', err);
|
||||||
|
}
|
||||||
document.body.removeChild(ta);
|
document.body.removeChild(ta);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
element.addEventListener('mouseleave', () => {
|
element.addEventListener('mouseleave', () => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
button.querySelector('i').className = 'fa fa-copy fa-fw';
|
button.querySelector('i').className = 'fa fa-copy fa-fw';
|
||||||
}, 300);
|
}, 300);
|
||||||
});
|
});
|
||||||
});
|
});**/
|
||||||
},
|
},
|
||||||
|
|
||||||
wrapTableWithBox: function() {
|
wrapTableWithBox: function () {
|
||||||
document.querySelectorAll('table').forEach(element => {
|
document.querySelectorAll('table').forEach(element => {
|
||||||
const box = document.createElement('div');
|
const box = document.createElement('div');
|
||||||
box.className = 'table-container';
|
box.className = 'table-container';
|
||||||
@ -117,7 +390,7 @@ NexT.utils = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
registerVideoIframe: function() {
|
registerVideoIframe: function () {
|
||||||
document.querySelectorAll('iframe').forEach(element => {
|
document.querySelectorAll('iframe').forEach(element => {
|
||||||
const supported = [
|
const supported = [
|
||||||
'www.youtube.com',
|
'www.youtube.com',
|
||||||
@ -139,7 +412,7 @@ NexT.utils = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
registerScrollPercent: function() {
|
registerScrollPercent: function () {
|
||||||
const backToTop = document.querySelector('.back-to-top');
|
const backToTop = document.querySelector('.back-to-top');
|
||||||
const readingProgressBar = document.querySelector('.reading-progress-bar');
|
const readingProgressBar = document.querySelector('.reading-progress-bar');
|
||||||
// For init back to top in sidebar if page was scrolled after page refresh.
|
// For init back to top in sidebar if page was scrolled after page refresh.
|
||||||
@ -148,8 +421,10 @@ NexT.utils = {
|
|||||||
const contentHeight = document.body.scrollHeight - window.innerHeight;
|
const contentHeight = document.body.scrollHeight - window.innerHeight;
|
||||||
const scrollPercent = contentHeight > 0 ? Math.min(100 * window.scrollY / contentHeight, 100) : 0;
|
const scrollPercent = contentHeight > 0 ? Math.min(100 * window.scrollY / contentHeight, 100) : 0;
|
||||||
if (backToTop) {
|
if (backToTop) {
|
||||||
backToTop.classList.toggle('back-to-top-on', Math.round(scrollPercent) >= 5);
|
const scrollPercentRound = Math.round(scrollPercent)
|
||||||
backToTop.querySelector('span').innerText = Math.round(scrollPercent) + '%';
|
const isShow = scrollPercentRound >= 5;
|
||||||
|
backToTop.classList.toggle('back-to-top-on', isShow);
|
||||||
|
backToTop.querySelector('span').innerText = scrollPercentRound + '%';
|
||||||
}
|
}
|
||||||
if (readingProgressBar) {
|
if (readingProgressBar) {
|
||||||
readingProgressBar.style.setProperty('--progress', scrollPercent.toFixed(2) + '%');
|
readingProgressBar.style.setProperty('--progress', scrollPercent.toFixed(2) + '%');
|
||||||
@ -166,21 +441,12 @@ NexT.utils = {
|
|||||||
}
|
}
|
||||||
this.activateNavByIndex(index);
|
this.activateNavByIndex(index);
|
||||||
}, { passive: true });
|
}, { passive: true });
|
||||||
|
|
||||||
backToTop && backToTop.addEventListener('click', () => {
|
|
||||||
window.anime({
|
|
||||||
targets : document.scrollingElement,
|
|
||||||
duration : 500,
|
|
||||||
easing : 'linear',
|
|
||||||
scrollTop: 0
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tabs tag listener (without twitter bootstrap).
|
* Tabs tag listener (without twitter bootstrap).
|
||||||
*/
|
*/
|
||||||
registerTabsTag: function() {
|
registerTabsTag: function () {
|
||||||
// Binding `nav-tabs` & `tab-content` by real time permalink changing.
|
// Binding `nav-tabs` & `tab-content` by real time permalink changing.
|
||||||
document.querySelectorAll('.tabs ul.nav-tabs .tab').forEach(element => {
|
document.querySelectorAll('.tabs ul.nav-tabs .tab').forEach(element => {
|
||||||
element.addEventListener('click', event => {
|
element.addEventListener('click', event => {
|
||||||
@ -195,7 +461,7 @@ NexT.utils = {
|
|||||||
// https://stackoverflow.com/questions/20306204/using-queryselector-with-ids-that-are-numbers
|
// https://stackoverflow.com/questions/20306204/using-queryselector-with-ids-that-are-numbers
|
||||||
const tActive = document.getElementById(element.querySelector('a').getAttribute('href').replace('#', ''));
|
const tActive = document.getElementById(element.querySelector('a').getAttribute('href').replace('#', ''));
|
||||||
[...tActive.parentNode.children].forEach(target => {
|
[...tActive.parentNode.children].forEach(target => {
|
||||||
// Array.prototype.slice.call(tActive.parentNode.children).forEach(target => {
|
// Array.prototype.slice.call(tActive.parentNode.children).forEach(target => {
|
||||||
target.classList.toggle('active', target === tActive);
|
target.classList.toggle('active', target === tActive);
|
||||||
});
|
});
|
||||||
// Trigger event
|
// Trigger event
|
||||||
@ -205,9 +471,9 @@ NexT.utils = {
|
|||||||
if (!NexT.CONFIG.stickytabs) return;
|
if (!NexT.CONFIG.stickytabs) return;
|
||||||
const offset = nav.parentNode.getBoundingClientRect().top + window.scrollY + 10;
|
const offset = nav.parentNode.getBoundingClientRect().top + window.scrollY + 10;
|
||||||
window.anime({
|
window.anime({
|
||||||
targets : document.scrollingElement,
|
targets: document.scrollingElement,
|
||||||
duration : 500,
|
duration: 500,
|
||||||
easing : 'linear',
|
easing: 'linear',
|
||||||
scrollTop: offset
|
scrollTop: offset
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -216,7 +482,7 @@ NexT.utils = {
|
|||||||
window.dispatchEvent(new Event('tabs:register'));
|
window.dispatchEvent(new Event('tabs:register'));
|
||||||
},
|
},
|
||||||
|
|
||||||
registerCanIUseTag: function() {
|
registerCanIUseTag: function () {
|
||||||
// Get responsive height passed from iframe.
|
// Get responsive height passed from iframe.
|
||||||
window.addEventListener('message', ({ data }) => {
|
window.addEventListener('message', ({ data }) => {
|
||||||
if (typeof data === 'string' && data.includes('ciu_embed')) {
|
if (typeof data === 'string' && data.includes('ciu_embed')) {
|
||||||
@ -233,36 +499,78 @@ NexT.utils = {
|
|||||||
const isSubPath = !NexT.CONFIG.root.startsWith(target.pathname) && location.pathname.startsWith(target.pathname);
|
const isSubPath = !NexT.CONFIG.root.startsWith(target.pathname) && location.pathname.startsWith(target.pathname);
|
||||||
target.classList.toggle('menu-item-active', target.hostname === location.hostname && (isSamePath || isSubPath));
|
target.classList.toggle('menu-item-active', target.hostname === location.hostname && (isSamePath || isSubPath));
|
||||||
});
|
});
|
||||||
|
},*/
|
||||||
|
|
||||||
|
registerLangSelect: function() {
|
||||||
|
let selects = document.getElementById('lang-select');
|
||||||
|
if (!selects) return;
|
||||||
|
|
||||||
|
let selected = selects.querySelector('#lang-selected');
|
||||||
|
let selectedVal = selected.querySelectorAll('span');
|
||||||
|
let flagIcon = selectedVal[0];
|
||||||
|
let langName = selectedVal[1];
|
||||||
|
let selectIcon = selected.querySelector('i');
|
||||||
|
|
||||||
|
|
||||||
|
let options = selects.querySelectorAll('#lang-options>div');
|
||||||
|
let optionsDom = options[0].parentNode;
|
||||||
|
options.forEach(option => {
|
||||||
|
option.addEventListener('click', () => {
|
||||||
|
let langCode = option.getAttribute('lang-code');
|
||||||
|
flagIcon.className = 'flag-icon flag-icon-'+langCode;
|
||||||
|
langName.innerHTML = option.getAttribute('lang-name');
|
||||||
|
selectIcon.className = 'fa fa-chevron-down';
|
||||||
|
optionsDom.style.opacity = '0';
|
||||||
|
optionsDom.style.transform = 'translateY(-10px)';
|
||||||
|
|
||||||
|
let url = option.getAttribute('lang-url');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
optionsDom.style.display = 'none';
|
||||||
|
window.location.href = url;
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
selected.addEventListener('mouseenter', function() {
|
||||||
|
selectIcon.className = 'fa fa-chevron-up';
|
||||||
|
optionsDom.style.display = 'block';
|
||||||
|
optionsDom.style.opacity = '1';
|
||||||
|
optionsDom.style.transform = 'translateY(0)';
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
optionsDom.addEventListener('mouseleave', function() {
|
||||||
|
selectIcon.className = 'fa fa-chevron-down';
|
||||||
|
optionsDom.style.opacity = '0';
|
||||||
|
optionsDom.style.transform = 'translateY(-10px)';
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
optionsDom.style.display = 'none';
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
registerLangSelect: function() {
|
registerSidebarTOC: function () {
|
||||||
const selects = document.querySelectorAll('.lang-select');
|
const toc = document.getElementById('TableOfContents');
|
||||||
selects.forEach(sel => {
|
if (!toc.hasChildNodes()) {
|
||||||
sel.value = NexT.CONFIG.page.lang;
|
const tocActive = document.querySelector('.sidebar-inner');
|
||||||
sel.addEventListener('change', () => {
|
tocActive.classList.remove('sidebar-nav-active', 'sidebar-toc-active');
|
||||||
const target = sel.options[sel.selectedIndex];
|
tocActive.classList.add('sidebar-overview-active');
|
||||||
document.querySelectorAll('.lang-select-label span').forEach(span => {
|
}
|
||||||
span.innerText = target.text;
|
this.sections = [...document.querySelectorAll('.post-toc li a')].map(element => {
|
||||||
});
|
|
||||||
// Disable Pjax to force refresh translation of menu item
|
|
||||||
window.location.href = target.dataset.href;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},*/
|
|
||||||
|
|
||||||
registerSidebarTOC: function() {
|
|
||||||
this.sections = [...document.querySelectorAll('.post-toc li a.nav-link')].map(element => {
|
|
||||||
const target = document.getElementById(decodeURI(element.getAttribute('href')).replace('#', ''));
|
const target = document.getElementById(decodeURI(element.getAttribute('href')).replace('#', ''));
|
||||||
// TOC item animation navigate.
|
// TOC item animation navigate.
|
||||||
element.addEventListener('click', event => {
|
element.addEventListener('click', event => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const offset = target.getBoundingClientRect().top + window.scrollY;
|
const offset = target.getBoundingClientRect().top + window.scrollY;
|
||||||
window.anime({
|
window.anime({
|
||||||
targets : document.scrollingElement,
|
targets: document.scrollingElement,
|
||||||
duration : 500,
|
duration: 500,
|
||||||
easing : 'linear',
|
easing: 'linear',
|
||||||
scrollTop: offset,
|
scrollTop: offset,
|
||||||
complete : () => {
|
complete: () => {
|
||||||
history.pushState(null, document.title, element.href);
|
history.pushState(null, document.title, element.href);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -271,7 +579,7 @@ NexT.utils = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
registerPostReward: function() {
|
registerPostReward: function () {
|
||||||
const button = document.querySelector('.reward-container button');
|
const button = document.querySelector('.reward-container button');
|
||||||
if (!button) return;
|
if (!button) return;
|
||||||
button.addEventListener('click', () => {
|
button.addEventListener('click', () => {
|
||||||
@ -279,22 +587,22 @@ NexT.utils = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
initCommontesDispaly: function(){
|
initCommontesDispaly: function () {
|
||||||
const comms = document.querySelectorAll('.comment-wrap > div');
|
const comms = document.querySelectorAll('.comment-wrap > div');
|
||||||
if (comms.length<=1) return;
|
if (comms.length <= 1) return;
|
||||||
comms.forEach(function(item){
|
comms.forEach(function (item) {
|
||||||
var dis = window.getComputedStyle(item, null).display;
|
let dis = window.getComputedStyle(item, null).display;
|
||||||
item.style.display = dis;
|
item.style.display = dis;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
registerCommonSwitch: function() {
|
registerCommonSwitch: function () {
|
||||||
const button = document.querySelector('.comment-switch .switch-btn');
|
const button = document.querySelector('.comment-switch .switch-btn');
|
||||||
if (!button) return;
|
if (!button) return;
|
||||||
const comms = document.querySelectorAll('.comment-wrap > div');
|
const comms = document.querySelectorAll('.comment-wrap > div');
|
||||||
button.addEventListener('click', () => {
|
button.addEventListener('click', () => {
|
||||||
button.classList.toggle('move');
|
button.classList.toggle('move');
|
||||||
comms.forEach(function(item){
|
comms.forEach(function (item) {
|
||||||
if (item.style.display === 'none') {
|
if (item.style.display === 'none') {
|
||||||
item.style.cssText = "display: block; animation: tabshow .8s";
|
item.style.cssText = "display: block; animation: tabshow .8s";
|
||||||
} else {
|
} else {
|
||||||
@ -304,17 +612,13 @@ NexT.utils = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
hideCommontes:function() {
|
hiddeLodingCmp: function (selector) {
|
||||||
document.querySelector('.post-comments').style.display = 'none';
|
|
||||||
},
|
|
||||||
|
|
||||||
hiddeLodingCmp: function(selector) {
|
|
||||||
const loadding = document.querySelector(selector).previousElementSibling;
|
const loadding = document.querySelector(selector).previousElementSibling;
|
||||||
loadding.style.display = 'none';
|
loadding.style.display = 'none';
|
||||||
},
|
},
|
||||||
|
|
||||||
activateNavByIndex: function(index) {
|
activateNavByIndex: function (index) {
|
||||||
const target = document.querySelectorAll('.post-toc li a.nav-link')[index];
|
const target = document.querySelectorAll('.post-toc li a')[index];
|
||||||
if (!target || target.classList.contains('active-current')) return;
|
if (!target || target.classList.contains('active-current')) return;
|
||||||
|
|
||||||
document.querySelectorAll('.post-toc .active').forEach(element => {
|
document.querySelectorAll('.post-toc .active').forEach(element => {
|
||||||
@ -330,14 +634,14 @@ NexT.utils = {
|
|||||||
const tocElement = document.querySelector('.sidebar-panel-container');
|
const tocElement = document.querySelector('.sidebar-panel-container');
|
||||||
if (!tocElement.parentNode.classList.contains('sidebar-toc-active')) return;
|
if (!tocElement.parentNode.classList.contains('sidebar-toc-active')) return;
|
||||||
window.anime({
|
window.anime({
|
||||||
targets : tocElement,
|
targets: tocElement,
|
||||||
duration : 200,
|
duration: 200,
|
||||||
easing : 'linear',
|
easing: 'linear',
|
||||||
scrollTop: tocElement.scrollTop - (tocElement.offsetHeight / 2) + target.getBoundingClientRect().top - tocElement.getBoundingClientRect().top
|
scrollTop: tocElement.scrollTop - (tocElement.offsetHeight / 2) + target.getBoundingClientRect().top - tocElement.getBoundingClientRect().top
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
updateSidebarPosition: function() {
|
updateSidebarPosition: function () {
|
||||||
if (window.innerWidth < 992 || NexT.CONFIG.scheme === 'Pisces' || NexT.CONFIG.scheme === 'Gemini') return;
|
if (window.innerWidth < 992 || NexT.CONFIG.scheme === 'Pisces' || NexT.CONFIG.scheme === 'Gemini') return;
|
||||||
// Expand sidebar on post detail page by default, when post has a toc.
|
// Expand sidebar on post detail page by default, when post has a toc.
|
||||||
const hasTOC = document.querySelector('.post-toc');
|
const hasTOC = document.querySelector('.post-toc');
|
||||||
@ -351,7 +655,7 @@ NexT.utils = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
activateSidebarPanel: function(index) {
|
activateSidebarPanel: function (index) {
|
||||||
const duration = 200;
|
const duration = 200;
|
||||||
const sidebar = document.querySelector('.sidebar-inner');
|
const sidebar = document.querySelector('.sidebar-inner');
|
||||||
const panel = document.querySelector('.sidebar-panel-container');
|
const panel = document.querySelector('.sidebar-panel-container');
|
||||||
@ -361,41 +665,49 @@ NexT.utils = {
|
|||||||
|
|
||||||
window.anime({
|
window.anime({
|
||||||
duration,
|
duration,
|
||||||
targets : panel,
|
targets: panel,
|
||||||
easing : 'linear',
|
easing: 'linear',
|
||||||
opacity : 0,
|
opacity: 0,
|
||||||
translateY: [0, -20],
|
translateY: [0, -20],
|
||||||
complete : () => {
|
complete: () => {
|
||||||
// Prevent adding TOC to Overview if Overview was selected when close & open sidebar.
|
// Prevent adding TOC to Overview if Overview was selected when close & open sidebar.
|
||||||
sidebar.classList.replace(activeClassName[1 - index], activeClassName[index]);
|
sidebar.classList.replace(activeClassName[1 - index], activeClassName[index]);
|
||||||
window.anime({
|
window.anime({
|
||||||
duration,
|
duration,
|
||||||
targets : panel,
|
targets: panel,
|
||||||
easing : 'linear',
|
easing: 'linear',
|
||||||
opacity : [0, 1],
|
opacity: [0, 1],
|
||||||
translateY: [-20, 0]
|
translateY: [-20, 0]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getStyle: function(src, parent) {
|
getStyle: function (src, position = 'after', parent) {
|
||||||
const link = document.createElement('link');
|
const link = document.createElement('link');
|
||||||
link.setAttribute('rel', 'stylesheet');
|
link.setAttribute('rel', 'stylesheet');
|
||||||
link.setAttribute('type', 'text/css');
|
link.setAttribute('type', 'text/css');
|
||||||
link.setAttribute('href', src);
|
link.setAttribute('href', src);
|
||||||
|
|
||||||
(parent || document.head).appendChild(link);
|
const head = (parent || document.head);
|
||||||
|
if (position === 'before') {
|
||||||
|
head.prepend(link);
|
||||||
|
} else {
|
||||||
|
head.append(link);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getScript: function(src, options = {}, legacyCondition) {
|
getScript: function (src, options = {}, legacyCondition) {
|
||||||
if (typeof options === 'function') {
|
if (typeof options === 'function') {
|
||||||
return this.getScript(src, {
|
return this.getScript(src, {
|
||||||
condition: legacyCondition
|
condition: legacyCondition
|
||||||
}).then(options);
|
}).then(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
condition = false,
|
condition = false,
|
||||||
|
module = false,
|
||||||
|
textContent = undefined,
|
||||||
attributes: {
|
attributes: {
|
||||||
id = '',
|
id = '',
|
||||||
async = false,
|
async = false,
|
||||||
@ -406,7 +718,7 @@ NexT.utils = {
|
|||||||
} = {},
|
} = {},
|
||||||
parentNode = null
|
parentNode = null
|
||||||
} = options;
|
} = options;
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (condition) {
|
if (condition) {
|
||||||
resolve();
|
resolve();
|
||||||
@ -415,6 +727,8 @@ NexT.utils = {
|
|||||||
|
|
||||||
if (id) script.id = id;
|
if (id) script.id = id;
|
||||||
if (crossOrigin) script.crossOrigin = crossOrigin;
|
if (crossOrigin) script.crossOrigin = crossOrigin;
|
||||||
|
if (module) script.type = 'module';
|
||||||
|
if (textContent != undefined) script.textContent = textContent;
|
||||||
script.async = async;
|
script.async = async;
|
||||||
script.defer = defer;
|
script.defer = defer;
|
||||||
Object.assign(script.dataset, dataset);
|
Object.assign(script.dataset, dataset);
|
||||||
@ -425,24 +739,27 @@ NexT.utils = {
|
|||||||
script.onload = resolve;
|
script.onload = resolve;
|
||||||
script.onerror = reject;
|
script.onerror = reject;
|
||||||
|
|
||||||
if (typeof src === 'object') {
|
if (src != null && src != undefined) {
|
||||||
const { url, integrity } = src;
|
if (typeof src === 'object') {
|
||||||
script.src = url;
|
const { url, integrity } = src;
|
||||||
if (integrity) {
|
script.src = url;
|
||||||
script.integrity = integrity;
|
if (integrity) {
|
||||||
script.crossOrigin = 'anonymous';
|
script.integrity = integrity;
|
||||||
|
script.crossOrigin = 'anonymous';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
script.src = src;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
script.src = src;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(parentNode || document.head).appendChild(script);
|
(parentNode || document.head).appendChild(script);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
loadComments: function(selector, legacyCallback) {
|
lazyLoadComponent: function (selector, legacyCallback) {
|
||||||
if (legacyCallback) {
|
if (legacyCallback) {
|
||||||
return this.loadComments(selector).then(legacyCallback);
|
return this.lazyLoadComponent(selector).then(legacyCallback);
|
||||||
}
|
}
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const element = document.querySelector(selector);
|
const element = document.querySelector(selector);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
# Hugo NexT theme's custom config
|
# Hugo NexT theme's custom config
|
||||||
#
|
|
||||||
|
|
||||||
version: 4.2.0
|
version: 4.7.2
|
||||||
|
|
||||||
|
domain: hugo-next.eu.org
|
||||||
|
@ -1,31 +1,81 @@
|
|||||||
# CDN 公共资源商列表
|
# CDN 公共资源商列表
|
||||||
# Public CDN vendor list
|
# Public CDN vendor list
|
||||||
vendors:
|
vendors:
|
||||||
cdnjs: "https://cdnjs.cloudflare.com/ajax/libs"
|
- name: cdnjs
|
||||||
unpkg: "https://unpkg.com"
|
home: "https://cdnjs.com"
|
||||||
|
logo: "https://cdnjs.com/_/f7a2ebfb819c118086546e481876aef6.svg"
|
||||||
|
type: "modern"
|
||||||
|
url: "https://cdnjs.cloudflare.com/ajax/libs"
|
||||||
|
|
||||||
|
- name: unpkg
|
||||||
|
home: "https://unpkg.com"
|
||||||
|
logo: "https://unpkg.fly.dev/_client/b870d5fb04d2854d.png"
|
||||||
|
type: "nodejs"
|
||||||
|
url: "https://unpkg.com"
|
||||||
|
|
||||||
|
- name: bootcdn
|
||||||
|
home: "https://www.bootcdn.cn"
|
||||||
|
logo: "https://www.bootcdn.cn/assets/img/logo.png"
|
||||||
|
type: "modern"
|
||||||
|
url: "https://cdn.bootcdn.net/ajax/libs"
|
||||||
|
|
||||||
|
- name: staticfile
|
||||||
|
home: "https://staticfile.net/"
|
||||||
|
logo: "https://www.staticfile.net/images/logo.png"
|
||||||
|
type: "modern"
|
||||||
|
url: "https://cdn.staticfile.net"
|
||||||
|
|
||||||
|
- name: 7ed
|
||||||
|
home: "https://www.7ed.net"
|
||||||
|
logo: "https://github.com/7ednet/homepage/raw/main/_images/logo.svg"
|
||||||
|
type: "modern"
|
||||||
|
url: "https://use.sevencdn.com/ajax/libs"
|
||||||
|
|
||||||
|
- name: zstatic
|
||||||
|
home: "https://www.zstatic.net"
|
||||||
|
logo: "https://www.zstatic.net/logo.png"
|
||||||
|
type: "modern"
|
||||||
|
url: "https://s4.zstatic.net/ajax/libs"
|
||||||
|
|
||||||
|
- name: zeyao
|
||||||
|
home: "https://cdn.jsdmirror.com/"
|
||||||
|
logo: "https://img.cuteapi.com/2023/08/29/Background.png"
|
||||||
|
type: "nodejs"
|
||||||
|
url: "https://cdn.jsdmirror.com/npm"
|
||||||
|
|
||||||
|
- name: jsdelivr
|
||||||
|
home: "https://www.jsdelivr.com/"
|
||||||
|
logo: "https://www.jsdelivr.com/assets/0c183396fdb0079ea31849b02bc5e3429f1740de/img/jsdelivr-horizontal-regular.svg"
|
||||||
|
type: "nodejs"
|
||||||
|
url: "https://cdn.jsdelivr.net/npm"
|
||||||
|
|
||||||
# JavaScript 资源
|
# JavaScript 资源
|
||||||
# JavaScript Resources
|
# JavaScript Resources
|
||||||
js:
|
js:
|
||||||
- name: animejs
|
- name: animejs
|
||||||
version: 3.2.1
|
version: 3.2.2
|
||||||
file: lib/anime.min.js
|
file: lib/anime.min.js
|
||||||
# TODO
|
|
||||||
#- name: mathjax
|
- name: viewerjs
|
||||||
# version: 3.2.0
|
version: 1.11.6
|
||||||
# file: es5/tex-mml-chtml.js
|
file: dist/viewer.min.js
|
||||||
|
|
||||||
# CSS 资源
|
# CSS 资源
|
||||||
# CSS Resources
|
# CSS Resources
|
||||||
css:
|
css:
|
||||||
- name: '@fortawesome/fontawesome-free'
|
- name: font-awesome
|
||||||
version: 6.1.2
|
version: 6.7.2
|
||||||
file: css/all.min.css
|
file: css/all.min.css
|
||||||
alias: font-awesome
|
alias: '@fortawesome/fontawesome-free'
|
||||||
|
|
||||||
- name: animate.css
|
- name: animate.css
|
||||||
version: 3.1.1
|
version: 3.1.1
|
||||||
file: animate.min.css
|
file: animate.min.css
|
||||||
|
|
||||||
|
- name: viewerjs
|
||||||
|
version: 1.11.6
|
||||||
|
file: dist/viewer.min.css
|
||||||
|
|
||||||
# 第三方服务组件资源
|
# 第三方服务组件资源
|
||||||
# 3rd servcies Resource
|
# 3rd servcies Resource
|
||||||
|
|
||||||
@ -33,35 +83,58 @@ css:
|
|||||||
# Site analytics engine
|
# Site analytics engine
|
||||||
analytics:
|
analytics:
|
||||||
la: https://sdk.51.la/js-sdk-pro.min.js
|
la: https://sdk.51.la/js-sdk-pro.min.js
|
||||||
|
laWidget: https://v6-widget.51.la/v6/laId/quote.js?theme=0&col=true&f=12&display=0,0,0,1,0,1,1,1
|
||||||
|
baidu: https://hm.baidu.com/hm.js?
|
||||||
|
google: https://www.googletagmanager.com/gtag/js?id=
|
||||||
|
busuanzi: https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js
|
||||||
|
|
||||||
# 文章分享
|
# 文章分享
|
||||||
# Share
|
# Share
|
||||||
addthis:
|
share:
|
||||||
js: https://s7.addthis.com/js/300/addthis_widget.js
|
sharethis:
|
||||||
|
js: https://platform-api.sharethis.com/js/sharethis.js#property=id&product=inline-share-buttons&source=platform
|
||||||
|
|
||||||
|
addtoany:
|
||||||
|
js: https://static.addtoany.com/menu/page.js
|
||||||
|
|
||||||
# 评论组件
|
# 评论组件
|
||||||
# Comment component
|
# Comment component
|
||||||
waline:
|
waline:
|
||||||
js:
|
js:
|
||||||
name: '@waline/client'
|
name: waline
|
||||||
version: 2.6.1
|
version: 2.15.8
|
||||||
file: dist/waline.js
|
file: dist/waline.js
|
||||||
alias: waline
|
alias: "@waline/client"
|
||||||
|
|
||||||
css:
|
css:
|
||||||
name: '@waline/client'
|
name: waline
|
||||||
version: 2.6.1
|
version: 2.15.8
|
||||||
file: dist/waline.css
|
file: dist/waline.css
|
||||||
alias: waline
|
alias: "@waline/client"
|
||||||
|
|
||||||
|
waline3:
|
||||||
|
js:
|
||||||
|
name: waline
|
||||||
|
version: 3.3.0
|
||||||
|
file: dist/waline.js
|
||||||
|
alias: "@waline/client"
|
||||||
|
|
||||||
|
css:
|
||||||
|
name: waline
|
||||||
|
version: 3.3.0
|
||||||
|
file: dist/waline.min.css
|
||||||
|
alias: "@waline/client"
|
||||||
|
|
||||||
artalk:
|
artalk:
|
||||||
js:
|
js:
|
||||||
name: artalk
|
name: artalk
|
||||||
version: 2.3.4
|
version: 2.6.4
|
||||||
file: dist/Artalk.js
|
file: dist/Artalk.min.js
|
||||||
|
|
||||||
css:
|
css:
|
||||||
name: artalk
|
name: artalk
|
||||||
version: 2.3.4
|
version: 2.6.4
|
||||||
file: dist/Artalk.css
|
file: dist/Artalk.min.css
|
||||||
|
|
||||||
giscus:
|
giscus:
|
||||||
js: https://giscus.app/client.js
|
js: https://giscus.app/client.js
|
||||||
@ -72,13 +145,97 @@ utterances:
|
|||||||
livere:
|
livere:
|
||||||
js: https://cdn-city.livere.com/js/embed.dist.js
|
js: https://cdn-city.livere.com/js/embed.dist.js
|
||||||
|
|
||||||
|
|
||||||
# 全文搜索
|
# 全文搜索
|
||||||
# Full text search
|
# Full text search
|
||||||
algolia:
|
algolia:
|
||||||
name: algoliasearch
|
name: algoliasearch
|
||||||
version: 4.13.0
|
version: 4.24.0
|
||||||
file: dist/algoliasearch-lite.umd.js
|
file: dist/algoliasearch-lite.umd.js
|
||||||
|
|
||||||
instant:
|
instant:
|
||||||
name: instantsearch.js
|
name: instantsearch.js
|
||||||
version: 4.40.5
|
version: 4.73.2
|
||||||
file: dist/instantsearch.production.min.js
|
file: dist/instantsearch.production.min.js
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
# 数学公式渲染
|
||||||
|
mathjax:
|
||||||
|
js:
|
||||||
|
name: mathjax
|
||||||
|
version: 3.2.2
|
||||||
|
file: es5/tex-mml-svg.js
|
||||||
|
|
||||||
|
katex:
|
||||||
|
js:
|
||||||
|
- name: katex
|
||||||
|
alias_name: KaTeX
|
||||||
|
version: 0.16.15
|
||||||
|
file: dist/katex.min.js
|
||||||
|
|
||||||
|
- name: auto-render
|
||||||
|
alias: katex
|
||||||
|
alias_name: KaTeX
|
||||||
|
version: 0.16.15
|
||||||
|
file: dist/contrib/auto-render.min.js
|
||||||
|
|
||||||
|
css:
|
||||||
|
name: katex
|
||||||
|
alias_name: KaTeX
|
||||||
|
version: 0.16.15
|
||||||
|
file: dist/katex.min.css
|
||||||
|
|
||||||
|
# 画图渲染
|
||||||
|
mermaid:
|
||||||
|
js:
|
||||||
|
name: mermaid
|
||||||
|
version: 10.9.1
|
||||||
|
file: dist/mermaid.min.js
|
||||||
|
# 文章访问/评论统计
|
||||||
|
waline:
|
||||||
|
js:
|
||||||
|
- name: pageview
|
||||||
|
alias_name: waline
|
||||||
|
version: 2.15.8
|
||||||
|
file: dist/pageview.js
|
||||||
|
alias: "@waline/client"
|
||||||
|
|
||||||
|
- name: comment
|
||||||
|
alias_name: waline
|
||||||
|
version: 2.15.8
|
||||||
|
file: dist/comment.js
|
||||||
|
alias: "@waline/client"
|
||||||
|
waline3:
|
||||||
|
js:
|
||||||
|
- name: pageview
|
||||||
|
alias_name: waline
|
||||||
|
version: 3.3.0
|
||||||
|
file: dist/pageview.js
|
||||||
|
alias: "@waline/client"
|
||||||
|
|
||||||
|
- name: comment
|
||||||
|
alias_name: waline
|
||||||
|
version: 3.3.0
|
||||||
|
file: dist/comment.js
|
||||||
|
alias: "@waline/client"
|
||||||
|
# 音乐播放器
|
||||||
|
music:
|
||||||
|
js:
|
||||||
|
- name: aplayer
|
||||||
|
version: 1.10.1
|
||||||
|
file: dist/APlayer.min.js
|
||||||
|
|
||||||
|
- name: meting
|
||||||
|
version: 2.0.1
|
||||||
|
file: dist/Meting.min.js
|
||||||
|
|
||||||
|
css:
|
||||||
|
name: aplayer
|
||||||
|
version: 1.10.1
|
||||||
|
file: dist/APlayer.min.css
|
||||||
|
# 复制到剪贴板
|
||||||
|
clipboard:
|
||||||
|
js:
|
||||||
|
name: clipboard
|
||||||
|
version: 2.0.11
|
||||||
|
file: dist/clipboard.min.js
|
File diff suppressed because it is too large
Load Diff
@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
title: "关于 Hugo NexT 组织"
|
|
||||||
description: "Hugo NexT 组织介绍说明。"
|
|
||||||
|
|
||||||
date: 2022-06-09T20:12:52+08:00
|
|
||||||
lastmod: 2022-06-09T20:12:52+08:00
|
|
||||||
|
|
||||||
share: false
|
|
||||||
followme: false
|
|
||||||
nav: false
|
|
||||||
copyright: false
|
|
||||||
url: about.html
|
|
||||||
---
|
|
||||||
|
|
||||||
`Hugo NexT` 组织是由众多喜爱 `NexT` 主题及风格的世界各地友人共同组建而成,为的就是让这个主题继续在 `Hugo` 引擎中也能得到发扬光大,在此也欢迎你的加入!
|
|
||||||
|
|
||||||
# 我们的愿景
|
|
||||||
|
|
||||||
延续 `NexT` 经典的黑白调搭配,保持简单的易用性及强大的功能。
|
|
||||||
|
|
||||||
# 使用反馈
|
|
||||||
|
|
||||||
- 加入 [GitHub Discussions](https://github.com/hugo-next/hugo-theme-next/discussions) 或 [Gitter](https://gitter.im/hugo-next/community) 在线讨论 :beers:
|
|
||||||
- [GitHub Issues](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Bug&template=bug-report.md) 提交错误报告 :bug:
|
|
||||||
- [GitHub Feature](https://github.com/hugo-next/hugo-theme-next/issues/new?labels=Feature+Request&template=feature-request.md) 表新功能的想法 :sparkles:
|
|
||||||
|
|
||||||
> 同时国内用户也可加入 QQ 群交流: 604710815
|
|
@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
date: 2022-07-26T21:46:25+08:00
|
|
||||||
---
|
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
title: "站点示例"
|
|
||||||
type: flinks
|
|
||||||
url: flinks.html
|
|
||||||
---
|
|
||||||
|
|
||||||
如想要交换友情链接,请在评论区留下你的站点信息,格式参考如下:
|
|
||||||
|
|
||||||
{{< note success no-icon >}}
|
|
||||||
|
|
||||||
**名称:** NexT 主题 <br/>
|
|
||||||
**说明:** 保持简单的易用性和强大的功能。 <br/>
|
|
||||||
**站标:** https://hugo-next.eu.org/imgs/hugo_next_avatar.png <br/>
|
|
||||||
**网址:** https://hugo-next.eu.org <br/>
|
|
||||||
|
|
||||||
{{< /note >}}
|
|
@ -1,202 +0,0 @@
|
|||||||
---
|
|
||||||
title: "支持 Emoji 表情"
|
|
||||||
description: "Hugo 和 NexT 中的 Emoji 的用法指南。"
|
|
||||||
keywords: "Hugo,NexT,Emoji"
|
|
||||||
|
|
||||||
date: 2022-06-04T19:46:45+08:00
|
|
||||||
lastmod: 2022-06-04T19:46:45+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- 表情
|
|
||||||
- emoji
|
|
||||||
|
|
||||||
toc: false
|
|
||||||
url: "post/emoji-support.html"
|
|
||||||
---
|
|
||||||
|
|
||||||
Emoji 可以通过多种方式在 Hugo 项目中启用。
|
|
||||||
|
|
||||||
[`emojify`](https://gohugo.io/functions/emojify/) 方法可以直接在模板中调用, 或者使用[行内 Shortcodes](https://gohugo.io/templates/shortcode-templates#inline-shortcodes).
|
|
||||||
|
|
||||||
要全局使用 emoji, 需要在你的[网站配置](https://gohugo.io/getting-started/configuration/)中设置 `enableEmoji` 为 `true`,
|
|
||||||
然后你就可以直接在文章中输入 emoji 的代码。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
它们以**冒号**开头和结尾,并且包含 emoji 的 **代码**:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
去露营啦! {:}tent: 很快就回来.
|
|
||||||
|
|
||||||
真开心! {:}joy:
|
|
||||||
```
|
|
||||||
|
|
||||||
呈现的输出效果如下:
|
|
||||||
|
|
||||||
去露营啦! :tent: 很快就回来。
|
|
||||||
|
|
||||||
真开心! :joy:
|
|
||||||
|
|
||||||
以下**符号清单**是 emoji 代码的非常有用的参考。
|
|
||||||
|
|
||||||
## 表情与情感
|
|
||||||
|
|
||||||
### 笑脸表情
|
|
||||||
|
|
||||||
| 图标 | 代码 | 图标 | 代码 |
|
|
||||||
| :-: | - | :-: | - |
|
|
||||||
| :grinning: | `grinning` | :smiley: | `smiley` |
|
|
||||||
| :smile: | `smile` | :grin: | `grin` |
|
|
||||||
| :laughing: | `laughing` <br /> `satisfied` | :sweat_smile: | `sweat_smile` |
|
|
||||||
| :rofl: | `rofl` | :joy: | `joy` |
|
|
||||||
| :slightly_smiling_face: | `slightly_smiling_face` | :upside_down_face: | `upside_down_face` |
|
|
||||||
| :wink: | `wink` | :blush: | `blush` |
|
|
||||||
| :innocent: | `innocent` | | |
|
|
||||||
|
|
||||||
### 爱意表情
|
|
||||||
|
|
||||||
| 图标 | 代码 | 图标 | 代码 |
|
|
||||||
| :-: | - | :-: | - |
|
|
||||||
| :heart_eyes: | `heart_eyes` | :kissing_heart: | `kissing_heart` |
|
|
||||||
| :kissing: | `kissing` | :relaxed: | `relaxed` |
|
|
||||||
| :kissing_closed_eyes: | `kissing_closed_eyes` | :kissing_smiling_eyes: | `kissing_smiling_eyes` |
|
|
||||||
|
|
||||||
### 吐舌头表情
|
|
||||||
|
|
||||||
| 图标 | 代码 | 图标 | 代码 |
|
|
||||||
| :-: | - | :-: | - |
|
|
||||||
| :yum: | `yum` | :stuck_out_tongue: | `stuck_out_tongue` |
|
|
||||||
| :stuck_out_tongue_winking_eye: | `stuck_out_tongue_winking_eye` | :stuck_out_tongue_closed_eyes: | `stuck_out_tongue_closed_eyes` |
|
|
||||||
| :money_mouth_face: | `money_mouth_face` | | |
|
|
||||||
|
|
||||||
|
|
||||||
### 国家和地区旗帜
|
|
||||||
|
|
||||||
| 图标 | 代码 | 图标 | 代码 |
|
|
||||||
| :-: | - | :-: | - |
|
|
||||||
| :andorra: | `andorra` | :united_arab_emirates: | `united_arab_emirates` |
|
|
||||||
| :afghanistan: | `afghanistan` | :antigua_barbuda: | `antigua_barbuda` |
|
|
||||||
| :anguilla: | `anguilla` | :albania: | `albania` |
|
|
||||||
| :armenia: | `armenia` | :angola: | `angola` |
|
|
||||||
| :antarctica: | `antarctica` | :argentina: | `argentina` |
|
|
||||||
| :american_samoa: | `american_samoa` | :austria: | `austria` |
|
|
||||||
| :australia: | `australia` | :aruba: | `aruba` |
|
|
||||||
| :aland_islands: | `aland_islands` | :azerbaijan: | `azerbaijan` |
|
|
||||||
| :bosnia_herzegovina: | `bosnia_herzegovina` | :barbados: | `barbados` |
|
|
||||||
| :bangladesh: | `bangladesh` | :belgium: | `belgium` |
|
|
||||||
| :burkina_faso: | `burkina_faso` | :bulgaria: | `bulgaria` |
|
|
||||||
| :bahrain: | `bahrain` | :burundi: | `burundi` |
|
|
||||||
| :benin: | `benin` | :st_barthelemy: | `st_barthelemy` |
|
|
||||||
| :bermuda: | `bermuda` | :brunei: | `brunei` |
|
|
||||||
| :bolivia: | `bolivia` | :caribbean_netherlands: | `caribbean_netherlands` |
|
|
||||||
| :brazil: | `brazil` | :bahamas: | `bahamas` |
|
|
||||||
| :bhutan: | `bhutan` | :botswana: | `botswana` |
|
|
||||||
| :belarus: | `belarus` | :belize: | `belize` |
|
|
||||||
| :canada: | `canada` | :cocos_islands: | `cocos_islands` |
|
|
||||||
| :congo_kinshasa: | `congo_kinshasa` | :central_african_republic: | `central_african_republic` |
|
|
||||||
| :congo_brazzaville: | `congo_brazzaville` | :switzerland: | `switzerland` |
|
|
||||||
| :cote_divoire: | `cote_divoire` | :cook_islands: | `cook_islands` |
|
|
||||||
| :chile: | `chile` | :cameroon: | `cameroon` |
|
|
||||||
| :cn: | `cn` | :colombia: | `colombia` |
|
|
||||||
| :costa_rica: | `costa_rica` | :cuba: | `cuba` |
|
|
||||||
| :cape_verde: | `cape_verde` | :curacao: | `curacao` |
|
|
||||||
| :christmas_island: | `christmas_island` | :cyprus: | `cyprus` |
|
|
||||||
| :czech_republic: | `czech_republic` | :de: | `de` |
|
|
||||||
| :djibouti: | `djibouti` | :denmark: | `denmark` |
|
|
||||||
| :dominica: | `dominica` | :dominican_republic: | `dominican_republic` |
|
|
||||||
| :algeria: | `algeria` | :ecuador: | `ecuador` |
|
|
||||||
| :estonia: | `estonia` | :egypt: | `egypt` |
|
|
||||||
| :western_sahara: | `western_sahara` | :eritrea: | `eritrea` |
|
|
||||||
| :es: | `es` | :ethiopia: | `ethiopia` |
|
|
||||||
| :eu: | `eu` <br /> `european_union` | :finland: | `finland` |
|
|
||||||
| :fiji: | `fiji` | :falkland_islands: | `falkland_islands` |
|
|
||||||
| :micronesia: | `micronesia` | :faroe_islands: | `faroe_islands` |
|
|
||||||
| :fr: | `fr` | :gabon: | `gabon` |
|
|
||||||
| :gb: | `gb` <br /> `uk` | :grenada: | `grenada` |
|
|
||||||
| :georgia: | `georgia` | :french_guiana: | `french_guiana` |
|
|
||||||
| :guernsey: | `guernsey` | :ghana: | `ghana` |
|
|
||||||
| :gibraltar: | `gibraltar` | :greenland: | `greenland` |
|
|
||||||
| :gambia: | `gambia` | :guinea: | `guinea` |
|
|
||||||
| :guadeloupe: | `guadeloupe` | :equatorial_guinea: | `equatorial_guinea` |
|
|
||||||
| :greece: | `greece` | :south_georgia_south_sandwich_islands: | `south_georgia_south_sandwich_islands` |
|
|
||||||
| :guatemala: | `guatemala` | :guam: | `guam` |
|
|
||||||
| :guinea_bissau: | `guinea_bissau` | :guyana: | `guyana` |
|
|
||||||
| :hong_kong: | `hong_kong` | :honduras: | `honduras` |
|
|
||||||
| :croatia: | `croatia` | :haiti: | `haiti` |
|
|
||||||
| :hungary: | `hungary` | :canary_islands: | `canary_islands` |
|
|
||||||
| :indonesia: | `indonesia` | :ireland: | `ireland` |
|
|
||||||
| :israel: | `israel` | :isle_of_man: | `isle_of_man` |
|
|
||||||
| :india: | `india` | :british_indian_ocean_territory: | `british_indian_ocean_territory` |
|
|
||||||
| :iraq: | `iraq` | :iran: | `iran` |
|
|
||||||
| :iceland: | `iceland` | :it: | `it` |
|
|
||||||
| :jersey: | `jersey` | :jamaica: | `jamaica` |
|
|
||||||
| :jordan: | `jordan` | :jp: | `jp` |
|
|
||||||
| :kenya: | `kenya` | :kyrgyzstan: | `kyrgyzstan` |
|
|
||||||
| :cambodia: | `cambodia` | :kiribati: | `kiribati` |
|
|
||||||
| :comoros: | `comoros` | :st_kitts_nevis: | `st_kitts_nevis` |
|
|
||||||
| :north_korea: | `north_korea` | :kr: | `kr` |
|
|
||||||
| :kuwait: | `kuwait` | :cayman_islands: | `cayman_islands` |
|
|
||||||
| :kazakhstan: | `kazakhstan` | :laos: | `laos` |
|
|
||||||
| :lebanon: | `lebanon` | :st_lucia: | `st_lucia` |
|
|
||||||
| :liechtenstein: | `liechtenstein` | :sri_lanka: | `sri_lanka` |
|
|
||||||
| :liberia: | `liberia` | :lesotho: | `lesotho` |
|
|
||||||
| :lithuania: | `lithuania` | :luxembourg: | `luxembourg` |
|
|
||||||
| :latvia: | `latvia` | :libya: | `libya` |
|
|
||||||
| :morocco: | `morocco` | :monaco: | `monaco` |
|
|
||||||
| :moldova: | `moldova` | :montenegro: | `montenegro` |
|
|
||||||
| :madagascar: | `madagascar` | :marshall_islands: | `marshall_islands` |
|
|
||||||
| :macedonia: | `macedonia` | :mali: | `mali` |
|
|
||||||
| :myanmar: | `myanmar` | :mongolia: | `mongolia` |
|
|
||||||
| :macau: | `macau` | :northern_mariana_islands: | `northern_mariana_islands` |
|
|
||||||
| :martinique: | `martinique` | :mauritania: | `mauritania` |
|
|
||||||
| :montserrat: | `montserrat` | :malta: | `malta` |
|
|
||||||
| :mauritius: | `mauritius` | :maldives: | `maldives` |
|
|
||||||
| :malawi: | `malawi` | :mexico: | `mexico` |
|
|
||||||
| :malaysia: | `malaysia` | :mozambique: | `mozambique` |
|
|
||||||
| :namibia: | `namibia` | :new_caledonia: | `new_caledonia` |
|
|
||||||
| :niger: | `niger` | :norfolk_island: | `norfolk_island` |
|
|
||||||
| :nigeria: | `nigeria` | :nicaragua: | `nicaragua` |
|
|
||||||
| :netherlands: | `netherlands` | :norway: | `norway` |
|
|
||||||
| :nepal: | `nepal` | :nauru: | `nauru` |
|
|
||||||
| :niue: | `niue` | :new_zealand: | `new_zealand` |
|
|
||||||
| :oman: | `oman` | :panama: | `panama` |
|
|
||||||
| :peru: | `peru` | :french_polynesia: | `french_polynesia` |
|
|
||||||
| :papua_new_guinea: | `papua_new_guinea` | :philippines: | `philippines` |
|
|
||||||
| :pakistan: | `pakistan` | :poland: | `poland` |
|
|
||||||
| :st_pierre_miquelon: | `st_pierre_miquelon` | :pitcairn_islands: | `pitcairn_islands` |
|
|
||||||
| :puerto_rico: | `puerto_rico` | :palestinian_territories: | `palestinian_territories` |
|
|
||||||
| :portugal: | `portugal` | :palau: | `palau` |
|
|
||||||
| :paraguay: | `paraguay` | :qatar: | `qatar` |
|
|
||||||
| :reunion: | `reunion` | :romania: | `romania` |
|
|
||||||
| :serbia: | `serbia` | :ru: | `ru` |
|
|
||||||
| :rwanda: | `rwanda` | :saudi_arabia: | `saudi_arabia` |
|
|
||||||
| :solomon_islands: | `solomon_islands` | :seychelles: | `seychelles` |
|
|
||||||
| :sudan: | `sudan` | :sweden: | `sweden` |
|
|
||||||
| :singapore: | `singapore` | :st_helena: | `st_helena` |
|
|
||||||
| :slovenia: | `slovenia` | :slovakia: | `slovakia` |
|
|
||||||
| :sierra_leone: | `sierra_leone` | :san_marino: | `san_marino` |
|
|
||||||
| :senegal: | `senegal` | :somalia: | `somalia` |
|
|
||||||
| :suriname: | `suriname` | :south_sudan: | `south_sudan` |
|
|
||||||
| :sao_tome_principe: | `sao_tome_principe` | :el_salvador: | `el_salvador` |
|
|
||||||
| :sint_maarten: | `sint_maarten` | :syria: | `syria` |
|
|
||||||
| :swaziland: | `swaziland` | :turks_caicos_islands: | `turks_caicos_islands` |
|
|
||||||
| :chad: | `chad` | :french_southern_territories: | `french_southern_territories` |
|
|
||||||
| :togo: | `togo` | :thailand: | `thailand` |
|
|
||||||
| :tajikistan: | `tajikistan` | :tokelau: | `tokelau` |
|
|
||||||
| :timor_leste: | `timor_leste` | :turkmenistan: | `turkmenistan` |
|
|
||||||
| :tunisia: | `tunisia` | :tonga: | `tonga` |
|
|
||||||
| :tr: | `tr` | :trinidad_tobago: | `trinidad_tobago` |
|
|
||||||
| :tuvalu: | `tuvalu` | :taiwan: | `taiwan` |
|
|
||||||
| :tanzania: | `tanzania` | :ukraine: | `ukraine` |
|
|
||||||
| :uganda: | `uganda` | :us: | `us` |
|
|
||||||
| :uruguay: | `uruguay` | :uzbekistan: | `uzbekistan` |
|
|
||||||
| :vatican_city: | `vatican_city` | :st_vincent_grenadines: | `st_vincent_grenadines` |
|
|
||||||
| :venezuela: | `venezuela` | :british_virgin_islands: | `british_virgin_islands` |
|
|
||||||
| :us_virgin_islands: | `us_virgin_islands` | :vietnam: | `vietnam` |
|
|
||||||
| :vanuatu: | `vanuatu` | :wallis_futuna: | `wallis_futuna` |
|
|
||||||
| :samoa: | `samoa` | :kosovo: | `kosovo` |
|
|
||||||
| :yemen: | `yemen` | :mayotte: | `mayotte` |
|
|
||||||
| :south_africa: | `south_africa` | :zambia: | `zambia` |
|
|
||||||
| :zimbabwe: | `zimbabwe` | | |
|
|
@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
title: "欢迎加入 Hugo NexT 组织!"
|
|
||||||
description: "Hugo NexT 是专门为 Hugo 引擎所打造的主题,保持简单易用和强大的功能!"
|
|
||||||
keywords: "Hugo,NexT,组织"
|
|
||||||
|
|
||||||
date: 2022-06-01T15:59:41+08:00
|
|
||||||
lastmod: 2022-06-01T15:59:41+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- Hugo
|
|
||||||
- NexT
|
|
||||||
|
|
||||||
expand: true
|
|
||||||
extlink: https://gitee.com/hugo-next/hugo-theme-next/
|
|
||||||
#comment:
|
|
||||||
# enable: false
|
|
||||||
#toc: false
|
|
||||||
#url: "external-link.html"
|
|
||||||
weight: 1
|
|
||||||
---
|
|
||||||
|
|
||||||
欢迎来到 `Hugo NexT` 文档站点! 它是从 [Theme NexT](https://theme-next.js.org/) 移植过来的为 [Hugo](https://gohugo.io/)打造的高品质优雅主题,保持简单易用的特性和强大的功能。
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 用户指南
|
|
||||||
|
|
||||||
设置 NexT 主题很容易。只需遵循文档,就可快速创建您的个人网站!
|
|
||||||
|
|
||||||
# 反馈
|
|
||||||
|
|
||||||
- 访问 Awesome NexT 列表,与其他用户分享插件和教程。
|
|
||||||
- 加入我们的 Gitter 聊天。
|
|
||||||
- 在几秒钟内添加或改进翻译。
|
|
||||||
- 在 GitHub Issues 中报告一个 :bug:。
|
|
||||||
- 在 GitHub 上申请一个新特性。
|
|
||||||
- 为最受欢迎的功能请求投票。
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
title: "世界,你好!"
|
|
||||||
description: "快速的描述下有关于 Hugo 建站的基本用法。"
|
|
||||||
|
|
||||||
lastmod: 2022-06-03T16:43:23+08:00
|
|
||||||
date: 2022-06-02T11:52:03+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 博客
|
|
||||||
tags:
|
|
||||||
- Hugo
|
|
||||||
- 开始
|
|
||||||
|
|
||||||
url: post/hello-world.html
|
|
||||||
weight: 2
|
|
||||||
---
|
|
||||||
|
|
||||||
> “使用 `weight` 关键字置顶文章。”
|
|
||||||
|
|
||||||
[Hugo](https://gohugo.io/) 是现今世界上最快的网站建设框架,也是最流行的开源静态站点生成器之一。 凭借其惊人的速度和灵活性,Hugo 让建设网站再次变得有趣起来。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
## 快速开始
|
|
||||||
|
|
||||||
### 发表新文章
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ hugo new hello-world.md
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息:[内容格式](https://gohugo.io/content-management/formats/)
|
|
||||||
|
|
||||||
### 启动服务
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ hugo server
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息:[Hugo 服务命令行](https://gohugo.io/commands/hugo_server/)
|
|
||||||
|
|
||||||
### 生成静态文件
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ hugo
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息:[Hugo 建站](https://gohugo.io/commands/hugo/)
|
|
||||||
|
|
||||||
### 部署到服务器
|
|
||||||
|
|
||||||
```language
|
|
||||||
$ hugo deploy
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息:[Hugo 发布](https://gohugo.io/commands/hugo_deploy/)
|
|
||||||
|
|
||||||
祝你好运,相信你会喜欢上 Hugo 建站的旅程!
|
|
@ -1,209 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Markdown 语法支持"
|
|
||||||
description: "描述下 NexT 主题所支持的各种 markdown 语法及效果展示。"
|
|
||||||
isCJKLanguage: false
|
|
||||||
|
|
||||||
lastmod: 2022-06-03T11:52:18+08:00
|
|
||||||
publishDate: 2022-06-03T11:52:18+08:00
|
|
||||||
|
|
||||||
author: Mainroad
|
|
||||||
originLink: https://mainroad-demo.netlify.app/post/basic-elements/
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- Markdown
|
|
||||||
- 语法
|
|
||||||
|
|
||||||
toc: false
|
|
||||||
draft: false
|
|
||||||
url: post/markdown-syntax.html
|
|
||||||
---
|
|
||||||
|
|
||||||
仅以此篇文章来测试下在 `NexT` 主题中在通过 `Hugo` 引擎来建站时,是否支持 `Markdown` 文件内容中所写的各种语法,并展示下实际的效果。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
## 标题样式
|
|
||||||
|
|
||||||
让我们从所有可能的标题开始,在 HTML 中 `<h1>`-`<h6>`元素分别表示六个不同级别的标题样式,其中 `<h1>` 为最大标题,`<h6>`为最小标题,效果如下:
|
|
||||||
|
|
||||||
# 标题 1
|
|
||||||
## 标题 2
|
|
||||||
### 标题 3
|
|
||||||
#### 标题 4
|
|
||||||
##### 标题 5
|
|
||||||
###### 标题 6
|
|
||||||
|
|
||||||
|
|
||||||
## 段落格式
|
|
||||||
|
|
||||||
根据[ W3C ](https://www.w3.org/)定义的[ HTML5 规范](https://www.w3.org/TR/html5/dom.html#elements),**HTML 文档由元素和文本组成**。每个元素的组成都由一个[开始标记](https://www.w3.org/TR/html5/syntax.html#syntax-start-tags)表示,例如: `<body>` ,和[结束标记](https://www.w3.org/TR/html5/syntax.html#syntax-end-tags)表示,例如: `</body>` 。(*某些开始标记和结束标记在某些情况下可以省略,并由其他标记暗示。*)
|
|
||||||
元素可以具有属性,这些属性控制元素的工作方式。例如:超链接是使用 `a` 元素及其 `href` 属性形成的。
|
|
||||||
|
|
||||||
### Markdown 语法
|
|
||||||
|
|
||||||
```markdown
|
|
||||||

|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
### HTML IMG 标签
|
|
||||||
|
|
||||||
```html
|
|
||||||
<img src="图像地址" width="宽度" height="高度" />
|
|
||||||
```
|
|
||||||
<img src="//lisenhui.gitee.io/imgs/hugo-next/logo/hugo-next-secondary.png" width="150"/>
|
|
||||||
|
|
||||||
### SVG 格式
|
|
||||||
|
|
||||||
```html
|
|
||||||
<svg>xxxxxx</svg>
|
|
||||||
```
|
|
||||||
|
|
||||||
<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
|
|
||||||
|
|
||||||
## 列表类型
|
|
||||||
|
|
||||||
### 有序列表
|
|
||||||
|
|
||||||
1. 第一个元素
|
|
||||||
2. 第二个元素
|
|
||||||
3. 第三个元素
|
|
||||||
|
|
||||||
### 无序列表
|
|
||||||
|
|
||||||
* 列表元素
|
|
||||||
* 另一个元素
|
|
||||||
* 和其它元素
|
|
||||||
|
|
||||||
### 嵌套列表
|
|
||||||
|
|
||||||
借助 HTML 的 `ul` 元素来实现。
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>第一项</li>
|
|
||||||
<li>第二项
|
|
||||||
<ul>
|
|
||||||
<li>第二项第一个子项目</li>
|
|
||||||
<li>第二项第二个子项目
|
|
||||||
<ul>
|
|
||||||
<li>第二项第二分项第一分项</li>
|
|
||||||
<li>第二项第二分项第二分项</li>
|
|
||||||
<li>第二项第二分项第三分项</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>第二项第三个子项目
|
|
||||||
<ol>
|
|
||||||
<li>第二项第三分项第一分项</li>
|
|
||||||
<li>第二项第三分项第二分项</li>
|
|
||||||
<li>第二项第三分项第三分项</li>
|
|
||||||
</ol>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>第三项</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
### 自定义列表
|
|
||||||
|
|
||||||
通过 HTML 的 `dl` 元素还支持自定义列表(表格列表)。
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt>Hugo 目录结构</dt>
|
|
||||||
<dd>assets</dd>
|
|
||||||
<dd>config.toml</dd>
|
|
||||||
<dd>content</dd>
|
|
||||||
<dd>data</dd>
|
|
||||||
<dd>theme</dd>
|
|
||||||
<dd>static</dd>
|
|
||||||
<dt>Hugo 模板</dt>
|
|
||||||
<dd>基础模板</dd>
|
|
||||||
<dd>列表模板</dd>
|
|
||||||
<dd>单页模板</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
## 块引用
|
|
||||||
|
|
||||||
`blockquote` 元素表示从另一个源引用的内容,可以选择引用必须在 `footer` 或 `cite` 元素中,也可以选择使用注释和缩写等行内更改。
|
|
||||||
|
|
||||||
> 引用文本
|
|
||||||
> 这一行也是同样的引用
|
|
||||||
> 同样你也在 `blockquote` 中使用 **Markdown** 语法书写
|
|
||||||
|
|
||||||
带有引文的 `Blockquote` 元素效果。
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
<p>我的目标不是赚大钱,是为了制造好的电脑。当我意识到我可以永远当工程师时,我才创办了这家公司。</p>
|
|
||||||
<footer>— <cite>史蒂夫·沃兹尼亚克</cite></footer>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
根据 Mozilla 的网站记录,<q cite="https://www.mozilla.org/en-US/about/history/details/">Firefox 1.0 于 2004 年发布,并取得了巨大成功。</q>
|
|
||||||
|
|
||||||
## 表格
|
|
||||||
|
|
||||||
表格并不算是 `Markdown` 的核心要素,但 `Hugo` 同样支持它。
|
|
||||||
|
|
||||||
| ID | 创建者 | 模型 | 年份 |
|
|
||||||
| --- | --------- | ------- | ---- |
|
|
||||||
| 1 | Honda | Accord | 2009 |
|
|
||||||
| 2 | Toyota | Camry | 2012 |
|
|
||||||
| 3 | Hyundai | Elantra | 2010 |
|
|
||||||
|
|
||||||
可以使用 : (英文格式冒号)来对表格内容进行对齐。
|
|
||||||
|
|
||||||
| 表格 | 可以是 | 很酷 |
|
|
||||||
|:----- |:-----:| ----:|
|
|
||||||
| 左对齐 | 居中 | 右对齐 |
|
|
||||||
| 左对齐 | 居中 | 右对齐 |
|
|
||||||
| 左对齐 | 居中 | 右对齐 |
|
|
||||||
|
|
||||||
同样也可以在表格中使用 `Markdown` 语法。
|
|
||||||
|
|
||||||
| 表格 | 中 | 使用 | Markdown 语法 |
|
|
||||||
| ------ | --------- | ---------- | ------------- |
|
|
||||||
| *斜体* | **粗体** | ~~中划线~~ | `代码块` |
|
|
||||||
|
|
||||||
## Code
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Example HTML5 Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Test</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
```
|
|
||||||
|
|
||||||
{{< highlight html >}}
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Example HTML5 Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Test</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
{{< /highlight >}}
|
|
||||||
|
|
||||||
## 其它元素: abbr、sub、sup、kbd等等
|
|
||||||
|
|
||||||
<abbr title="Graphics Interchange Format">GIF</abbr> 是位图图像格式。
|
|
||||||
|
|
||||||
H<sub>2</sub>O
|
|
||||||
|
|
||||||
C<sub>6</sub>H<sub>12</sub>O<sub>6</sub>
|
|
||||||
|
|
||||||
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
|
||||||
|
|
||||||
按<kbd>X</kbd>获胜。或按<kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>F</kbd></kbd>显示 FPS 计数器。
|
|
||||||
|
|
||||||
<mark>比特作为信息论中的信息单位,也被称为 shannon </mark>,以信息论领域的创始人 Claude shannon 的名字命名。
|
|
||||||
|
|
||||||
参考:
|
|
||||||
- 来自 **Mainroad** 主题的 [Basic Elements](https://mainroad-demo.netlify.app/post/basic-elements/) 内容
|
|
@ -1,86 +0,0 @@
|
|||||||
---
|
|
||||||
title: "自定义短语示例"
|
|
||||||
description: "将常用的块引用、标签卡、按钮等信息设置成短代码,便于快速引用"
|
|
||||||
keywords: "shortcode,短代码"
|
|
||||||
|
|
||||||
date: 2022-08-06T14:41:50+08:00
|
|
||||||
lastmod: 2022-08-06T14:41:50+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- 短代码
|
|
||||||
- 语法
|
|
||||||
url: "post/shortcodes.html"
|
|
||||||
---
|
|
||||||
|
|
||||||
虽然 `Markdown` 语法已经非常丰富能够满足我们写文章的绝大部分需求,但是为更好的对文章内容进行更友好的排版,为引设计一套自定义的短语,便于在使用时能够快速引用。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
# 块引用
|
|
||||||
|
|
||||||
在引用一些经典名言名句时,可以采用此短语,语法参考如下:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
{{</* quote */>}}
|
|
||||||
### block quote
|
|
||||||
写下你想表达的话语!
|
|
||||||
{{</* /quote */>}}
|
|
||||||
```
|
|
||||||
|
|
||||||
实际效果:
|
|
||||||
|
|
||||||
{{< quote >}}
|
|
||||||
|
|
||||||
希望是无所谓有,无所谓无的,这正如地上的路。
|
|
||||||
|
|
||||||
|
|
||||||
其实地上本没有路,走的人多了,也便成了路。
|
|
||||||
|
|
||||||
**鲁迅**
|
|
||||||
|
|
||||||
{{< /quote >}}
|
|
||||||
|
|
||||||
# 信息块
|
|
||||||
|
|
||||||
支持 `default`,`info`,`success`,`warning`,`danger` 等五种不同效果的展示,语法参考如下:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
{{</* note [class] [no-icon] */>}}
|
|
||||||
书写表达的信息
|
|
||||||
支持 Markdown 语法
|
|
||||||
{{</* /note */>}}
|
|
||||||
```
|
|
||||||
|
|
||||||
实际效果:
|
|
||||||
|
|
||||||
{{< note default no-icon >}}
|
|
||||||
### Default Header without icon
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
{{< note default >}}
|
|
||||||
### Default Header
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
{{< note info >}}
|
|
||||||
### Info Header
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
{{< note success >}}
|
|
||||||
### Success Header
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
{{< note warning >}}
|
|
||||||
### Warning Header
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
{{< note danger >}}
|
|
||||||
### Danger Header
|
|
||||||
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
|
|
||||||
{{< /note >}}
|
|
@ -1,146 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Hugo 内置的 Chroma 语法高亮"
|
|
||||||
description: "描述下 Chroma 所支持的各种语法及高亮效果展示"
|
|
||||||
keywords: "Chroma,语法,高亮"
|
|
||||||
|
|
||||||
date: 2022-06-07T19:09:52+08:00
|
|
||||||
lastmod: 2022-06-07T19:09:52+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- 语法
|
|
||||||
- 高亮
|
|
||||||
- Chroma
|
|
||||||
|
|
||||||
url: post/syntax-highlighting.html
|
|
||||||
---
|
|
||||||
|
|
||||||
Hugo 通过 Chroma 提供非常快速的语法高亮显示,现 Hugo 中使用 Chroma 作为代码块高亮支持,它内置在 Go 语言当中,速度是真的非常、非常快,而且最为重要的是它也兼容之前我们使用的 Pygments 方式。
|
|
||||||
|
|
||||||
以下通过 Hugo 内置短代码 `highlight` 和 `Markdown` 代码块方式分别验证不同语言的代码块渲染效果并能正确高亮显示,有关优化语法突出显示的更多信息,请参阅 [Hugo 文档](https://gohugo.io/getting-started/configuration-markup#highlight)。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
# 编程语言
|
|
||||||
|
|
||||||
## GO
|
|
||||||
|
|
||||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
|
||||||
|
|
||||||
func GetTitleFunc(style string) func(s string) string {
|
|
||||||
switch strings.ToLower(style) {
|
|
||||||
case "go":
|
|
||||||
return strings.Title
|
|
||||||
case "chicago":
|
|
||||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
|
||||||
default:
|
|
||||||
return transform.NewTitleConverter(transform.APStyle)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{{< / highlight >}}
|
|
||||||
|
|
||||||
## Java
|
|
||||||
|
|
||||||
```java
|
|
||||||
import javax.swing.JFrame; //Importing class JFrame
|
|
||||||
import javax.swing.JLabel; //Importing class JLabel
|
|
||||||
public class HelloWorld {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
JFrame frame = new JFrame(); //Creating frame
|
|
||||||
frame.setTitle("Hi!"); //Setting title frame
|
|
||||||
frame.add(new JLabel("Hello, world!"));//Adding text to frame
|
|
||||||
frame.pack(); //Setting size to smallest
|
|
||||||
frame.setLocationRelativeTo(null); //Centering frame
|
|
||||||
frame.setVisible(true); //Showing frame
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Python
|
|
||||||
|
|
||||||
``` python
|
|
||||||
print "Hello, world!"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Git 对比
|
|
||||||
|
|
||||||
``` diff {hl_lines=[4,"6-7"], linenos=true}
|
|
||||||
*** /path/to/original ''timestamp''
|
|
||||||
--- /path/to/new ''timestamp''
|
|
||||||
***************
|
|
||||||
*** 1 ****
|
|
||||||
! This is a line.
|
|
||||||
--- 1 ---
|
|
||||||
! This is a replacement line.
|
|
||||||
It is important to spell
|
|
||||||
-removed line
|
|
||||||
+new line
|
|
||||||
```
|
|
||||||
|
|
||||||
```diff {hl_lines=[4,"6-7"], linenos=false}
|
|
||||||
*** /path/to/original ''timestamp''
|
|
||||||
--- /path/to/new ''timestamp''
|
|
||||||
***************
|
|
||||||
*** 1 ****
|
|
||||||
! This is a line.
|
|
||||||
--- 1 ---
|
|
||||||
! This is a replacement line.
|
|
||||||
It is important to spell
|
|
||||||
-removed line
|
|
||||||
+new line
|
|
||||||
```
|
|
||||||
|
|
||||||
# 文件
|
|
||||||
|
|
||||||
## Make 文件
|
|
||||||
|
|
||||||
``` makefile {linenos=false}
|
|
||||||
CC=gcc
|
|
||||||
CFLAGS=-I.
|
|
||||||
|
|
||||||
hellomake: hellomake.o hellofunc.o
|
|
||||||
$(CC) -o hellomake hellomake.o hellofunc.o -I.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Markdown 文档
|
|
||||||
|
|
||||||
``` markdown
|
|
||||||
**bold**
|
|
||||||
*italics*
|
|
||||||
[link](www.example.com)
|
|
||||||
```
|
|
||||||
|
|
||||||
# 数据内容
|
|
||||||
|
|
||||||
## JSON 数据
|
|
||||||
|
|
||||||
``` json
|
|
||||||
{"employees":[
|
|
||||||
{"firstName":"John", "lastName":"Doe"},
|
|
||||||
]}
|
|
||||||
```
|
|
||||||
|
|
||||||
## XML 内容
|
|
||||||
|
|
||||||
``` xml
|
|
||||||
<employees>
|
|
||||||
<employee>
|
|
||||||
<firstName>John</firstName> <lastName>Doe</lastName>
|
|
||||||
</employee>
|
|
||||||
</employees>
|
|
||||||
```
|
|
||||||
|
|
||||||
## SQL 查询
|
|
||||||
|
|
||||||
{{< highlight sql >}}
|
|
||||||
|
|
||||||
SELECT column_name,column_name
|
|
||||||
FROM
|
|
||||||
Table
|
|
||||||
WHERE column_name = "condition"
|
|
||||||
{{< / highlight >}}
|
|
||||||
|
|
||||||
|
|
||||||
除以上列举的代码高亮显示外,还支持诸如:C 语言、C++、HTML、CSS、Shell脚本等各主流的代码语言高亮显示,可自行测试效果。
|
|
@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
title: "文章目录导航"
|
|
||||||
description: "描述下 NexT 主题下的文章目录导航效果。"
|
|
||||||
keywords: "文章,目录,导航"
|
|
||||||
|
|
||||||
date: 2022-06-08T21:12:52+08:00
|
|
||||||
lastmod: 2022-06-08T21:12:52+08:00
|
|
||||||
|
|
||||||
categories:
|
|
||||||
- 示例
|
|
||||||
tags:
|
|
||||||
- 目录
|
|
||||||
- 导航
|
|
||||||
- 博客
|
|
||||||
|
|
||||||
toc: true
|
|
||||||
url: post/table-of-content.html
|
|
||||||
---
|
|
||||||
|
|
||||||
巴顿将军说过:“衡量一个人是否成功,不是看他站到顶峰,而是从顶峰跌落之后的反弹力”,褚时健的人生便是如此,中年发家致富,名利双收,之后又跌落到谷底,等到74岁再创业,10年后带着褚橙归来,东山再起收获亿万财富,他的发展轨迹就是反弹的过程。
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# 早年的故事
|
|
||||||
|
|
||||||
## 起始
|
|
||||||
|
|
||||||
2014年的春天,在云南省华宁县和宜良县的交界处,一座名叫矣则的小山村里,一处已经有上百年历史的古旧四合院宅子被拆掉。村委会正带领村民们进行“美丽乡村”的建设,一年以后,旧有村居将再也看不到,代之而起的是钢筋混凝土的新式民居。就像10年、20年前中国大小城市的改造一样,这个群山围绕的小村子也开始陷入“工地模式”。
|
|
||||||
|
|
||||||
### 童年浪花
|
|
||||||
|
|
||||||
在江河边长大的孩子几乎都有一个当仁不让的特长:善水。褚时健也不例外,他不仅从小就在南盘江和花鱼塘里扑腾出了上佳的游泳技术,五六岁已经可以一个猛子扎出老远,而且从七八岁就可以在南盘江和河滩上的鱼塘里捉鱼了。
|
|
||||||
|
|
||||||
## 少年故事
|
|
||||||
|
|
||||||
褚时健在乡村自由自在生活的十多年,其实正是中国社会风雨飘摇的十多年。特别是1937年卢沟桥事变后,日本人发动全面侵华战争,短短两三年间,中国的大部分国土相继沦陷
|
|
||||||
|
|
||||||
# 激情的青春十年
|
|
||||||
|
|
||||||
## 当上了游击队员
|
|
||||||
|
|
||||||
1948年夏天,褚时健回乡,在禄丰车站小学做了一名老师,同时也和褚时仁、褚时杰一起继续保持与共产党组织的联系,做一些传递情报的工作
|
|
||||||
|
|
||||||
### 战火纷飞
|
|
||||||
|
|
||||||
因为战斗力相较悬殊,所以游击队只能是靠打一枪换一个地方的办法,专找敌人薄弱的地方攻击,但更多时候,都是在防御和转移阵地。
|
|
||||||
|
|
||||||
# 生活的断层
|
|
||||||
|
|
||||||
## 跌入生活底层
|
|
||||||
|
|
||||||
“反右”运动中被打倒的人在“右派”身份确定后,只有一条路可走:下放到农场。农场名副其实,就是干农活儿的地方,必须过和农民一样的生活。
|
|
||||||
|
|
||||||
# 尾声
|
|
||||||
|
|
||||||
## 岁月像一条河
|
|
||||||
|
|
||||||
2015年,是褚时健和马静芬结婚60周年,被称为“钻石婚”的纪念年份。这简直是一份人生的奖赏,在中国离婚率愈益升高的当下,60年的婚姻,几乎就像一个前世之梦。一个甲子的相伴相随,褚时健和马静芬共同经历了国家和个人的各种风浪,共同面对过生死。他们两人已经不仅是夫妻,更是一对战友。尽管马静芬偶尔会对褚时健年轻时候的粗心抱怨上两句,但说到最后,她会说一句:“没有我就没有他,没有他也就没有我。”
|
|
@ -1,29 +0,0 @@
|
|||||||
# 友情链接
|
|
||||||
# Friend's links
|
|
||||||
|
|
||||||
- FLinksTitle: 官方示例
|
|
||||||
FLinksDesc: 来自主题官方的示例内容。
|
|
||||||
FLinksList:
|
|
||||||
- name: Hugo
|
|
||||||
desc: 世界上最快的网站建设框架!
|
|
||||||
avatar: https://gohugo.io/favicon-32x32.png
|
|
||||||
link: https://gohugo.io
|
|
||||||
|
|
||||||
- name: Hugo-NexT
|
|
||||||
desc: Hugo NexT 官方预览网站。
|
|
||||||
avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png
|
|
||||||
link: https://hugo-next.eu.org
|
|
||||||
|
|
||||||
- name: 凡梦星尘空间站
|
|
||||||
desc: 再平凡的人也有属于他的梦想!
|
|
||||||
avatar: https://lisenhui.cn/img/avatar.png
|
|
||||||
link: https://lisenhui.cn
|
|
||||||
|
|
||||||
|
|
||||||
- FLinksTitle: Hugo NexT 粉丝群体
|
|
||||||
FLinksDesc: 来自 Hugo NexT 主题爱好者们的精彩呈现!
|
|
||||||
FLinksList:
|
|
||||||
- name: 阿哈吉
|
|
||||||
desc: 全网首个 Hugo NexT 忠实粉丝用户
|
|
||||||
avatar: https://a.happy2008.top/imgs/stayhome-small.png
|
|
||||||
link: https://a.happy2008.top/
|
|
@ -1,23 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 本地快速启动脚本
|
|
||||||
# Quick start in local.
|
|
||||||
|
|
||||||
next() {
|
|
||||||
cat << EOT
|
|
||||||
========================================
|
|
||||||
███╗ ██╗███████╗██╗ ██╗████████╗
|
|
||||||
████╗ ██║██╔════╝╚██╗██╔╝╚══██╔══╝
|
|
||||||
██╔██╗ ██║█████╗ ╚███╔╝ ██║
|
|
||||||
██║╚██╗██║██╔══╝ ██╔██╗ ██║
|
|
||||||
██║ ╚████║███████╗██╔╝ ██╗ ██║
|
|
||||||
╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝
|
|
||||||
========================================
|
|
||||||
Hugo NexT version $1
|
|
||||||
Documentation: https://hugo-next.eu.org
|
|
||||||
========================================
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
next `cat ../VERSION`
|
|
||||||
|
|
||||||
hugo server -t ../.. --port 1414 --panicOnWarning --config config.yaml
|
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 14 KiB |
1
hugo-theme-next.go
Normal file
1
hugo-theme-next.go
Normal file
@ -0,0 +1 @@
|
|||||||
|
package hugothemenext
|
151
i18n/en-us.yaml
Normal file
151
i18n/en-us.yaml
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
#--------------------------------------
|
||||||
|
# English Version
|
||||||
|
#--------------------------------------
|
||||||
|
archives:
|
||||||
|
other: Posts
|
||||||
|
tag:
|
||||||
|
other: Tag
|
||||||
|
tags:
|
||||||
|
other: Tags
|
||||||
|
TagTitle:
|
||||||
|
other: Tag Collection
|
||||||
|
category:
|
||||||
|
other: Category
|
||||||
|
categories:
|
||||||
|
other: Categories
|
||||||
|
CateTitle:
|
||||||
|
other: Classification Items
|
||||||
|
AllSome:
|
||||||
|
other: "All {{ .Some }}"
|
||||||
|
|
||||||
|
|
||||||
|
Symbol:
|
||||||
|
colon: ":"
|
||||||
|
comma: ","
|
||||||
|
period: "."
|
||||||
|
|
||||||
|
Sidebar:
|
||||||
|
label:
|
||||||
|
posts: Posts
|
||||||
|
categories: Categories
|
||||||
|
tags: Tags
|
||||||
|
rss: RSS
|
||||||
|
ccommons: "Creative Commons"
|
||||||
|
toc: TOC
|
||||||
|
overview: Overview
|
||||||
|
navToggle: "Toggle Navigation Bar"
|
||||||
|
search: Search
|
||||||
|
|
||||||
|
Terms:
|
||||||
|
archives: "{{ .Count }} posts in total"
|
||||||
|
categories: "{{ .Count }} categories in total"
|
||||||
|
tags: "{{ .Count }} tags in total"
|
||||||
|
|
||||||
|
PostArchive:
|
||||||
|
cheers:
|
||||||
|
um: Um...
|
||||||
|
ok: Ok
|
||||||
|
nice: Nice
|
||||||
|
good: Good
|
||||||
|
great: Greate
|
||||||
|
excellent: Excellent
|
||||||
|
keepOn: Keep on posting.╰(*°▽°*)╯
|
||||||
|
|
||||||
|
PostMeta:
|
||||||
|
sticky: Stickys
|
||||||
|
publish:
|
||||||
|
date: "Publish on"
|
||||||
|
time: "Create Time"
|
||||||
|
lastmod:
|
||||||
|
date: "Update on"
|
||||||
|
time: "Modify Time"
|
||||||
|
category: "Classify at"
|
||||||
|
words:
|
||||||
|
title: Words
|
||||||
|
count: "{{- .WordCount -}}"
|
||||||
|
reading:
|
||||||
|
title: Read
|
||||||
|
time: "{{- .ReadingTime -}}mins"
|
||||||
|
views: Views
|
||||||
|
comments: Comments
|
||||||
|
tags: Tags
|
||||||
|
more: "Read More"
|
||||||
|
edit: "Edit this post"
|
||||||
|
expired:
|
||||||
|
title: "Note"
|
||||||
|
info: "🕰️ Hey,This article is an aged wine of over # the information may need updating, please check the best before date before reading."
|
||||||
|
warn: "🚀 Heads up! This article is from # ago and might not keep up with the pace of time. Bring your own time machine for reading, watch out for the time travel!"
|
||||||
|
summary:
|
||||||
|
title: Summary
|
||||||
|
|
||||||
|
PostAlert:
|
||||||
|
info : "Info"
|
||||||
|
note : "Note"
|
||||||
|
help : "Help"
|
||||||
|
error : "Error"
|
||||||
|
warning : "Warning"
|
||||||
|
success : "Success"
|
||||||
|
important: "Important"
|
||||||
|
|
||||||
|
PostCopyRight:
|
||||||
|
title: Post Title
|
||||||
|
author: Post Author
|
||||||
|
link: Post Link
|
||||||
|
origin:
|
||||||
|
author: Written By
|
||||||
|
link: Originally From
|
||||||
|
license:
|
||||||
|
title: Copyright Notice
|
||||||
|
content: "All articles in this blog are licensed under <i class=\"fab fa-fw fa-creative-commons\"></i>%s unless stating additionally."
|
||||||
|
|
||||||
|
PostFollowMe:
|
||||||
|
other: Welcome to my other publishing channels
|
||||||
|
|
||||||
|
PostComments:
|
||||||
|
title: Comments
|
||||||
|
|
||||||
|
Reward:
|
||||||
|
title: Donate
|
||||||
|
wechatpay: WechatPay
|
||||||
|
alipay: Alipay
|
||||||
|
paypal: Paypal
|
||||||
|
bitcoin: Bitcoin
|
||||||
|
|
||||||
|
SiteInfoItems:
|
||||||
|
title: "Web Status"
|
||||||
|
runTimes: "Running:"
|
||||||
|
words: "Words:"
|
||||||
|
readTimes: "ReadTime:"
|
||||||
|
visitors: "Visitors:"
|
||||||
|
pageViews: "Views:"
|
||||||
|
todayViews: "Today Views:"
|
||||||
|
yesterdayViews: "Yesterday Views:"
|
||||||
|
monthViews: "Month Views:"
|
||||||
|
totalViews: "Total Views"
|
||||||
|
lastUpdate: "Last Update:"
|
||||||
|
|
||||||
|
Footer:
|
||||||
|
powerby: "Power by %s"
|
||||||
|
|
||||||
|
Search:
|
||||||
|
placeholder: Searching...
|
||||||
|
empty: "We didn't find any results for the search: ${query}"
|
||||||
|
hits: "${hits} results found"
|
||||||
|
time: "${hits} results found in ${time} ms"
|
||||||
|
|
||||||
|
DateSuffix:
|
||||||
|
years: " Year "
|
||||||
|
days: " Day "
|
||||||
|
hours: " Hour "
|
||||||
|
mins: " Min"
|
||||||
|
month: " Month Ago"
|
||||||
|
day: " Day Ago"
|
||||||
|
hour: " Hour Ago"
|
||||||
|
min: " Min Ago"
|
||||||
|
just: "Just"
|
||||||
|
|
||||||
|
ToolBtns:
|
||||||
|
comment: "Go to Comment"
|
||||||
|
theme: "Change Theme"
|
||||||
|
lang: "Multilingual translation"
|
||||||
|
backTop: "Back to Top"
|
152
i18n/en.yaml
152
i18n/en.yaml
@ -1,152 +0,0 @@
|
|||||||
#--------------------------------------
|
|
||||||
# English Version
|
|
||||||
#--------------------------------------
|
|
||||||
archives:
|
|
||||||
other: Posts
|
|
||||||
tag:
|
|
||||||
other: Tag
|
|
||||||
tags:
|
|
||||||
other: Tags
|
|
||||||
TagTitle:
|
|
||||||
other: Tag Collection
|
|
||||||
category:
|
|
||||||
other: Category
|
|
||||||
categories:
|
|
||||||
other: Categories
|
|
||||||
CateTitle:
|
|
||||||
other: Classification Items
|
|
||||||
AllSome:
|
|
||||||
other: "All {{ .Some }}"
|
|
||||||
|
|
||||||
NavToggleLabel:
|
|
||||||
other: Toggle navigation bar
|
|
||||||
|
|
||||||
MSearchLabel:
|
|
||||||
other: Search
|
|
||||||
|
|
||||||
SymbolColon:
|
|
||||||
other: ":"
|
|
||||||
SymbolComma:
|
|
||||||
other: ","
|
|
||||||
SymbolPeriod:
|
|
||||||
other: "."
|
|
||||||
|
|
||||||
SbPostsLable:
|
|
||||||
other: "Posts"
|
|
||||||
SbCatesTitle:
|
|
||||||
other: "Categories"
|
|
||||||
SbTagsTitle:
|
|
||||||
other: "Tags"
|
|
||||||
TableOfContents:
|
|
||||||
other: "TOC"
|
|
||||||
SiteOverview:
|
|
||||||
other: "Overview"
|
|
||||||
RSSLable:
|
|
||||||
other: "RSS Subscribe"
|
|
||||||
CCLinkTitle:
|
|
||||||
other: "Creative Commons"
|
|
||||||
BackTopLabel:
|
|
||||||
other: "Top"
|
|
||||||
|
|
||||||
TagsCounterTitle:
|
|
||||||
zero: No tags
|
|
||||||
other: "{{ .Count }} tags in total"
|
|
||||||
CatesCounterTitle:
|
|
||||||
zero: No categories
|
|
||||||
other: "{{ .Count }} categories in total"
|
|
||||||
ArchiveCounterTitle:
|
|
||||||
zero: No posts.
|
|
||||||
other: "{{ .Count }} posts in total"
|
|
||||||
|
|
||||||
PostArchiveCheersUm:
|
|
||||||
other: Um..
|
|
||||||
PostArchiveCheersOk:
|
|
||||||
other: Ok
|
|
||||||
PostArchiveCheersNice:
|
|
||||||
other: Nice
|
|
||||||
PostArchiveCheersGood:
|
|
||||||
other: Good
|
|
||||||
PostArchiveCheersGreat:
|
|
||||||
other: Great
|
|
||||||
PostArchiveCheersExcellent:
|
|
||||||
other: Excellent
|
|
||||||
PostArchiveKeepOn:
|
|
||||||
other: Keep on posting.╰(*°▽°*)╯
|
|
||||||
|
|
||||||
PostStickyTitle:
|
|
||||||
other: Strickys
|
|
||||||
PostPublishDate:
|
|
||||||
other: "Publish on"
|
|
||||||
PostPublishTime:
|
|
||||||
other: "Create Time"
|
|
||||||
PostLastModDate:
|
|
||||||
other: "Update on"
|
|
||||||
PostLastModTime:
|
|
||||||
other: "Modify Time"
|
|
||||||
PostCategory:
|
|
||||||
other: "Classify at"
|
|
||||||
PostWords:
|
|
||||||
other: "Words"
|
|
||||||
PostWordCount:
|
|
||||||
other: "{{- .WordCount -}}"
|
|
||||||
PostReading:
|
|
||||||
other: "Read"
|
|
||||||
PostReadTime:
|
|
||||||
other: "{{- .ReadingTime -}}min"
|
|
||||||
PostViews:
|
|
||||||
other: "Views"
|
|
||||||
PostTag:
|
|
||||||
other: "Tags"
|
|
||||||
PostReadMore:
|
|
||||||
other: "Read More"
|
|
||||||
PostEditTitle:
|
|
||||||
other: Edit this post
|
|
||||||
|
|
||||||
PostCRTitle:
|
|
||||||
other: Post Title
|
|
||||||
PostCRAuthor:
|
|
||||||
other: Post Author
|
|
||||||
PostCRLink:
|
|
||||||
other: Post Link
|
|
||||||
PostCROriginAuthor:
|
|
||||||
other: Written By
|
|
||||||
PostCROriginLink:
|
|
||||||
other: Originally From
|
|
||||||
PostCRLicenseTitle:
|
|
||||||
other: Copyright Notice
|
|
||||||
PostCRLicenseContent:
|
|
||||||
other: "All articles in this blog are licensed under <i class=\"fab fa-fw fa-creative-commons\"></i>%s unless stating additionally."
|
|
||||||
|
|
||||||
PostFollowMe:
|
|
||||||
other: Welcome to my other publishing channels
|
|
||||||
|
|
||||||
RewardDonate:
|
|
||||||
other: Donate
|
|
||||||
RewardWechatpay:
|
|
||||||
other: Wechat Pay
|
|
||||||
RewardAlipay:
|
|
||||||
other: Alipay
|
|
||||||
RewardPaypal:
|
|
||||||
other: PayPal
|
|
||||||
RewardBitcoin:
|
|
||||||
other: Bitcoin
|
|
||||||
|
|
||||||
PostCommentTitle:
|
|
||||||
other: Comments
|
|
||||||
|
|
||||||
VisitorsLabel:
|
|
||||||
other: Total Visitors
|
|
||||||
PageViewsLabel:
|
|
||||||
other: Total Page Views
|
|
||||||
|
|
||||||
FooterPowerby:
|
|
||||||
other: "Power by %s"
|
|
||||||
|
|
||||||
SearchPh:
|
|
||||||
other: Searching...
|
|
||||||
SearchEmpty:
|
|
||||||
other: "We didn't find any results for the search: ${query}"
|
|
||||||
SearchHits:
|
|
||||||
hits: "${hits} results found"
|
|
||||||
SearchHitsTime:
|
|
||||||
other: "${hits} results found in ${time} ms"
|
|
150
i18n/fr-fr.yaml
Normal file
150
i18n/fr-fr.yaml
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
#--------------------------------------
|
||||||
|
# French Version
|
||||||
|
#--------------------------------------
|
||||||
|
archives:
|
||||||
|
other: Billets
|
||||||
|
tag:
|
||||||
|
other: Tag
|
||||||
|
tags:
|
||||||
|
other: Tags
|
||||||
|
TagTitle:
|
||||||
|
other: Liste des Tags
|
||||||
|
category:
|
||||||
|
other: Categorie
|
||||||
|
categories:
|
||||||
|
other: Categories
|
||||||
|
CateTitle:
|
||||||
|
other: Classification des items
|
||||||
|
AllSome:
|
||||||
|
other: "Total :{{ .Some }}"
|
||||||
|
|
||||||
|
Symbol:
|
||||||
|
colon: ":"
|
||||||
|
comma: ","
|
||||||
|
period: "."
|
||||||
|
|
||||||
|
Sidebar:
|
||||||
|
label:
|
||||||
|
posts: Billets
|
||||||
|
categories: Categories
|
||||||
|
tags: Tags
|
||||||
|
rss: RSS
|
||||||
|
ccommons: "Creative Commons"
|
||||||
|
toc: Sommaire
|
||||||
|
overview: "Présentation"
|
||||||
|
navToggle: "Fermer/Ouvrire la bar de navigation"
|
||||||
|
search: Chercher
|
||||||
|
|
||||||
|
Terms:
|
||||||
|
archives: "{{ .Count }} Billets au total"
|
||||||
|
categories: "{{ .Count }} Categories au total"
|
||||||
|
tags: "{{ .Count }} Tags au total"
|
||||||
|
|
||||||
|
PostArchive:
|
||||||
|
cheers:
|
||||||
|
um: Hum...
|
||||||
|
ok: Ok
|
||||||
|
nice: Cool
|
||||||
|
good: Bien
|
||||||
|
great: Génial
|
||||||
|
excellent: Excellent
|
||||||
|
keepOn: Continue de publier.╰(*°▽°*)╯
|
||||||
|
|
||||||
|
PostMeta:
|
||||||
|
sticky: Stickys
|
||||||
|
publish:
|
||||||
|
date: "Publié le "
|
||||||
|
time: "Date de création"
|
||||||
|
lastmod:
|
||||||
|
date: "Mise à jour le "
|
||||||
|
time: "Modifié le "
|
||||||
|
category: "Classé comme "
|
||||||
|
words:
|
||||||
|
title: Nb. Mots
|
||||||
|
count: "{{- .WordCount -}}"
|
||||||
|
reading:
|
||||||
|
title: "Lectures "
|
||||||
|
time: "{{- .ReadingTime -}} mins"
|
||||||
|
views: Vues
|
||||||
|
comments: Commentaires
|
||||||
|
tags: Tags
|
||||||
|
more: "Lire la suite"
|
||||||
|
edit: "Editer ce billet"
|
||||||
|
expired:
|
||||||
|
title: "Astuce bienveillante"
|
||||||
|
info: "🕰️ Hey,This article is an aged wine of over # the information may need updating, please check the best before date before reading."
|
||||||
|
warn: "🚀 Heads up! this article is from # ago and might not keep up with the pace of time. Bring your own time machine for reading, watch out for the time travel!"
|
||||||
|
summary:
|
||||||
|
title: Summary
|
||||||
|
|
||||||
|
PostAlert:
|
||||||
|
info : "Info"
|
||||||
|
note : "Note"
|
||||||
|
help : "Aide"
|
||||||
|
error : "Erreur"
|
||||||
|
warning : "Avertissement"
|
||||||
|
success : "Succès"
|
||||||
|
important: "Inportant"
|
||||||
|
|
||||||
|
PostCopyRight:
|
||||||
|
title: Titre du billet
|
||||||
|
author: Autheur du billet
|
||||||
|
link: Lien du billet
|
||||||
|
origin:
|
||||||
|
author: Écrit par
|
||||||
|
link: Originellement de
|
||||||
|
license:
|
||||||
|
title: Note de Copyright
|
||||||
|
content: "Tous les articles sont sous licence <i class=\"fab fa-fw fa-creative-commons\"></i>%s."
|
||||||
|
|
||||||
|
PostFollowMe:
|
||||||
|
other: "Autres réseaux sociaux"
|
||||||
|
|
||||||
|
PostComments:
|
||||||
|
title: Commentaires
|
||||||
|
|
||||||
|
Reward:
|
||||||
|
title: Donner
|
||||||
|
wechatpay: WechatPay
|
||||||
|
alipay: Alipay
|
||||||
|
paypal: Paypal
|
||||||
|
bitcoin: Bitcoin
|
||||||
|
|
||||||
|
SiteInfoItems:
|
||||||
|
title: "Statistiques"
|
||||||
|
runTimes: "En cours:"
|
||||||
|
words: "Nb. Mots:"
|
||||||
|
readTimes: "Temps de lecture: "
|
||||||
|
visitors: "Visiteurs: "
|
||||||
|
pageViews: "Vues: "
|
||||||
|
todayViews: "Nombre de vues du jour: "
|
||||||
|
yesterdayViews: "Nombre de vues d'hier: "
|
||||||
|
monthViews: "Vues du mois: "
|
||||||
|
totalViews: "Total des vues: "
|
||||||
|
lastUpdate: "Dernière mise à jour: "
|
||||||
|
|
||||||
|
Footer:
|
||||||
|
powerby: "Fait par %s"
|
||||||
|
|
||||||
|
Search:
|
||||||
|
placeholder: Recherche...
|
||||||
|
empty: "Nous n'avons pas trouvé ce que vous cherchiez pour : ${query}"
|
||||||
|
hits: "${hits} resultats trouvés"
|
||||||
|
time: "${hits} resultats trouvés en ${time} ms"
|
||||||
|
|
||||||
|
DateSuffix:
|
||||||
|
years: " Années"
|
||||||
|
days: " Jours"
|
||||||
|
hours: " Heures"
|
||||||
|
mins: " Minutes"
|
||||||
|
month: " Mois"
|
||||||
|
day: " Jour"
|
||||||
|
hour: " Heur"
|
||||||
|
min: " Minute"
|
||||||
|
just: "A l'instant"
|
||||||
|
|
||||||
|
ToolBtns:
|
||||||
|
comment: "Commenter"
|
||||||
|
theme: "Changer le theme"
|
||||||
|
lang: "Traduction Multilingue"
|
||||||
|
backTop: "Remonter"
|
232
i18n/zh-cn.yaml
232
i18n/zh-cn.yaml
@ -19,135 +19,133 @@ CateTitle:
|
|||||||
AllSome:
|
AllSome:
|
||||||
other: "所有 {{ .Some }}"
|
other: "所有 {{ .Some }}"
|
||||||
|
|
||||||
NavToggleLabel:
|
Symbol:
|
||||||
other: 切换导航栏
|
colon: ":"
|
||||||
|
comma: ","
|
||||||
|
period: "。"
|
||||||
|
|
||||||
MSearchLabel:
|
Sidebar:
|
||||||
other: 搜索
|
label:
|
||||||
|
posts: 日志
|
||||||
|
categories: 分类
|
||||||
|
tags: 标签
|
||||||
|
rss: RSS 订阅
|
||||||
|
ccommons: 共享知识
|
||||||
|
toc: 文章目录
|
||||||
|
overview: 站点概览
|
||||||
|
navToggle: 切换导航栏
|
||||||
|
search: 搜索
|
||||||
|
|
||||||
SymbolColon:
|
Terms:
|
||||||
other: ":"
|
archives: "目前共计 <strong>{{ .Count }}</strong> 篇日志"
|
||||||
SymbolComma:
|
categories: "目前共计 <strong>{{ .Count }}</strong> 个分类"
|
||||||
other: ","
|
tags: "目前共计 <strong>{{ .Count }}</strong> 个标签"
|
||||||
SymbolPeriod:
|
|
||||||
other: "。"
|
|
||||||
|
|
||||||
SbPostsLable:
|
|
||||||
other: 日志
|
|
||||||
SbCatesTitle:
|
|
||||||
other: 分类
|
|
||||||
SbTagsTitle:
|
|
||||||
other: 标签
|
|
||||||
TableOfContents:
|
|
||||||
other: 文章目录
|
|
||||||
SiteOverview:
|
|
||||||
other: 站点概览
|
|
||||||
RSSLable:
|
|
||||||
other: RSS 订阅
|
|
||||||
CCLinkTitle:
|
|
||||||
other: 共享知识
|
|
||||||
BackTopLabel:
|
|
||||||
other: 返回顶部
|
|
||||||
|
|
||||||
TagsCounterTitle:
|
PostArchive:
|
||||||
zero: 暂无标签
|
cheers:
|
||||||
other: "目前共计 <strong>{{ .Count }}</strong> 个标签"
|
um: 嗯..
|
||||||
CatesCounterTitle:
|
ok: 还行
|
||||||
zero: 暂无分类
|
nice: 不错
|
||||||
other: "目前共计 <strong>{{ .Count }}</strong> 个分类"
|
good: 很好
|
||||||
ArchiveCounterTitle:
|
great: 非常好
|
||||||
zero: 暂无日志
|
excellent: 太棒了
|
||||||
other: "目前共计 <strong>{{ .Count }}</strong> 篇日志"
|
keepOn: 继续努力哟。╰(*°▽°*)╯
|
||||||
|
|
||||||
PostArchiveCheersUm:
|
PostMeta:
|
||||||
other: 嗯..
|
sticky: 置顶
|
||||||
PostArchiveCheersOk:
|
publish:
|
||||||
other: 还行
|
date: 发表于
|
||||||
PostArchiveCheersNice:
|
time: 创建时间
|
||||||
other: 不错
|
lastmod:
|
||||||
PostArchiveCheersGood:
|
date: 更新于
|
||||||
other: 很好
|
time: 修改时间
|
||||||
PostArchiveCheersGreat:
|
category: 分类于
|
||||||
other: 非常好
|
words:
|
||||||
PostArchiveCheersExcellent:
|
title: 字数
|
||||||
other: 太棒了
|
count: "{{- .WordCount -}}"
|
||||||
PostArchiveKeepOn:
|
reading:
|
||||||
other: 继续努力哟。╰(*°▽°*)╯
|
title: 阅读
|
||||||
|
time: "{{- .ReadingTime -}}分钟"
|
||||||
|
views: 浏览
|
||||||
|
comments: 评论
|
||||||
|
tags: 标签
|
||||||
|
more: 阅读全文
|
||||||
|
edit: 编辑
|
||||||
|
expired:
|
||||||
|
title: "温馨提醒"
|
||||||
|
info: "🕰️ 嗨,这篇文章已是#前的陈年佳酿,信息可能需要更新,阅读前请检查最佳赏味期限。"
|
||||||
|
warn: "🚀 注意啦!这篇文章来自#以前,可能已跟不上时代的步伐。阅读时请自备时光机,小心穿越哦!"
|
||||||
|
summary:
|
||||||
|
title: 总结摘要
|
||||||
|
|
||||||
PostStickyTitle:
|
PostAlert:
|
||||||
other: 置顶
|
info : "信息"
|
||||||
PostPublishDate:
|
note : "注意"
|
||||||
other: 发表于
|
help : "帮助"
|
||||||
PostPublishTime:
|
error : "错误"
|
||||||
other: 创建时间
|
warning : "警告"
|
||||||
PostLastModDate:
|
success : "成功"
|
||||||
other: 更新于
|
important: "重要"
|
||||||
PostLastModTime:
|
|
||||||
other: 修改时间
|
|
||||||
PostCategory:
|
|
||||||
other: "分类于"
|
|
||||||
PostWords:
|
|
||||||
other: 字数
|
|
||||||
PostWordCount:
|
|
||||||
other: "{{- .WordCount -}}"
|
|
||||||
PostReading:
|
|
||||||
other: 阅读
|
|
||||||
PostReadTime:
|
|
||||||
other: "{{- .ReadingTime -}}分钟"
|
|
||||||
PostViews:
|
|
||||||
other: 浏览
|
|
||||||
PostTags:
|
|
||||||
other: 标签
|
|
||||||
PostReadMore:
|
|
||||||
other: 阅读全文
|
|
||||||
PostEditTitle:
|
|
||||||
other: 编辑
|
|
||||||
|
|
||||||
PostCRTitle:
|
PostCopyRight:
|
||||||
other: 文章标题
|
title: 文章标题
|
||||||
PostCRAuthor:
|
author: 本文作者
|
||||||
other: 本文作者
|
link: 本文链接
|
||||||
PostCRLink:
|
origin:
|
||||||
other: 本文链接
|
author: 原文作者
|
||||||
PostCROriginAuthor:
|
link: 原文链接
|
||||||
other: 原文作者
|
license:
|
||||||
PostCROriginLink:
|
title: 版权声明
|
||||||
other: 原文链接
|
content: "本博客所有文章除特别声明外,均采用 <i class=\"fab fa-fw fa-creative-commons\"></i>%s 许可协议。转载请注明出处!"
|
||||||
PostCRLicenseTitle:
|
|
||||||
other: 版权声明
|
|
||||||
PostCRLicenseContent:
|
|
||||||
other: "本博客所有文章除特别声明外,均采用 <i class=\"fab fa-fw fa-creative-commons\"></i>%s 许可协议。转载请注明出处!"
|
|
||||||
|
|
||||||
PostFollowMe:
|
PostFollowMe:
|
||||||
other: 欢迎关注我的其它发布渠道
|
other: 欢迎关注我的其它发布渠道
|
||||||
|
|
||||||
RewardDonate:
|
PostComments:
|
||||||
other: 赞赏
|
title: 评论交流
|
||||||
RewardWechatpay:
|
|
||||||
other: 微信
|
|
||||||
RewardAlipay:
|
|
||||||
other: 支付宝
|
|
||||||
RewardPaypal:
|
|
||||||
other: PayPal
|
|
||||||
RewardBitcoin:
|
|
||||||
other: 比特币
|
|
||||||
|
|
||||||
PostCommentTitle:
|
Reward:
|
||||||
other: 评论交流
|
title: 赞赏
|
||||||
|
wechatpay: 微信
|
||||||
|
alipay: 支付宝
|
||||||
|
paypal: Paypal
|
||||||
|
bitcoin: 比特币
|
||||||
|
|
||||||
VisitorsLabel:
|
SiteInfoItems:
|
||||||
other: 总访客量
|
title: "网站资讯"
|
||||||
PageViewsLabel:
|
runTimes: "已运行:"
|
||||||
other: 总访问量
|
words: "总字数:"
|
||||||
|
readTimes: "阅读约:"
|
||||||
|
visitors: "总访客数:"
|
||||||
|
pageViews: "页面浏览:"
|
||||||
|
todayViews: "今日访问:"
|
||||||
|
yesterdayViews: "昨日访问:"
|
||||||
|
monthViews: "本月访问:"
|
||||||
|
totalViews: "总访问量:"
|
||||||
|
lastUpdate: "最后更新于:"
|
||||||
|
|
||||||
FooterPowerby:
|
Footer:
|
||||||
other: 由 %s 强力驱动
|
powerby: 由 %s 强力驱动
|
||||||
|
|
||||||
SearchPh:
|
Search:
|
||||||
other: 搜索...
|
placeholder: 搜索...
|
||||||
SearchEmpty:
|
empty: "没有找到任何搜索结果:${query}"
|
||||||
other: "没有找到任何搜索结果:${query}"
|
|
||||||
SearchHits:
|
|
||||||
hits: "找到 ${hits} 个搜索结果"
|
hits: "找到 ${hits} 个搜索结果"
|
||||||
SearchHitsTime:
|
time: "找到 ${hits} 个搜索结果(用时 ${time} 毫秒)"
|
||||||
other: "找到 ${hits} 个搜索结果(用时 ${time} 毫秒)"
|
|
||||||
|
DateSuffix:
|
||||||
|
years: " 年 "
|
||||||
|
days: " 天 "
|
||||||
|
hours: " 小时 "
|
||||||
|
mins: " 分钟"
|
||||||
|
month: " 个月前"
|
||||||
|
day: " 天前"
|
||||||
|
hour: " 小时前"
|
||||||
|
min: " 分钟前"
|
||||||
|
just: "刚刚"
|
||||||
|
|
||||||
|
ToolBtns:
|
||||||
|
comment: "直达评论"
|
||||||
|
theme: "深浅模式切换"
|
||||||
|
lang: "多语言翻译"
|
||||||
|
backTop: "返回顶部"
|
150
i18n/zh-tw.yaml
Normal file
150
i18n/zh-tw.yaml
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
#--------------------------------------
|
||||||
|
# 繁體版本
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
archives:
|
||||||
|
other: 文章
|
||||||
|
tag:
|
||||||
|
other: 標籤
|
||||||
|
tags:
|
||||||
|
other: 標籤
|
||||||
|
TagTitle:
|
||||||
|
other: 標籤集錦
|
||||||
|
category:
|
||||||
|
other: 分類
|
||||||
|
categories:
|
||||||
|
other: 分類
|
||||||
|
CateTitle:
|
||||||
|
other: 分類欄目
|
||||||
|
AllSome:
|
||||||
|
other: "所有 {{ .Some }}"
|
||||||
|
|
||||||
|
Symbol:
|
||||||
|
colon: ":"
|
||||||
|
comma: ","
|
||||||
|
period: "。"
|
||||||
|
|
||||||
|
Sidebar:
|
||||||
|
label:
|
||||||
|
posts: 日誌
|
||||||
|
categories: 分類
|
||||||
|
tags: 標籤
|
||||||
|
rss: RSS 訂閱
|
||||||
|
ccommons: 共享知識
|
||||||
|
toc: 文章目錄
|
||||||
|
overview: 站點概覽
|
||||||
|
navToggle: 切換導航欄
|
||||||
|
search: 搜索
|
||||||
|
|
||||||
|
Terms:
|
||||||
|
archives: "目前共計 <strong>{{ .Count }}</strong> 篇日誌"
|
||||||
|
categories: "目前共計 <strong>{{ .Count }}</strong> 個分類"
|
||||||
|
tags: "目前共計 <strong>{{ .Count }}</strong> 個標籤"
|
||||||
|
|
||||||
|
PostArchive:
|
||||||
|
cheers:
|
||||||
|
um: 嗯..
|
||||||
|
ok: 還行
|
||||||
|
nice: 不错
|
||||||
|
good: 很好
|
||||||
|
great: 非常好
|
||||||
|
excellent: 太棒了
|
||||||
|
keepOn: 繼續努力喲。╰(*°▽°*)╯
|
||||||
|
|
||||||
|
PostMeta:
|
||||||
|
sticky: 置頂
|
||||||
|
publish:
|
||||||
|
date: 發表於
|
||||||
|
time: 創建時間
|
||||||
|
lastmod:
|
||||||
|
date: 更新於
|
||||||
|
time: 修改時間
|
||||||
|
category: 分類於
|
||||||
|
words:
|
||||||
|
title: 字數
|
||||||
|
count: "{{- .WordCount -}}"
|
||||||
|
reading:
|
||||||
|
title: 閱讀
|
||||||
|
time: "{{- .ReadingTime -}}分鐘"
|
||||||
|
views: 瀏覽
|
||||||
|
comments: 評論
|
||||||
|
tags: 標籤
|
||||||
|
more: 閱讀全文
|
||||||
|
edit: 編輯
|
||||||
|
expired:
|
||||||
|
title: "温馨提醒"
|
||||||
|
info: "🕰️ 嗨,这篇文章已是#前的陳年佳釀,資訊可能需要更新,閱讀前請檢查最佳賞味期限。"
|
||||||
|
warn: "🚀 請注意啦!這篇文章来自#以前,可能已經跟不上時代的腳步了。閱讀時請自備時光機,小心穿越哦!"
|
||||||
|
summary:
|
||||||
|
title: 總結摘要
|
||||||
|
PostAlert:
|
||||||
|
info : "信息 "
|
||||||
|
note : "注意"
|
||||||
|
help : "幫助"
|
||||||
|
error : "錯誤"
|
||||||
|
warning : "警告"
|
||||||
|
success : "成功"
|
||||||
|
important: "重要"
|
||||||
|
|
||||||
|
PostCopyRight:
|
||||||
|
title: 文章標題
|
||||||
|
author: 本文作者
|
||||||
|
link: 本文鏈接
|
||||||
|
origin:
|
||||||
|
author: 原文作者
|
||||||
|
link: 原文鏈接
|
||||||
|
license:
|
||||||
|
title: 版權聲明
|
||||||
|
content: "本博客所有文章除特別聲明外,均採用 <i class=\"fab fa-fw fa-creative-commons\"></i>%s 許可協議。轉載請註明出處!"
|
||||||
|
|
||||||
|
PostFollowMe:
|
||||||
|
other: 歡迎關注我的其它發布渠道
|
||||||
|
|
||||||
|
PostCommentTitle:
|
||||||
|
other: 評論交流
|
||||||
|
|
||||||
|
Reward:
|
||||||
|
title: 讚賞
|
||||||
|
wechatpay: 微信
|
||||||
|
alipay: 支付寶
|
||||||
|
paypal: Paypal
|
||||||
|
bitcoin: 比特幣
|
||||||
|
|
||||||
|
SiteInfoItems:
|
||||||
|
title: "網站資訊"
|
||||||
|
runTimes: "已運行:"
|
||||||
|
words: "總字數:"
|
||||||
|
readTimes: "閱讀約:"
|
||||||
|
visitors: "總訪客數:"
|
||||||
|
pageViews: "頁面瀏覽:"
|
||||||
|
todayViews: "今日訪問:"
|
||||||
|
yesterdayViews: "昨日訪問:"
|
||||||
|
monthViews: "本月訪問:"
|
||||||
|
totalViews: "總訪問量:"
|
||||||
|
lastUpdate: "最後更新於:"
|
||||||
|
|
||||||
|
FooterPowerby:
|
||||||
|
other: 由 %s 強力驅動
|
||||||
|
|
||||||
|
Search:
|
||||||
|
placeholder: 搜索...
|
||||||
|
empty: "沒有找到任何搜索結果:${query}"
|
||||||
|
hits: "找到 ${hits} 個搜索結果"
|
||||||
|
time: "找到 ${hits} 個搜索結果(用時 ${time} 毫秒)"
|
||||||
|
|
||||||
|
DateSuffix:
|
||||||
|
years: " 年 "
|
||||||
|
days: " 天 "
|
||||||
|
hours: " 小時 "
|
||||||
|
mins: " 分鐘"
|
||||||
|
month: " 個月前"
|
||||||
|
day: " 天前"
|
||||||
|
hour: " 小時前"
|
||||||
|
min: " 分鐘前"
|
||||||
|
just: "剛剛"
|
||||||
|
|
||||||
|
ToolBtns:
|
||||||
|
comment: "直達評論"
|
||||||
|
theme: "深淺模式切換"
|
||||||
|
lang: "多語言翻譯"
|
||||||
|
backTop: "返回頂部"
|
BIN
images/avatar.jpeg
Normal file
BIN
images/avatar.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
BIN
images/hugo-next-primary.png
Normal file
BIN
images/hugo-next-primary.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
BIN
images/hugo-next-secondary.png
Normal file
BIN
images/hugo-next-secondary.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user