Compare commits
No commits in common. "master" and "v1.0" have entirely different histories.
58
.drone.yml
58
.drone.yml
@ -1,58 +0,0 @@
|
||||
kind: pipeline
|
||||
steps:
|
||||
- name: restore-cache
|
||||
image: meltwater/drone-cache:dev
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: aws_acces
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: aws_key
|
||||
pull: true
|
||||
settings:
|
||||
debug: false
|
||||
cache_key: '{{ arch }}_{{ os }}_{{ checksum "package-lock.json" }}'
|
||||
archive_format: "gzip"
|
||||
endpoint: storage.yandexcloud.net
|
||||
restore: true
|
||||
bucket: drone-cache
|
||||
region: ru-central1
|
||||
mount: 'node_modules'
|
||||
- name: run-sh
|
||||
image: node:alpine
|
||||
commands:
|
||||
- chmod +x ./bin/run.sh
|
||||
- ./bin/run.sh
|
||||
- name: update-site
|
||||
image: plugins/downstream
|
||||
settings:
|
||||
server: https://drone.lp76.ru
|
||||
token:
|
||||
from_secret: drone_token
|
||||
fork: false
|
||||
repositories:
|
||||
- aleks/site
|
||||
- name: rebuild-cache
|
||||
image: meltwater/drone-cache:dev
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: aws_acces
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: aws_key
|
||||
pull: true
|
||||
settings:
|
||||
debug: false
|
||||
cache_key: '{{ arch }}_{{ os }}_{{ checksum "package-lock.json" }}'
|
||||
archive_format: "gzip"
|
||||
endpoint: storage.yandexcloud.net
|
||||
rebuild: true
|
||||
bucket: drone-cache
|
||||
region: ru-central1
|
||||
mount: 'node_modules'
|
||||
- name: telegram
|
||||
image: appleboy/drone-telegram
|
||||
settings:
|
||||
token:
|
||||
from_secret: token_telegramm
|
||||
to:
|
||||
from_secret: to_telegram_user
|
||||
message: #success {{build.status}}
|
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -1,3 +0,0 @@
|
||||
*.html linguist-language=javascript
|
||||
*.stylus linguist-language=javascript
|
||||
*.ejs linguist-language=javascript
|
31
.github/workflows/node.yml
vendored
31
.github/workflows/node.yml
vendored
@ -1,31 +0,0 @@
|
||||
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
|
||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
|
||||
|
||||
name: Node.js CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16.x, 18.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- run: npm ci
|
||||
- run: npm run build --if-present
|
||||
- run: npm test
|
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,8 +0,0 @@
|
||||
.DS_Store
|
||||
.idea/
|
||||
*.log
|
||||
*.iml
|
||||
node_modules/
|
||||
.cache
|
||||
.history
|
||||
_bak.yml
|
@ -1,4 +0,0 @@
|
||||
.cache/
|
||||
.history/
|
||||
.github/
|
||||
_bak.yml
|
45
.stylintrc
45
.stylintrc
@ -1,45 +0,0 @@
|
||||
{
|
||||
"blocks": false,
|
||||
"brackets": "never",
|
||||
"colons": false,
|
||||
"colors": "never",
|
||||
"commaSpace": false,
|
||||
"commentSpace": "never",
|
||||
"cssLiteral": "never",
|
||||
"customProperties": [],
|
||||
"depthLimit": false,
|
||||
"duplicates": false,
|
||||
"efficient": false,
|
||||
"exclude": [],
|
||||
"extendPref": false,
|
||||
"globalDupe": false,
|
||||
"groupOutputByFile": false,
|
||||
"indentPref": false,
|
||||
"leadingZero": "never",
|
||||
"maxErrors": false,
|
||||
"maxWarnings": false,
|
||||
"mixed": false,
|
||||
"mixins": [],
|
||||
"namingConvention": "lowercase-dash",
|
||||
"namingConventionStrict": false,
|
||||
"none": "never",
|
||||
"noImportant": false,
|
||||
"parenSpace": false,
|
||||
"placeholders": "always",
|
||||
"prefixVarsWithDollar": "always",
|
||||
"quotePref": false,
|
||||
"reporterOptions": {
|
||||
"columns": ["lineData", "severity", "description", "rule"],
|
||||
"columnSplitter": " ",
|
||||
"showHeaders": false,
|
||||
"truncate": false
|
||||
},
|
||||
"semicolons": "never",
|
||||
"sortOrder": "never",
|
||||
"stackedProperties": false,
|
||||
"trailingWhitespace": "never",
|
||||
"universal": false,
|
||||
"valid": false,
|
||||
"zeroUnits": "never",
|
||||
"zIndexNormalize": false
|
||||
}
|
390
README.md
390
README.md
@ -1,247 +1,109 @@
|
||||
<h1 align="center">Ayer</h1>
|
||||
|
||||
:ocean: Ayer is a clean and elegant theme for Hexo, also fast, powerful and responsive. It contains many awesome features, It's perfect for your blog, "Ayer" means "water" in Malaysian and "yesterday" in Spanish. If you have any queries or advice during the process of using, Please contact me!
|
||||
|
||||
注:收藏本主题请点右上角Star,谢谢~
|
||||
|
||||
### [Preview](https://shen-yu.gitee.io)
|
||||
|
||||
### [中文说明](https://shen-yu.gitee.io/2019/ayer/)
|
||||
|
||||

|
||||
|
||||
## Install
|
||||
### Install
|
||||
|
||||
### For hexo >= 5.0
|
||||
|
||||
```shell
|
||||
npm i hexo-theme-ayer -S
|
||||
``` bash
|
||||
$ git clone https://github.com/Shen-Yu/hexo-theme-ayer.git themes/ayer
|
||||
```
|
||||
|
||||
- If this theme is newly installed, a `_config.ayer.yml` file will be generated in the root directory after the installation is complete, and you can directly edit the `_config.ayer.yml` file for configuration.
|
||||
- If it is a theme upgrade, you can use the configuration method of hexo < 5.0, or you can move the original configuration file to the root directory and rename it to `_config.ayer.yml`.
|
||||
|
||||
### For hexo < 5.0
|
||||
|
||||
```shell
|
||||
git clone https://github.com/Shen-Yu/hexo-theme-ayer.git themes/ayer
|
||||
```
|
||||
|
||||
## Enable
|
||||
### Enable
|
||||
|
||||
Modify `theme` setting in `_config.yml` to `ayer`
|
||||
|
||||
```yml
|
||||
``` yml
|
||||
theme: ayer
|
||||
```
|
||||
|
||||
## Update
|
||||
### Update
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
cd themes/ayer
|
||||
git pull
|
||||
```
|
||||
|
||||
## Multi Language Support
|
||||
### Configuration
|
||||
|
||||
zh-CN(中文简体) en(English) zh-TW(中文繁体) ja(日本語) es(Español) de(Deutsch) fr(Français) ru(Русский) ko(한국어) vi(Tiếng Việt) nl(Nederlands) no(norsk) pt(Português)
|
||||
let me know if you can’t find something.
|
||||
|
||||
English is default languge, if you want to change, modify `language` option in `_config.yml` file in your Hexo blog's root folder.
|
||||
|
||||
## Configuration
|
||||
|
||||
let me know if you have any questions.
|
||||
|
||||
```yml
|
||||
# Menu-Sidebar
|
||||
``` yml
|
||||
# Menu-侧边栏菜单
|
||||
menu:
|
||||
Home: /
|
||||
Archives: /archives
|
||||
Categories: /categories
|
||||
Tags: /tags
|
||||
Gallery: http://shenyu-vip.lofter.com
|
||||
Travel: /tags/旅行/
|
||||
About: /2019/about
|
||||
|
||||
# Subtitle and Typing animation
|
||||
# https://github.com/mattboldt/typed.js
|
||||
subtitle:
|
||||
enable: true
|
||||
text: A clean and elegant theme
|
||||
text2: It's perfect for your hexo blog
|
||||
text3: Have fun! #Supports up to three lines of text
|
||||
startDelay: 0
|
||||
typeSpeed: 200
|
||||
loop: true
|
||||
backSpeed: 100
|
||||
showCursor: true
|
||||
|
||||
# Favicon and sidebar logo
|
||||
# 网站图标和侧边栏logo
|
||||
favicon: /favicon.ico
|
||||
logo: /images/ayer-side.svg
|
||||
|
||||
# Cover Setting
|
||||
# enable: [true|false];path: [background-image];logo: [cover-logo-image]
|
||||
# 封面配置
|
||||
# enable-是否启用封面;path-封面背景图;logo-封面logo
|
||||
cover:
|
||||
enable: true
|
||||
path: /images/cover1.jpg # there are some beautiful cover images in Ayer's directory: /source/images, choose your favorite image to replace it.
|
||||
path: /images/cover1.jpg # images目录下附送多张美图,可更换
|
||||
logo: /images/ayer.svg
|
||||
|
||||
# ProgressBar
|
||||
progressBar: true
|
||||
# 页面顶部进度条
|
||||
progressBar: ture
|
||||
|
||||
# Boardcast
|
||||
broadcast:
|
||||
enable: true
|
||||
type: 2 # 1:custom,2:hitokoto api(https://hitokoto.cn/)
|
||||
text: a clean and elegant theme, fast and responsive. # only work in custom mode
|
||||
|
||||
# Article Setting
|
||||
# (Use this to excerpt if article is too long:<!--more-->)
|
||||
# 文章配置
|
||||
# 文章太长,截断按钮文字(在需要截断的行增加此标记:<!--more-->)
|
||||
excerpt_link: Read More...
|
||||
excerpt_all: false
|
||||
|
||||
# Copy code button
|
||||
copy_btn: true
|
||||
# Share
|
||||
share_enable: true
|
||||
# If you are not in China, maybe you prefer to set:false
|
||||
share_china: true
|
||||
# share text
|
||||
# 文章分享文字
|
||||
share_text: Share
|
||||
# search text
|
||||
# 搜索文字
|
||||
search_text: Search
|
||||
# nav text
|
||||
# 分页文字
|
||||
nav_text:
|
||||
page_prev: Prev page
|
||||
page_next: Next page
|
||||
post_prev: Newer posts
|
||||
post_next: Older posts
|
||||
|
||||
# Catalog in article
|
||||
# 文章页是否显示目录
|
||||
toc: true
|
||||
|
||||
# images in the article support click to fullscreen
|
||||
image_viewer: true
|
||||
|
||||
# https://github.com/willin/hexo-wordcount
|
||||
word_count:
|
||||
enable: true
|
||||
# only display in article page(not in index page)
|
||||
only_article_visit: true
|
||||
|
||||
# Reward Setting
|
||||
# type:0-close reward; 1-only open in article which you have configured reward:true; 2-open in all articles
|
||||
# 打赏
|
||||
# 打赏type设定:0-关闭打赏; 1-文章对应的md文件里有reward:true属性,才有打赏; 2-所有文章均有打赏
|
||||
reward_type: 2
|
||||
# reward word
|
||||
reward_wording: "Buy me a cup of coffee~"
|
||||
# qrcode image path
|
||||
# 打赏wording
|
||||
reward_wording: '请我喝杯咖啡吧~'
|
||||
# 支付宝二维码图片地址,跟你设置logo的方式一样。比如:/images/alipay.jpg
|
||||
alipay: /images/alipay.jpg
|
||||
# qrcode image path
|
||||
# 微信二维码图片地址
|
||||
weixin: /images/wechat.jpg
|
||||
|
||||
# Copyright
|
||||
# type:0-close all; 1-only display in article which you have configured copyright: true; 2-all articles
|
||||
copyright_type: 2
|
||||
|
||||
# Search
|
||||
# https://github.com/theme-next/hexo-generator-searchdb
|
||||
# 是否启用搜索
|
||||
search: true
|
||||
|
||||
# RSS
|
||||
# leave it empty if you dont' need
|
||||
# RSS订阅(先安装hexo-generator-feed插件,再去博客根目录config进行配置)
|
||||
rss: /atom.xml
|
||||
|
||||
# DarkMode
|
||||
darkmode: true
|
||||
# 评论:1、Valine(推荐);2、Gitalk
|
||||
|
||||
# Canvas background style: 0-close,1-moveline
|
||||
canvas_bg: 0
|
||||
|
||||
# Custom mouse pointer,replace /images/mouse.cur
|
||||
mouse:
|
||||
enable: false
|
||||
path: /images/mouse.cur
|
||||
|
||||
# Click effect: 0-close,1-love,2-boom,3-particles
|
||||
click_effect: 0
|
||||
|
||||
# articleWidth and sidebarWidth
|
||||
layout:
|
||||
article_width: 80rem
|
||||
sidebar_width: 8rem
|
||||
|
||||
# GitHub Ribbons(https://github.blog/2008-12-19-github-ribbons/)
|
||||
github:
|
||||
# (Set false if you don't need)
|
||||
enable: false
|
||||
url: https://github.com/Shen-Yu/hexo-theme-ayer
|
||||
|
||||
# pv&uv statistics
|
||||
busuanzi:
|
||||
enable: true
|
||||
|
||||
# cnzz statistics
|
||||
cnzz:
|
||||
enable: true
|
||||
url: #
|
||||
|
||||
# Google Analytics
|
||||
google_analytics: ""
|
||||
# Baidu Analytics
|
||||
baidu_analytics: ""
|
||||
|
||||
# Mathjax Support
|
||||
mathjax: true
|
||||
|
||||
# Katex Support
|
||||
# note: need change the hexo-renderer,npm un hexo-renderer-marked -S && npm i hexo-renderer-markdown-it-katex -S
|
||||
katex:
|
||||
enable: false # true
|
||||
allpost: true
|
||||
copy_tex: false
|
||||
|
||||
# since year
|
||||
since: 2019
|
||||
|
||||
# only for chinese website
|
||||
# ICP
|
||||
icp:
|
||||
enable: false
|
||||
url: "http://www.beian.miit.gov.cn/"
|
||||
text: "浙ICP备88888888"
|
||||
# gongan
|
||||
gongan:
|
||||
enable: false
|
||||
img: /images/beian.png
|
||||
url: "http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=01234567890123" #link
|
||||
text: "浙公网安备01234567890123号"
|
||||
|
||||
# friends link
|
||||
friends_link:
|
||||
Ayer: #site name
|
||||
# site url
|
||||
url: https://github.com/Shen-Yu/hexo-theme-ayer
|
||||
# site icon(optional)
|
||||
img: /images/ayer.png
|
||||
GitHub:
|
||||
url: https://github.com/Shen-Yu
|
||||
img: https://i.loli.net/2020/09/07/indb4PRYDA98EkN.png
|
||||
gitee:
|
||||
url: https://gitee.com/shen-yu
|
||||
img: https://i.loli.net/2020/09/07/K3AqO7h6krQFlRX.png
|
||||
Hexo:
|
||||
url: https://hexo.io
|
||||
img: https://i.loli.net/2020/09/07/UYGzjo7h68CRWny.png
|
||||
hexo-tag-chart:
|
||||
url: https://github.com/Shen-Yu/hexo-tag-chart
|
||||
img: https://i.loli.net/2020/09/07/GIXBYE5SoylhR1r.png
|
||||
|
||||
# Comment:1、Valine (recommended);2、Gitalk;3、Twikoo;4、MiniValine
|
||||
# You can close the comment section on one of your posts by marking `comments: false` in front-matter.
|
||||
|
||||
# 1、Valine [A fast, simple & powerful comment system](https://github.com/xCss/Valine)
|
||||
# You need create leancloud account first (https://console.leancloud.app), then put the id|key in below.
|
||||
leancloud:
|
||||
# 1、Valine[一款快速、简洁且高效的无后端评论系统](https://github.com/xCss/Valine)
|
||||
# 启用Valine必须先创建leancloud应用, 获取 id|key 填入即可
|
||||
leancloud:
|
||||
enable: true
|
||||
app_id: #
|
||||
app_key: #
|
||||
# Valine Setting
|
||||
# Valine配置
|
||||
valine:
|
||||
enable: true
|
||||
avatar: mp # (https://valine.js.org/avatar.html)
|
||||
placeholder: Add some comments to my article~ # placeholder
|
||||
enable: true # 是否启用
|
||||
avatar: mp # 头像样式(https://valine.js.org/avatar.html)
|
||||
placeholder: 给我的文章加点评论吧~ # placeholder
|
||||
|
||||
# 2、Gitalk(https://github.com/gitalk/gitalk)
|
||||
gitalk:
|
||||
@ -252,42 +114,47 @@ gitalk:
|
||||
owner: # GitHub ID
|
||||
admin: # GitHub ID
|
||||
|
||||
# 3、Twikoo(https://github.com/imaegoo/twikoo)
|
||||
twikoo:
|
||||
enable: false
|
||||
envId: #
|
||||
# GitHub Ribbons(https://github.blog/2008-12-19-github-ribbons/)
|
||||
github:
|
||||
# (关闭请设置为false)
|
||||
url: https://github.com/Shen-Yu/hexo-theme-ayer
|
||||
|
||||
# fancybox(仅用于相册展示,若需要可配置albums)
|
||||
fancybox: true
|
||||
|
||||
# advertisement
|
||||
# if there is an "ad" word in photo or url,it may blocked by adblock or any other browser extensions
|
||||
ads:
|
||||
ad_1:
|
||||
title: vultr优惠vps
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/vultr.png
|
||||
url: https://www.vultr.com/?ref=8630075
|
||||
width: 300
|
||||
ad_2:
|
||||
title: 云服务器全球购低至2折
|
||||
img: https://cdn.jsdelivr.net/gh/Shen-Yu/cdn/img/ten_2.jpg
|
||||
url: https://curl.qcloud.com/kvO7hb43
|
||||
width: 300
|
||||
# 访问量统计(不蒜子)
|
||||
busuanzi:
|
||||
enable: true
|
||||
|
||||
# encrypt settings
|
||||
lock:
|
||||
enable: false
|
||||
password: 123456
|
||||
# 友盟cnzz统计(url填js代码src链接)
|
||||
cnzz:
|
||||
enable: true
|
||||
url: #
|
||||
|
||||
# Google Analytics
|
||||
google_analytics: ''
|
||||
# 百度统计
|
||||
baidu_analytics: ''
|
||||
|
||||
# 数学公式
|
||||
mathjax: true
|
||||
|
||||
# 网站成立年份(默认为 2019,若填入年份小于当前年份,则显示为 2018-2019 类似的格式)
|
||||
since: 2019
|
||||
|
||||
#是否显示页脚信息(建议保留,有助于本主题的推广)
|
||||
pageFooter: true
|
||||
```
|
||||
|
||||
## Plugins
|
||||
|
||||
- [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) (for Local Search)
|
||||
### Plugins
|
||||
|
||||
+ [hexo-generator-search](https://github.com/wzpan/hexo-generator-search) Local search
|
||||
|
||||
```yml
|
||||
$ npm install hexo-generator-searchdb --save
|
||||
```
|
||||
|
||||
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||
|
||||
Then add the plugin configuration for hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||
|
||||
```yml
|
||||
# Hexo-generator-search
|
||||
search:
|
||||
@ -296,16 +163,16 @@ lock:
|
||||
format: html
|
||||
```
|
||||
|
||||
- [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) (for RSS)
|
||||
+ [hexo-generate-feed](https://github.com/hexojs/hexo-generator-feed) RSS
|
||||
|
||||
```yml
|
||||
$ npm install hexo-generator-feed --save
|
||||
```
|
||||
|
||||
Then add the plugin configuration in hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||
|
||||
|
||||
Then add the plugin configuration for hexo's configuration file `_config.yml` (note: not the theme's configuration file):
|
||||
|
||||
```yml
|
||||
feed:m
|
||||
feed:
|
||||
type: atom
|
||||
path: atom.xml
|
||||
limit: 20
|
||||
@ -313,84 +180,63 @@ lock:
|
||||
content:
|
||||
content_limit: 140
|
||||
content_limit_delim: ' '
|
||||
order_by: -date
|
||||
order_by: -date
|
||||
```
|
||||
|
||||
- [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top) (for Sticky Post)
|
||||
|
||||
```bash
|
||||
|
||||
+ [hexo-generator-index-pin-top](https://github.com/netcan/hexo-generator-index-pin-top)
|
||||
|
||||
``` bash
|
||||
$ npm uninstall hexo-generator-index --save
|
||||
$ npm install hexo-generator-index-pin-top --save
|
||||
```
|
||||
|
||||
## Categories
|
||||
### Post poster
|
||||
|
||||
```bash
|
||||
hexo new page categories
|
||||
```
|
||||
|
||||
Then paste following codes to file: /source/categories/index.md
|
||||
|
||||
```md
|
||||
``` md
|
||||
---
|
||||
title: categories
|
||||
type: categories
|
||||
layout: "categories"
|
||||
title: Post name
|
||||
|
||||
photos: [
|
||||
["img_url"],
|
||||
["img_url"]
|
||||
]
|
||||
---
|
||||
```
|
||||
|
||||
## Tags
|
||||
|
||||
Same as categories.
|
||||
|
||||
## Friend Links
|
||||
|
||||
```bash
|
||||
hexo new page friends
|
||||
```
|
||||
|
||||
Then paste following codes to file: /source/friends/index.md
|
||||
|
||||
```md
|
||||
---
|
||||
title: friends
|
||||
type: friends
|
||||
layout: "friends"
|
||||
---
|
||||
```
|
||||
|
||||
Then edit `friends_link` in `_config.yml`
|
||||
|
||||
## Gallery
|
||||
|
||||
### Gallery
|
||||
Need to write in the head of the markdown, this is not a good way to write, I hope to get a better way to write on github.
|
||||
|
||||
```md
|
||||
``` md
|
||||
---
|
||||
title: Gallery
|
||||
|
||||
albums: [["img_url", "img_caption"], ["img_url", "img_caption"]]
|
||||
albums: [
|
||||
["img_url","img_caption"],
|
||||
["img_url","img_caption"]
|
||||
]
|
||||
---
|
||||
```
|
||||
|
||||
## Toc
|
||||
### Toc
|
||||
|
||||
Use Tocbot to parse the title tags (h1~h6) in the content and insert the directory.
|
||||
Use Tocbot to parse the title tags (h1~h6) in the content and insert the directory.
|
||||
|
||||
- ayer/\_config.yml
|
||||
+ ayer/_config.yml
|
||||
|
||||
```bash
|
||||
# Toc
|
||||
``` bash
|
||||
# Toc
|
||||
toc: true
|
||||
```
|
||||
```
|
||||
+ If Toc is turned on in ayer/_config.yml, then Tocbot will generate a Toc article directory in the title tag of each blog parsing content, but not all blogs require Toc, so in the Front-matter section of markdown Can be closed:
|
||||
|
||||
- If Toc is turned on in ayer/\_config.yml, then Tocbot will generate a Toc article directory in the title tag of each blog parsing content, but not all blogs require Toc, so in the Front-matter section of markdown Can be closed:
|
||||
|
||||
```md
|
||||
``` md
|
||||
---
|
||||
toc: false
|
||||
---
|
||||
no_toc: true
|
||||
---
|
||||
```
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Inspired by [Ocean](https://github.com/zhwangart/hexo-theme-ocean)
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Ayer</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/Shen-Yu/hexo-theme-ayer" property="cc:attributionName" rel="cc:attributionURL">Eric-Shen</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
|
209
_config.yml
209
_config.yml
@ -1,22 +1,11 @@
|
||||
# 侧边栏菜单
|
||||
menu:
|
||||
Главная: /
|
||||
Архивы: /archives
|
||||
Категории: /categories
|
||||
Теги: /tags
|
||||
|
||||
# 站点次标题和打字动效
|
||||
# https://github.com/mattboldt/typed.js
|
||||
subtitle:
|
||||
enable: true # 是否开启动效
|
||||
text: # 显示的文字
|
||||
text2: # 滚动播放,如果不需要可以留空
|
||||
text3: # 最多支持三段文字
|
||||
startDelay: 0 # 延迟时间
|
||||
typeSpeed: 200 # 打字速度
|
||||
loop: true # 是否循环
|
||||
backSpeed: 100 # 回退速度
|
||||
showCursor: true # 是否显示光标
|
||||
主页: /
|
||||
目录: /archives
|
||||
标签: /tags
|
||||
旅行: /tags/旅行/
|
||||
摄影: http://shenyu-vip.lofter.com
|
||||
关于我: /2019/about
|
||||
|
||||
# 网站图标和侧边栏logo
|
||||
favicon: /favicon.ico
|
||||
@ -26,189 +15,93 @@ logo: /images/ayer-side.svg
|
||||
# enable-是否启用封面;path-封面背景图;logo-封面logo
|
||||
cover:
|
||||
enable: true
|
||||
path: /images/cover1.jpg # /source/images目录下附送多张美图,可更换
|
||||
path: /images/cover1.jpg # images目录下附送多张美图,可更换
|
||||
logo: false #/images/ayer.svg,如果不要直接设置成false
|
||||
|
||||
# 页面顶部进度条
|
||||
progressBar: true
|
||||
|
||||
# 告示板模块
|
||||
broadcast:
|
||||
enable: false # true开启,false关闭
|
||||
type: 2 # 1:自定义输入,2:一言api(https://hitokoto.cn/)
|
||||
text: енен # type为1时有效
|
||||
# 页面顶部进度条
|
||||
progressBar: ture
|
||||
|
||||
# 文章配置
|
||||
# 文章太长,截断按钮文字(在需要截断的行增加此标记:<!--more-->)
|
||||
excerpt_link: false
|
||||
# 如果你嫌每篇文章手动加more标记比较麻烦,又不想在首页全文显示,可以把excerpt_all设置成true,这样首页只会显示文章归档
|
||||
excerpt_all: false
|
||||
|
||||
# 是否开启代码复制按钮
|
||||
copy_btn: true
|
||||
# 是否开启文章分享按钮
|
||||
share_enable: true
|
||||
# 国内的社交平台(If you are not in China, maybe you prefer to set:false)
|
||||
share_china: false
|
||||
excerpt_link: 阅读更多...
|
||||
# 文章分享文字
|
||||
share_text: Поделится
|
||||
|
||||
share_text: 分享
|
||||
# 分页文字
|
||||
nav_text:
|
||||
page_prev: Страница назад
|
||||
page_next: Страница вперед
|
||||
post_prev: Предыдущая запись
|
||||
post_next: Следующая запись
|
||||
page_prev: 上一页
|
||||
page_next: 下一页
|
||||
post_prev: 上一篇
|
||||
post_next: 下一篇
|
||||
|
||||
# 文章页是否显示目录
|
||||
toc: true
|
||||
|
||||
# 文章中的图片是否支持点击放大
|
||||
image_viewer: true
|
||||
|
||||
# https://github.com/willin/hexo-wordcount
|
||||
# 是否开启字数统计(关闭请设置enable为false)
|
||||
# 也可以单独在md文件里Front-matter设置`no_word_count: true`属性,来自定义关闭字数统计
|
||||
word_count:
|
||||
enable: true
|
||||
# 只在文章详情显示(不在首页显示)
|
||||
only_article_visit: true
|
||||
|
||||
# 打赏
|
||||
# 打赏type设定:0-关闭打赏; 1-文章对应的md文件里有reward:true属性,才有打赏; 2-所有文章均有打赏
|
||||
reward_type: 2
|
||||
# 打赏wording
|
||||
reward_wording: "wording"
|
||||
reward_wording: '请我喝杯咖啡吧~'
|
||||
# 支付宝二维码图片地址,跟你设置logo的方式一样。比如:/images/alipay.jpg
|
||||
alipay: /images/alipay.jpg
|
||||
# 微信二维码图片地址
|
||||
weixin: /images/wechat.jpg
|
||||
|
||||
# 版权声明
|
||||
# 版权声明type设定:0-关闭版权声明; 1-文章对应的md文件里有copyright: true属性,才有版权声明; 2-所有文章均有版权声明
|
||||
copyright_type: 2
|
||||
|
||||
# 是否启用搜索
|
||||
# 需要安装hexo-generator-searchdb(https://github.com/theme-next/hexo-generator-searchdb)
|
||||
search: true
|
||||
|
||||
# RSS订阅(先安装hexo-generator-feed插件,再去博客根目录config进行配置)
|
||||
# 不想显示可以直接留空
|
||||
rss: /atom.xml
|
||||
|
||||
# 是否启用黑夜模式开关
|
||||
darkmode: true
|
||||
# 评论:1、Valine(推荐);2、Gitalk
|
||||
|
||||
# 动态背景效果: 0-关闭,1-动态线条(跟随鼠标)
|
||||
canvas_bg: 0
|
||||
|
||||
# 自定义鼠标样式,直接替换/images/mouse.cur文件
|
||||
mouse:
|
||||
enable: false
|
||||
path: /images/mouse.cur
|
||||
|
||||
# 鼠标点击效果:0-关闭,1-爱心,2-爆炸烟花,3-粒子烟花
|
||||
click_effect: 0
|
||||
|
||||
# 页面宽度自定义(不建议修改,可能造成布局混乱),article_width文章宽度,sidebar_width侧边栏宽度
|
||||
layout:
|
||||
article_width: 80rem
|
||||
sidebar_width: 8rem
|
||||
|
||||
# GitHub Ribbons-封面右上角的forkme,换样式直接在source/images目录下替换forkme图片
|
||||
github:
|
||||
# (关闭请设置为false)
|
||||
# 1、Valine[一款快速、简洁且高效的无后端评论系统](https://github.com/xCss/Valine)
|
||||
# 启用Valine必须先创建leancloud应用, 获取 id|key 填入即可
|
||||
leancloud:
|
||||
enable: true
|
||||
url: https://github.com/alkyl1978/hexo-theme-ayer
|
||||
app_id: #
|
||||
app_key: #
|
||||
# Valine配置
|
||||
valine:
|
||||
enable: true # 是否启用
|
||||
avatar: mp # 头像样式(https://valine.js.org/avatar.html)
|
||||
placeholder: 给我的文章加点评论吧~ # placeholder
|
||||
|
||||
# 网易云音乐插件
|
||||
music:
|
||||
enable: false
|
||||
# 播放器尺寸类型(1:小尺寸、2:大尺寸)
|
||||
type: 1
|
||||
id: 22707008 # 网易云分享的音乐ID(更换音乐请更改此配置项)
|
||||
autoPlay: true # 是否开启自动播放
|
||||
# 2、Gitalk(https://github.com/gitalk/gitalk)
|
||||
gitalk:
|
||||
enable: false # true
|
||||
clientID: # GitHub Application Client ID
|
||||
clientSecret: # Client Secret
|
||||
repo: # Repository name
|
||||
owner: # GitHub ID
|
||||
admin: # GitHub ID
|
||||
|
||||
# GitHub Ribbons(https://github.blog/2008-12-19-github-ribbons/)
|
||||
github:
|
||||
# (关闭请设置为false)
|
||||
url: https://github.com/Shen-Yu/hexo-theme-ayer
|
||||
|
||||
# fancybox(仅用于相册展示,若需要可配置albums)
|
||||
fancybox: true
|
||||
|
||||
# 访问量统计(不蒜子)
|
||||
busuanzi:
|
||||
enable: false
|
||||
enable: true
|
||||
|
||||
# 友盟cnzz统计(url填js代码src链接)
|
||||
cnzz:
|
||||
enable: false
|
||||
enable: true
|
||||
url: https://s9.cnzz.com/z_stat.php?id=1278069914&web_id=1278069914
|
||||
|
||||
# Google Analytics
|
||||
google_analytics: ""
|
||||
google_analytics: ''
|
||||
# 百度统计
|
||||
baidu_analytics: ""
|
||||
baidu_analytics: ''
|
||||
|
||||
yandex_analytics: true
|
||||
|
||||
# Mathjax数学公式
|
||||
# 数学公式
|
||||
mathjax: false
|
||||
|
||||
# Katex数学公式(allpost设置为false时只有头部设置math:true的文章才开启)
|
||||
# 需要更换hexo渲染器,npm un hexo-renderer-marked -S && npm i hexo-renderer-markdown-it-katex -S
|
||||
katex:
|
||||
enable: true # true
|
||||
allpost: true
|
||||
copy_tex: false
|
||||
|
||||
# mermaid流程图 三个选项缺一不可(https://mermaid-js.github.io/mermaid/)
|
||||
mermaid:
|
||||
enable: true
|
||||
cdn: https://cdn.staticfile.org/mermaid/8.14.0/mermaid.min.js
|
||||
theme: forest
|
||||
|
||||
# 网站成立年份(默认为 2019,若填入年份小于当前年份,则显示为 2018-2019 类似的格式)
|
||||
since: 2023
|
||||
since: 2015
|
||||
|
||||
# ICP备案信息尾部显示
|
||||
icp:
|
||||
enable: false
|
||||
url: "https://beian.miit.gov.cn/" # 备案链接
|
||||
text: "浙ICP备88888888" # 备案信息
|
||||
# 公安备案信息尾部显示
|
||||
gongan:
|
||||
enable: false
|
||||
img: /images/beian.png #公安备案图片
|
||||
url: "http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=01234567890123" #公安备案链接
|
||||
text: "浙公网安备01234567890123号" #公安备案信息
|
||||
|
||||
# 友情链接
|
||||
friends_link:
|
||||
Ayer主题: #网站名称
|
||||
#网站地址
|
||||
url: https://github.com/alkyl1978/hexo-theme-ayer
|
||||
#网站图片(可忽略不写)
|
||||
img: /images/ayer.png
|
||||
GitHub:
|
||||
url: https://github.com/alkyl1978
|
||||
img: /images/github.png
|
||||
码云:
|
||||
url: https://lp76.ru
|
||||
img: /images/gitee.png
|
||||
Hexo官网:
|
||||
url: https://hexo.io
|
||||
img: /images/hexo.png
|
||||
|
||||
# 评论:1、Valine(推荐);2、Gitalk;3、Twikoo;
|
||||
# 首页广告配置
|
||||
# 可以根据需要自行增加ad_3,ad_4...,留空则不显示,建议图片和url不要带ad等关键词,否则可能会被adblock等插件屏蔽
|
||||
#ads:
|
||||
# ad_1:
|
||||
# title: 云服务器限时秒杀
|
||||
# img: https://pic.imgdb.cn/item/62174b452ab3f51d912a5ccc.jpg
|
||||
# url: https://curl.qcloud.com/kvO7hb43
|
||||
# width: 300
|
||||
# ad_2:
|
||||
# title: vultr优惠vps
|
||||
# img: https://pic.imgdb.cn/item/62174b452ab3f51d912a5cd7.png
|
||||
# url: https://www.vultr.com/?ref=8630075
|
||||
# width: 300
|
||||
|
||||
# 网站开启加密访问,密码可设置任何字符
|
||||
lock:
|
||||
enable: true
|
||||
password: 123456
|
||||
#是否显示页脚信息(建议保留,有助于本主题的推广)
|
||||
pageFooter: true
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -x
|
||||
set -e
|
||||
npm i
|
||||
npm run build
|
||||
|
2
index.js
2
index.js
@ -1,2 +0,0 @@
|
||||
// 这个文件用来防止 hexo 5.0.0以上 使用 "hexo clean" 命令报错。
|
||||
// This file is used to prevent hexo above 5.0.0 from using "hexo clean" command error.
|
19
languages/de.yml
Normal file
19
languages/de.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: Kategorien
|
||||
search: Suche
|
||||
tags: Tags
|
||||
tagcloud: Tag Cloud
|
||||
tweets: Tweets
|
||||
prev: zurück
|
||||
next: weiter
|
||||
comment: Kommentare
|
||||
archive_a: Archiv
|
||||
archive_b: "Archive: %s"
|
||||
page: Seite %d
|
||||
recent_posts: letzter Beitrag
|
||||
newer: Neuer
|
||||
older: Älter
|
||||
share: Teilen
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Kategorie
|
||||
tag: Tag
|
@ -13,26 +13,7 @@ recent_posts: Recent Posts
|
||||
newer: Newer
|
||||
older: Older
|
||||
share: Share
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Category
|
||||
tag: Tag
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: Friends
|
||||
|
||||
post:
|
||||
word_count: Word count
|
||||
read_time: Reading time
|
||||
minutes: min
|
||||
reward: Donate
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright
|
||||
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
tag: Tag
|
@ -1,38 +0,0 @@
|
||||
categories: Categories
|
||||
search: Search
|
||||
tags: Tags
|
||||
tagcloud: Tag Cloud
|
||||
tweets: Tweets
|
||||
prev: Prev
|
||||
next: Next
|
||||
comment: Comments
|
||||
archive_a: Archives
|
||||
archive_b: "Archives: %s"
|
||||
page: Page %d
|
||||
recent_posts: Recent Posts
|
||||
newer: Newer
|
||||
older: Older
|
||||
share: Share
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
rss_feed: RSS Feed
|
||||
category: Category
|
||||
tag: Tag
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: Friends
|
||||
|
||||
post:
|
||||
word_count: Word count
|
||||
read_time: Reading time
|
||||
minutes: min
|
||||
reward: Donate
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright
|
||||
copyright_content: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
19
languages/es.yml
Normal file
19
languages/es.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: Categorías
|
||||
search: Buscar
|
||||
tags: Tags
|
||||
tagcloud: Nube de Tags
|
||||
tweets: Tweets
|
||||
prev: Previo
|
||||
next: Siguiente
|
||||
comment: Comentarios
|
||||
archive_a: Archivos
|
||||
archive_b: "Archivos: %s"
|
||||
page: Página %d
|
||||
recent_posts: Posts recientes
|
||||
newer: Nuevo
|
||||
older: Viejo
|
||||
share: Compartir
|
||||
powered_by: Construido por
|
||||
rss_feed: RSS
|
||||
category: Categoría
|
||||
tag: Tag
|
@ -13,26 +13,7 @@ recent_posts: Articles récents
|
||||
newer: Récent
|
||||
older: Ancien
|
||||
share: Partager
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
powered_by: Propulsé par
|
||||
rss_feed: Flux RSS
|
||||
category: Catégorie
|
||||
tag: Mot-clé
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: Mes amis
|
||||
|
||||
post:
|
||||
word_count: Nombre de mots
|
||||
read_time: Temps de lecture
|
||||
minutes: min
|
||||
reward: Récompense
|
||||
sticky: Haut
|
||||
copyright_title: Avis de copyright
|
||||
copyright_content: Le droit d'auteur appartient à l'auteur. Pour les réimpressions commerciales, veuillez contacter l'auteur pour autorisation. Pour les réimpressions non commerciales, veuillez indiquer la source.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
19
languages/ja.yml
Normal file
19
languages/ja.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: カテゴリ
|
||||
search: 検索
|
||||
tags: タグ
|
||||
tagcloud: タグクラウド
|
||||
tweets: ツイート
|
||||
prev: 戻る
|
||||
next: 次へ
|
||||
comment: コメント
|
||||
archive_a: アーカイブ
|
||||
archive_b: "アーカイブ: %s"
|
||||
page: ページ %d
|
||||
recent_posts: 最近の投稿
|
||||
newer: 次の記事
|
||||
older: 前の記事
|
||||
share: 共有
|
||||
powered_by: Powered by
|
||||
rss_feed: RSSフィード
|
||||
category: カテゴリ
|
||||
tag: タグ
|
19
languages/ko.yml
Normal file
19
languages/ko.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: 카테고리
|
||||
search: 검색
|
||||
tags: 태그
|
||||
tagcloud: 태그 클라우드
|
||||
tweets: 트윗
|
||||
prev: 이전
|
||||
next: 다음
|
||||
comment: 댓글
|
||||
archive_a: 아카이브
|
||||
archive_b: "아카이브: %s"
|
||||
page: 페이지 %d
|
||||
recent_posts: 최근 포스트
|
||||
newer: 최신
|
||||
older: 이전
|
||||
share: 공유
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: 카테고리
|
||||
tag: 태그
|
@ -1,3 +1,4 @@
|
||||
|
||||
categories: Categorieën
|
||||
search: Zoeken
|
||||
tags: Labels
|
||||
@ -13,26 +14,7 @@ recent_posts: Recente berichten
|
||||
newer: Nieuwer
|
||||
older: Ouder
|
||||
share: Delen
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Categorie
|
||||
tag: Label
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: Vrienden
|
||||
|
||||
post:
|
||||
word_count: Aantal woorden in artikel
|
||||
read_time: Leestijd
|
||||
minutes: min
|
||||
reward: Doneer
|
||||
sticky: Sticky
|
||||
copyright_title: Copyright melding
|
||||
copyright_content: Copyright is eigendom van de auteur. Neem voor commerciële herdrukken contact op met de auteur voor autorisatie. Geef de bron aan voor niet-commerciële herdrukken.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
|
@ -13,26 +13,7 @@ recent_posts: Siste innlegg
|
||||
newer: Newer
|
||||
older: Older
|
||||
share: Share
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Category
|
||||
tag: Tag
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: Venner
|
||||
|
||||
post:
|
||||
word_count: Ordtelling
|
||||
read_time: Lesetid
|
||||
minutes: min
|
||||
reward: Donere
|
||||
sticky: Sticky
|
||||
copyright_title: Opphavsrett
|
||||
copyright_content: Opphavsrett eies av forfatteren. For kommersielle opptrykk, vennligst kontakt forfatteren for godkjenning. For ikke-kommersiell uttrykk, vennligst oppgi kilden.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
tag: Tag
|
19
languages/pt.yml
Normal file
19
languages/pt.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: Categorias
|
||||
search: Buscar
|
||||
tags: Tags
|
||||
tagcloud: Nuvem de Tags
|
||||
tweets: Tweets
|
||||
prev: Anterior
|
||||
next: Próximo
|
||||
comment: Comentários
|
||||
archive_a: Arquivos
|
||||
archive_b: "Arquivos: %s"
|
||||
page: Página %d
|
||||
recent_posts: Postagens Recentes
|
||||
newer: Mais Recente
|
||||
older: Mais Antigo
|
||||
share: Compartilhar
|
||||
powered_by: Desenvolvido por
|
||||
rss_feed: Feed RSS
|
||||
category: Categoria
|
||||
tag: Tag
|
@ -13,26 +13,7 @@ recent_posts: Недавние записи
|
||||
newer: Следующий
|
||||
older: Предыдущий
|
||||
share: Поделиться
|
||||
powered_by: Powered by %s
|
||||
theme: Theme - %s
|
||||
powered_by: Создано с помощью
|
||||
rss_feed: RSS-каналы
|
||||
category: Категория
|
||||
tag: Метка
|
||||
site_visitors: Visitors
|
||||
page_views: Views
|
||||
friends: друзья
|
||||
|
||||
post:
|
||||
word_count: Количество слов
|
||||
read_time: Время чтения
|
||||
minutes: минут
|
||||
reward: вознаграждение
|
||||
sticky: липкий
|
||||
copyright_title: Авторские права
|
||||
copyright_content: Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
|
||||
|
||||
lock:
|
||||
lock_info: Please enter password
|
||||
lock_error: Incorrect password, please try again
|
||||
confirm_text: Ok
|
||||
cancel_text: Cancel
|
||||
tag: Метка
|
19
languages/zh-CN.yml
Normal file
19
languages/zh-CN.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: 分类
|
||||
search: 搜索
|
||||
tags: 标签
|
||||
tagcloud: 标签云
|
||||
tweets: 推文
|
||||
prev: 上一页
|
||||
next: 下一页
|
||||
comment: 留言
|
||||
archive_a: 归档
|
||||
archive_b: 归档:%s
|
||||
page: 第 %d 页
|
||||
recent_posts: 最新文章
|
||||
newer: Newer
|
||||
older: Older
|
||||
share: 分享
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Category
|
||||
tag: Tag
|
19
languages/zh-TW.yml
Normal file
19
languages/zh-TW.yml
Normal file
@ -0,0 +1,19 @@
|
||||
categories: 分類
|
||||
search: 搜尋
|
||||
tags: 標籤
|
||||
tagcloud: 標籤雲
|
||||
tweets: 推文
|
||||
prev: 上一頁
|
||||
next: 下一頁
|
||||
comment: 留言
|
||||
archive_a: 彙整
|
||||
archive_b: 彙整:%s
|
||||
page: 第 %d 頁
|
||||
recent_posts: 最新文章
|
||||
newer: Newer
|
||||
older: Older
|
||||
share: Share
|
||||
powered_by: Powered by
|
||||
rss_feed: RSS Feed
|
||||
category: Category
|
||||
tag: Tag
|
@ -1,9 +0,0 @@
|
||||
<ul class="ads">
|
||||
<% for (var i in theme.ads){ %>
|
||||
<li>
|
||||
<a href="<%= theme.ads[i].url %>">
|
||||
<img src="<%= theme.ads[i].img %>" width="<%= theme.ads[i].width %>" alt="<%=theme.ads[i].title %>">
|
||||
</a>
|
||||
</li>
|
||||
<% } %>
|
||||
</ul>
|
@ -1,57 +1,43 @@
|
||||
<%- js('/js/jquery-3.6.0.min') %> <%- js('/js/lazyload.min') %>
|
||||
<!-- Tocbot -->
|
||||
<% if (theme.toc && is_post() && !page.no_toc){ %> <%- js('/js/tocbot.min') %>
|
||||
<script>
|
||||
tocbot.init({
|
||||
tocSelector: ".tocbot",
|
||||
contentSelector: ".article-entry",
|
||||
headingSelector: "h1, h2, h3, h4, h5, h6",
|
||||
hasInnerContainers: true,
|
||||
scrollSmooth: true,
|
||||
scrollContainer: "main",
|
||||
positionFixedSelector: ".tocbot",
|
||||
positionFixedClass: "is-position-fixed",
|
||||
fixedSidebarOffset: "auto",
|
||||
});
|
||||
</script>
|
||||
<%- js('/js/jquery-2.0.3.min') %>
|
||||
<%- js('/js/jquery.justifiedGallery.min') %>
|
||||
<%- js('/js/lazyload.min') %>
|
||||
<%- js('/js/busuanzi-2.3.pure.min') %>
|
||||
<% if (theme.fancybox){ %>
|
||||
<%- js('fancybox/jquery.fancybox.min') %>
|
||||
<% } %>
|
||||
<script src="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.js"></script>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.css"
|
||||
/>
|
||||
<script src="https://cdn.staticfile.org/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js"></script>
|
||||
<%- js('dist/main') %>
|
||||
<!-- ImageViewer -->
|
||||
<% if (theme.image_viewer){ %> <%- partial('viewer') %> <% } %>
|
||||
<!-- MathJax -->
|
||||
<% if (theme.mathjax){ %> <%- partial('mathjax') %>
|
||||
|
||||
<% if (theme.toc && is_post()){ %>
|
||||
<%- js('/js/tocbot.min') %>
|
||||
<script>
|
||||
// Tocbot_v4.7.0 http://tscanlin.github.io/tocbot/
|
||||
tocbot.init({
|
||||
tocSelector: '.tocbot',
|
||||
contentSelector: '.article-entry',
|
||||
headingSelector: 'h1, h2, h3, h4, h5, h6',
|
||||
hasInnerContainers: true,
|
||||
scrollSmooth: true,
|
||||
positionFixedSelector: '.tocbot',
|
||||
positionFixedClass: 'is-position-fixed',
|
||||
fixedSidebarOffset: 'auto',
|
||||
});
|
||||
</script>
|
||||
<% } %>
|
||||
|
||||
<script>
|
||||
var ayerConfig = {
|
||||
mathjax: true,
|
||||
};
|
||||
</script>
|
||||
<% } %>
|
||||
<!-- Katex -->
|
||||
<% if (theme.katex.enable){ %> <%- partial('katex') %> <% } %>
|
||||
<!-- busuanzi -->
|
||||
<% if (theme.busuanzi && theme.busuanzi.enable){ %> <%-
|
||||
js('/js/busuanzi-2.3.pure.min') %> <% } %>
|
||||
<!-- ClickLove -->
|
||||
<% if (theme.click_effect===1){ %> <%- js('/js/clickLove') %> <% } %>
|
||||
<!-- ClickBoom1 -->
|
||||
<% if (theme.click_effect===2){ %>
|
||||
<script src="https://cdn.staticfile.org/animejs/3.2.1/anime.min.js"></script>
|
||||
<%- js('/js/clickBoom1') %> <% } %>
|
||||
<!-- ClickBoom2 -->
|
||||
<% if (theme.click_effect===3){ %> <%- js('/js/clickBoom2') %> <% } %>
|
||||
<!-- CodeCopy -->
|
||||
<% if (theme.copy_btn == true) { %> <%- css('/css/clipboard') %> <%-
|
||||
partial('post/clipboard') %> <% } %>
|
||||
<!-- CanvasBackground -->
|
||||
<% if (theme.canvas_bg == 1) { %> <%- js('/js/dz') %> <% } %>
|
||||
<script>
|
||||
if (window.mermaid) {
|
||||
mermaid.initialize({ theme: "<%= theme.mermaid.theme %>" });
|
||||
mathjax: <%=theme.mathjax %>
|
||||
}
|
||||
</script>
|
||||
|
||||
<%- js('js/ayer') %>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-modal@0.9.2/jquery.modal.min.css">
|
||||
|
||||
<% if (theme.mathjax){ %>
|
||||
<%- partial('mathjax') %>
|
||||
<% } %>
|
||||
|
||||
<script type="text/javascript" src="https://js.users.51.la/20544303.js"></script>
|
||||
|
||||
|
@ -1,10 +1,4 @@
|
||||
<section class="outer">
|
||||
<% if (theme.ads && theme.ads.length != 0){ %>
|
||||
<%- partial('ads') %>
|
||||
<% } %>
|
||||
<% if (theme.broadcast.enable && pagination == 2){ %>
|
||||
<%- partial('_partial/broadcast') %>
|
||||
<% } %>
|
||||
<article class="articles">
|
||||
<%
|
||||
var title = '';
|
||||
@ -15,9 +9,8 @@
|
||||
else title = __('archive_a');
|
||||
}
|
||||
%>
|
||||
<% if (pagination !== 2){ %>
|
||||
<h1 class="page-type-title"><%- title %></h1>
|
||||
<% } %>
|
||||
|
||||
<% if (pagination == 2){ %>
|
||||
<% page.posts.each(function(post){ %>
|
||||
<%- partial('article', {post: post, index: true}) %>
|
||||
|
@ -1,69 +1,64 @@
|
||||
<article
|
||||
id="<%= post.layout %>-<%= post.slug %>"
|
||||
class="article article-type-<%= post.layout %>"
|
||||
itemscope
|
||||
itemprop="blogPost"
|
||||
data-scroll-reveal
|
||||
>
|
||||
<article id="<%= post.layout %>-<%= post.slug %>" class="article article-type-<%= post.layout %>" itemscope
|
||||
itemprop="blogPost" data-scroll-reveal>
|
||||
|
||||
<div class="article-inner">
|
||||
<% if (post.link || post.title){ %>
|
||||
<header class="article-header">
|
||||
<%- partial('post/title', {class_name: 'article-title'}) %>
|
||||
<%- partial('post/author', {class_name: 'article-author'}) %>
|
||||
</header>
|
||||
<% } %> <% if (index || is_post()) { %>
|
||||
<% } %>
|
||||
|
||||
<% if (index || is_post()) { %>
|
||||
<div class="article-meta">
|
||||
<%- partial('post/date', {class_name: 'article-date', date_format: null})
|
||||
%> <%- partial('post/category') %> <% if(theme.word_count &&
|
||||
theme.word_count.enable && !post.no_word_count){%> <%-
|
||||
partial('post/word') %> <% } %>
|
||||
<%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
|
||||
<%- partial('post/category') %>
|
||||
</div>
|
||||
<% } %> <% if (theme.toc && is_post()){ %> <%- partial('post/tocbot') %> <%
|
||||
} %> <% if (theme.excerpt_all&&index){ %> <% }else{ %>
|
||||
<% } %>
|
||||
|
||||
<% if (theme.toc && is_post()){ %>
|
||||
<%- partial('post/tocbot') %>
|
||||
<% } %>
|
||||
|
||||
<div class="article-entry" itemprop="articleBody">
|
||||
<%- partial('post/justifiedGallery') %> <%- partial('post/gallery') %> <%
|
||||
if (post.excerpt && index){ %> <%- post.excerpt %> <% if
|
||||
(theme.excerpt_link){ %>
|
||||
<a class="article-more-link" href="<%- url_for(post.path) %>"
|
||||
><%= theme.excerpt_link %></a
|
||||
>
|
||||
<% } %> <% } else { %> <%- post.content %> <% } %>
|
||||
<!-- reward -->
|
||||
<% if ((theme.reward_type === 2 || (theme.reward_type === 1 &&
|
||||
post.reward)) && !index && !post.no_reward){ %>
|
||||
<div id="reword-out">
|
||||
<div id="reward-btn">
|
||||
<%= __('post.reward') %>
|
||||
</div>
|
||||
</div>
|
||||
<%- partial('post/justifiedGallery') %>
|
||||
<%- partial('post/gallery') %>
|
||||
<% if (post.excerpt && index){ %>
|
||||
<%- post.excerpt %>
|
||||
<% if (theme.excerpt_link){ %>
|
||||
<a class="article-more-link" href="<%- url_for(post.path) %>"><%= theme.excerpt_link %></a>
|
||||
<% } %>
|
||||
<% } else { %>
|
||||
<%- post.content %>
|
||||
<% } %>
|
||||
<!-- 打赏 -->
|
||||
<% if ((theme.reward_type === 2 || (theme.reward_type === 1 && post.reward)) && !index){ %>
|
||||
<div id="reward-btn">
|
||||
打赏
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } %>
|
||||
<!-- copyright -->
|
||||
<% if (((theme.copyright_type === 2) || (theme.copyright_type === 1 &&
|
||||
post.copyright)) && !index){ %>
|
||||
<div class="declare">
|
||||
<ul class="post-copyright">
|
||||
<li>
|
||||
<i class="ri-copyright-line"></i>
|
||||
<strong><%= __('post.copyright_title') %>: </strong>
|
||||
<% if (post.copyright_content) { %>
|
||||
<%= post.copyright_content %>
|
||||
<% } else { %>
|
||||
<%= __('post.copyright_content') %>
|
||||
<% } %>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<% } %>
|
||||
<footer class="article-footer">
|
||||
<% if (!index && theme.share_enable){ %> <%- partial('post/share') %> <% }
|
||||
%> <%- partial('post/tag') %>
|
||||
<a data-url="<%- post.permalink %>" data-id="<%= post._id %>"
|
||||
class="article-share-link"><%- theme.share_text %></a>
|
||||
<%- partial('post/tag') %>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
<% if (!index){ %> <%- partial('post/nav') %> <% } %> <% if (theme.valine &&
|
||||
theme.valine.enable && !post.no_valine){ %> <%- partial('post/valine', { key:
|
||||
post.slug, title: post.title, url: config.url+url_for(post.path) }) %> <% } %>
|
||||
<% if (!index){ %>
|
||||
<%- partial('post/nav') %>
|
||||
<% } %>
|
||||
|
||||
</article>
|
||||
<% if (theme.valine && theme.valine.enable){ %>
|
||||
<%- partial('post/valine', {
|
||||
key: post.slug,
|
||||
title: post.title,
|
||||
url: config.url+url_for(post.path)
|
||||
}) %>
|
||||
<% } %>
|
||||
|
||||
<% if (is_post()) { %>
|
||||
<%- partial('post/gitalk') %>
|
||||
<% } %>
|
||||
|
||||
</article>
|
@ -1,6 +1,6 @@
|
||||
<% if (theme.cover.enable) { %>
|
||||
<section class="cover">
|
||||
<% if (theme.github.enable && theme.github.url){ %>
|
||||
<% if (theme.github && theme.github.url){ %>
|
||||
<%# "GitHub Ribbons" %>
|
||||
<a class="forkMe" href="<%=theme.github.url%>"
|
||||
target="_blank"><img width="149" height="149" src="<%- url_for('images/forkme.png') %>"
|
||||
@ -12,13 +12,7 @@
|
||||
</div>
|
||||
<div class="cover-inner text-center text-white">
|
||||
<h1><a href="<%- url_for() %>"><%= config.title %></a></h1>
|
||||
<div id="subtitle-box">
|
||||
<% if (theme.subtitle.enable) { %>
|
||||
<span id="subtitle"></span>
|
||||
<% }else{ %>
|
||||
<span id="subtitle"><%= theme.subtitle.text %></span>
|
||||
<% } %>
|
||||
</div>
|
||||
<h2><%= config.subtitle %></h2>
|
||||
<div>
|
||||
<% if (theme.cover.logo) { %>
|
||||
<img
|
||||
@ -31,29 +25,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="cover-learn-more">
|
||||
<a href="javascript:void(0)" class="anchor"><i class="ri-arrow-down-line"></i></a>
|
||||
<a href="#main" class="anchor"><i class="ri-arrow-down-line"></i></a>
|
||||
</div>
|
||||
</section>
|
||||
<% } %>
|
||||
|
||||
<% if (theme.subtitle.enable){ %>
|
||||
<script src="https://cdn.staticfile.org/typed.js/2.0.12/typed.min.js"></script>
|
||||
<% } %>
|
||||
|
||||
<!-- Subtitle -->
|
||||
<% if (theme.subtitle.enable){ %>
|
||||
<script>
|
||||
try {
|
||||
var typed = new Typed("#subtitle", {
|
||||
strings: ['<%= theme.subtitle.text %>', '<%= theme.subtitle.text2 %>', '<%= theme.subtitle.text3 %>'],
|
||||
startDelay: <%= theme.subtitle.startDelay %>,
|
||||
typeSpeed: <%= theme.subtitle.typeSpeed %>,
|
||||
loop: <%= theme.subtitle.loop %>,
|
||||
backSpeed: <%= theme.subtitle.backSpeed %>,
|
||||
showCursor: <%= theme.subtitle.showCursor %>
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
</script>
|
||||
<% } %>
|
||||
<% } %>
|
@ -1,46 +0,0 @@
|
||||
<% if (theme.broadcast.type===1 && theme.broadcast.text){ %>
|
||||
<div class="notice" style="margin-top:50px">
|
||||
<i class="ri-heart-fill"></i>
|
||||
<div class="notice-content"><%= theme.broadcast.text %></div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if (theme.broadcast.type===2){ %>
|
||||
<div class="notice" style="margin-top:50px">
|
||||
<i class="ri-heart-fill"></i>
|
||||
<div class="notice-content" id="broad"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
fetch('https://v1.hitokoto.cn')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
document.getElementById("broad").innerHTML = data.hitokoto;
|
||||
})
|
||||
.catch(console.error)
|
||||
</script>
|
||||
<% } %>
|
||||
<style>
|
||||
.notice {
|
||||
padding: 20px;
|
||||
border: 1px dashed #e6e6e6;
|
||||
color: #969696;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
background: #fbfbfb50;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.notice i {
|
||||
float: left;
|
||||
color: #999;
|
||||
font-size: 16px;
|
||||
padding-right: 10px;
|
||||
vertical-align: middle;
|
||||
margin-top: -2px;
|
||||
}
|
||||
|
||||
.notice-content {
|
||||
display: initial;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
@ -1,8 +0,0 @@
|
||||
<div class="totop" id="totop">
|
||||
<i class="ri-arrow-up-line"></i>
|
||||
</div>
|
||||
<% if (theme.darkmode){ %>
|
||||
<div class="todark" id="todark">
|
||||
<i class="ri-moon-line"></i>
|
||||
</div>
|
||||
<% } %>
|
@ -1,20 +1,30 @@
|
||||
<footer class="footer">
|
||||
<div class="outer">
|
||||
<ul>
|
||||
<ul class="list-inline">
|
||||
<li>
|
||||
Copyrights ©
|
||||
©
|
||||
<% if (theme.since && !isNaN(theme.since) && theme.since < date(new Date(), 'YYYY')) { %><%- theme.since%>-<% } %><%= date(new Date(), 'YYYY') %>
|
||||
<i class="ri-heart-fill heart_icon"></i> <%= config.author || config.title %>
|
||||
<%= config.author || config.title %>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<% if (theme.pageFooter){ %>
|
||||
<% var hexoLink = '<a href="https://hexo.io" target="_blank">Hexo</a>'; %>
|
||||
<% var themeLink = '<a href="https://github.com/alkyl1978/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
|
||||
<%- __('powered_by', hexoLink) %>
|
||||
<span class="division">|</span>
|
||||
<%- __('theme', themeLink) %>
|
||||
<% var themeLink = '<a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a>'; %>
|
||||
<%- hexoLink %> Theme <%- themeLink %> by shenyu
|
||||
<% } %>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="list-inline">
|
||||
<li>
|
||||
<% if (theme.busuanzi && theme.busuanzi.enable){ %>
|
||||
<%# "不蒜子统计" %>
|
||||
<%- partial('post/busuanzi') %>
|
||||
<% } %>
|
||||
</li>
|
||||
<li>
|
||||
<!-- cnzz统计 -->
|
||||
<% if (theme.cnzz&&theme.cnzz.enable){ %>
|
||||
<script type="text/javascript" src='<%= theme.cnzz.url%>'></script>
|
||||
<% } %>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -1,10 +1,14 @@
|
||||
<% if (theme.google_analytics){ %>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= theme.google_analytics %>"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', '<%= theme.google_analytics %>');
|
||||
<%# "Google Analytics" %>
|
||||
<script type="text/javascript">
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '<%= theme.google_analytics %>', 'auto');
|
||||
ga('send', 'pageview');
|
||||
|
||||
</script>
|
||||
<%# "End Google Analytics" %>
|
||||
<% } %>
|
||||
|
@ -1,58 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<% if (config.language){ %>
|
||||
<html lang="<%= config.language %>">
|
||||
<% } else { %>
|
||||
<html lang="en">
|
||||
<% }%>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<% var title = page.title; if (is_archive()) { title = __('archive_a'); if
|
||||
(is_month()) { title += ': ' + page.year + '/' + page.month; } else if
|
||||
(is_year()) { title += ': ' + page.year; } } else if (is_category()) {
|
||||
title = page.category; } else if (is_tag()) { title = __('tag') + ': ' +
|
||||
page.tag; } %> <% if (page.keywords){ %>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="<%= page.keywords %>,<%= config.keywords %>"
|
||||
/>
|
||||
<% } else if (config.keywords){ %>
|
||||
<meta name="keywords" content="<%= config.keywords %>" />
|
||||
<% } %> <% if (page.description){ %>
|
||||
<meta name="description" content="<%= page.description %>" />
|
||||
<% } else if (config.description){ %>
|
||||
<meta name="description" content="<%= config.description %>" />
|
||||
<% } %>
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<title><% if (title){ %><%= title %> | <% } %> <%= config.title %></title>
|
||||
<% if (theme.favicon){ %>
|
||||
<link rel="shortcut icon" href="<%- theme.favicon %>" />
|
||||
<% } %> <%- css('dist/main') %>
|
||||
<%- css('css/fonts/remixicon') %>
|
||||
<%- css('css/custom') %> <% if (theme.progressBar){ %>
|
||||
<script src="https://cdn.staticfile.org/pace/1.2.4/pace.min.js"></script>
|
||||
<% } %>
|
||||
<%- partial('google-analytics') %>
|
||||
<%- partial('baidu-analytics') %>
|
||||
<%- partial('yandex-analytics') %>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
|
||||
/>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<% var title = page.title; if (is_archive()) { title = __('archive_a'); if
|
||||
(is_month()) { title += ': ' + page.year + '/' + page.month; } else if
|
||||
(is_year()) { title += ': ' + page.year; } } else if (is_category()) { title
|
||||
= __('categories.ejs') + ': ' + page.categories; } else if (is_tag()) {
|
||||
title = __('tag') + ': ' + page.tag; } %> <% if (page.keywords){ %>
|
||||
<meta name="keywords" content="<%= page.keywords %>,<%= config.keywords %>" />
|
||||
<% } else if (config.keywords){ %>
|
||||
<meta name="keywords" content="<%= config.keywords %>" />
|
||||
<% } %> <% if (page.description){ %>
|
||||
<meta name="description" content="<%= page.description %>" />
|
||||
<% } else if (config.description){ %>
|
||||
<meta name="description" content="<%= config.description %>" />
|
||||
<% } %>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||
<title>
|
||||
<% if (title){ %><%= title %> | <% } %> <%= config.title %>
|
||||
</title>
|
||||
<% if (theme.favicon){ %>
|
||||
<link rel="shortcut icon" href="<%- theme.favicon %>" />
|
||||
<% } %>
|
||||
<%- css('css/style') %> <% if (theme.fancybox){ %> <%-
|
||||
css('fancybox/jquery.fancybox.min') %> <% } %> <%- js('/js/pace.min.js') %>
|
||||
|
||||
<!-- mermaid -->
|
||||
<% if (theme.mermaid.enable) { %>
|
||||
<script src="<%= theme.mermaid.cdn %>"></script>
|
||||
<% } %>
|
||||
<style>
|
||||
.swal2-styled.swal2-confirm {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
</html>
|
||||
</html>
|
||||
<%- partial('google-analytics') %>
|
||||
<%- partial('baidu-analytics') %>
|
||||
</head>
|
||||
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<% if ( theme.katex.enable ) { %>
|
||||
<% if( theme.katex.allpost || page.math ) { %>
|
||||
<link rel="stylesheet" href="https://cdn.staticfile.org/KaTeX/0.15.1/katex.min.css">
|
||||
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/katex.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/auto-render.min.js"></script>
|
||||
<% if ( theme.katex.copy_tex ) { %>
|
||||
<script src="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/copy-tex.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.staticfile.org/KaTeX/0.15.1/contrib/copy-tex.min.css">
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% } %>
|
@ -1,37 +0,0 @@
|
||||
<% if (theme.lock.enable){ %>
|
||||
<script>
|
||||
const password = "<%= theme.lock.password %>";
|
||||
const lock_password = window.sessionStorage.getItem("lock_password");
|
||||
console.log(password, lock_password);
|
||||
if (lock_password !== password) {
|
||||
Swal.fire({
|
||||
title: "<%= __('lock.lock_info') %>",
|
||||
input: "text",
|
||||
inputAttributes: {
|
||||
autocapitalize: "off",
|
||||
},
|
||||
showCancelButton: false,
|
||||
showLoaderOnConfirm: true,
|
||||
allowOutsideClick: false,
|
||||
confirmButtonText: "<%= __('lock.confirm_text') %>",
|
||||
}).then((result) => {
|
||||
console.log(result);
|
||||
if (result.isConfirmed) {
|
||||
console.log(password);
|
||||
if (result.value === password) {
|
||||
window.sessionStorage.setItem("lock_password", result.value);
|
||||
} else {
|
||||
Swal.fire({
|
||||
icon: "error",
|
||||
title: "<%= __('lock.lock_error') %>",
|
||||
confirmButtonText: "<%= __('lock.confirm_text') %>",
|
||||
allowOutsideClick: false,
|
||||
}).then(() => {
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<% } %>
|
@ -15,5 +15,4 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="https://cdn.staticfile.org/mathjax/2.7.7/MathJax.js"></script>
|
||||
<script src="https://cdn.staticfile.org/mathjax/2.7.7/config/TeX-AMS-MML_HTMLorMML-full.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.6/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
@ -1,17 +1,18 @@
|
||||
<% if (post.albums && post.albums.length){ %>
|
||||
<div class="article-albums">
|
||||
<ul class="article-albums-photos" id="basicExample">
|
||||
<% post.albums.forEach(function(photo){ %>
|
||||
<div class="article-albums">
|
||||
<ul class="article-albums-photos" id="basicExample">
|
||||
<% post.albums.forEach(function(photo){ %>
|
||||
|
||||
<li class="article-albums-item" data-scroll-reveal>
|
||||
<img class="lazy" data-original="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>"
|
||||
style="cursor: pointer;">
|
||||
<% if (photo && photo.length > 1){ %>
|
||||
<span class="article-albums-caption"> <%- photo[1] %> </span>
|
||||
<% } %>
|
||||
</li>
|
||||
<li class="article-albums-item" data-scroll-reveal>
|
||||
<a class="article-albums-img fancybox" data-fancybox="images" data-caption="<%- photo[1] %>" href="<%- url_for(photo[0]) %>" rel="gallery_<%= post._id %>" title="<%- photo[1] %>">
|
||||
<img class="lazy" data-original="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>">
|
||||
</a>
|
||||
<% if (photo && photo.length > 1){ %>
|
||||
<span class="article-albums-caption"> <%- photo[1] %> </span>
|
||||
<% } %>
|
||||
</li>
|
||||
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<% } %>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</div>
|
||||
<% } %>
|
||||
|
@ -1,8 +0,0 @@
|
||||
<% if (post.authors && post.authors.length){ %>
|
||||
<div class="<%= class_name %>" <% if (!index){ %> style="text-align: center" <% }%>>
|
||||
作者:<% for (var i = 0; i < post.authors.length - 1; i++) { %>
|
||||
<%= post.authors[i]%> ,
|
||||
<% }%> <%= post.authors[post.authors.length - 1] %>
|
||||
</div>
|
||||
|
||||
<% } %>
|
@ -1,5 +1,4 @@
|
||||
<span>
|
||||
<span><i class="ri-user-3-fill"></i><%- __('site_visitors') %>:<span id="busuanzi_value_site_uv"></span></span>
|
||||
<span class="division">|</span>
|
||||
<span><i class="ri-eye-fill"></i><%- __('page_views') %>:<span id="busuanzi_value_page_pv"></span></span>
|
||||
</span>
|
||||
<ul class="list-inline">
|
||||
<li>PV:<span id="busuanzi_value_page_pv"></span></li>
|
||||
<li>UV:<span id="busuanzi_value_site_uv"></span></li>
|
||||
</ul>
|
@ -1,54 +0,0 @@
|
||||
<script src="https://cdn.staticfile.org/clipboard.js/2.0.10/clipboard.min.js"></script>
|
||||
<script>
|
||||
function wait(callback, seconds) {
|
||||
var timelag = null;
|
||||
timelag = window.setTimeout(callback, seconds);
|
||||
}
|
||||
!function (e, t, a) {
|
||||
var initCopyCode = function(){
|
||||
var copyHtml = '';
|
||||
copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
|
||||
copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
|
||||
copyHtml += '</button>';
|
||||
$(".highlight .code pre").before(copyHtml);
|
||||
$(".article pre code").before(copyHtml);
|
||||
var clipboard = new ClipboardJS('.btn-copy', {
|
||||
target: function(trigger) {
|
||||
return trigger.nextElementSibling;
|
||||
}
|
||||
});
|
||||
clipboard.on('success', function(e) {
|
||||
let $btn = $(e.trigger);
|
||||
$btn.addClass('copied');
|
||||
let $icon = $($btn.find('i'));
|
||||
$icon.removeClass('ri-file-copy-2-line');
|
||||
$icon.addClass('ri-checkbox-circle-line');
|
||||
let $span = $($btn.find('span'));
|
||||
$span[0].innerText = 'COPIED';
|
||||
|
||||
wait(function () { // 等待两秒钟后恢复
|
||||
$icon.removeClass('ri-checkbox-circle-line');
|
||||
$icon.addClass('ri-file-copy-2-line');
|
||||
$span[0].innerText = 'COPY';
|
||||
}, 2000);
|
||||
});
|
||||
clipboard.on('error', function(e) {
|
||||
e.clearSelection();
|
||||
let $btn = $(e.trigger);
|
||||
$btn.addClass('copy-failed');
|
||||
let $icon = $($btn.find('i'));
|
||||
$icon.removeClass('ri-file-copy-2-line');
|
||||
$icon.addClass('ri-time-line');
|
||||
let $span = $($btn.find('span'));
|
||||
$span[0].innerText = 'COPY FAILED';
|
||||
|
||||
wait(function () { // 等待两秒钟后恢复
|
||||
$icon.removeClass('ri-time-line');
|
||||
$icon.addClass('ri-file-copy-2-line');
|
||||
$span[0].innerText = 'COPY';
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
initCopyCode();
|
||||
}(window, document);
|
||||
</script>
|
21
layout/_partial/post/gitalk.ejs
Normal file
21
layout/_partial/post/gitalk.ejs
Normal file
@ -0,0 +1,21 @@
|
||||
<% if (theme.gitalk.enable) { %>
|
||||
<div class="gitalk" id="gitalk-container"></div>
|
||||
<%- css('https://cdn.jsdelivr.net/npm/gitalk@1.5.0/dist/gitalk.css') %>
|
||||
<%- js('https://cdn.jsdelivr.net/npm/gitalk@1.5.0/dist/gitalk.min.js') %>
|
||||
<%- js('https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js') %>
|
||||
<script type="text/javascript">
|
||||
var gitalk = new Gitalk({
|
||||
clientID: '<%- theme.gitalk.clientID %>',
|
||||
clientSecret: '<%- theme.gitalk.clientSecret %>',
|
||||
repo: '<%- theme.gitalk.repo %>',
|
||||
owner: '<%- theme.gitalk.owner %>',
|
||||
admin: ['<%- theme.gitalk.admin %>'],
|
||||
// id: location.pathname, // Ensure uniqueness and length less than 50
|
||||
id: md5(location.pathname),
|
||||
distractionFreeMode: false, // Facebook-like distraction free mode
|
||||
pagerDirection: 'last'
|
||||
})
|
||||
|
||||
gitalk.render('gitalk-container')
|
||||
</script>
|
||||
<% } %>
|
@ -1,9 +1,12 @@
|
||||
<% if (post.albums && post.albums.length){ %>
|
||||
<div class="justified-gallery" id="gallery">
|
||||
<div class="justified-gallery" id="gallery">
|
||||
<% post.albums.forEach(function(photo){ %>
|
||||
<div>
|
||||
<img src="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>" style="cursor: pointer;">
|
||||
</div>
|
||||
<div>
|
||||
<a class="fancybox" data-fancybox="images" data-caption="<%- photo[1] %>" href="<%- url_for(photo[0]) %>" rel="gallery_<%= post._id %>" title="<%- photo[1] %>">
|
||||
<img src="<%- url_for(photo[0]) %>" itemprop="image" alt="<%- photo[1] %>">
|
||||
</a>
|
||||
</div>
|
||||
<% }) %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
|
@ -1,52 +0,0 @@
|
||||
<%
|
||||
var sUrl = url.replace(/index\.html$/, '');
|
||||
sUrl = /^(http:|https:)\/\//.test(sUrl) ? sUrl : 'http:' + sUrl;
|
||||
%>
|
||||
<div class="share-btn">
|
||||
<span class="share-sns share-outer">
|
||||
<i class="ri-share-forward-line"></i>
|
||||
<%- theme.share_text %>
|
||||
</span>
|
||||
<div class="share-wrap">
|
||||
<i class="arrow"></i>
|
||||
<div class="share-icons">
|
||||
<% if( theme.share_china ){ %>
|
||||
<a class="weibo share-sns" href="javascript:;" data-type="weibo">
|
||||
<i class="ri-weibo-fill"></i>
|
||||
</a>
|
||||
<a class="weixin share-sns wxFab" href="javascript:;" data-type="weixin">
|
||||
<i class="ri-wechat-fill"></i>
|
||||
</a>
|
||||
<a class="qq share-sns" href="javascript:;" data-type="qq">
|
||||
<i class="ri-qq-fill"></i>
|
||||
</a>
|
||||
<a class="douban share-sns" href="javascript:;" data-type="douban">
|
||||
<i class="ri-douban-line"></i>
|
||||
</a>
|
||||
<!-- <a class="qzone share-sns" href="javascript:;" data-type="qzone">
|
||||
<i class="icon icon-qzone"></i>
|
||||
</a> -->
|
||||
<% } %>
|
||||
<% if( theme.share_eng ) { %>
|
||||
<a class="facebook share-sns" href="javascript:;" data-type="facebook">
|
||||
<i class="ri-facebook-circle-fill"></i>
|
||||
</a>
|
||||
<a class="twitter share-sns" href="javascript:;" data-type="twitter">
|
||||
<i class="ri-twitter-fill"></i>
|
||||
</a>
|
||||
<a class="google share-sns" href="javascript:;" data-type="google">
|
||||
<i class="ri-google-fill"></i>
|
||||
</a>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="wx-share-modal">
|
||||
<a class="modal-close" href="javascript:;"><i class="ri-close-circle-line"></i></a>
|
||||
<p>扫一扫,分享到微信</p>
|
||||
<div class="wx-qrcode">
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div id="share-mask"></div>
|
@ -3,6 +3,4 @@
|
||||
show_count: false,
|
||||
class: 'article-tag'
|
||||
}) %>
|
||||
<% } %>
|
||||
<!-- реклама-->
|
||||
<div id="v9NMhvNxS5mPbQZeytTmfkhUc0UNVLw"></div>
|
||||
<% } %>
|
@ -7,10 +7,11 @@
|
||||
<% } else if (post.title){ %> <% if (index){ %>
|
||||
<h2 itemprop="name">
|
||||
<a class="<%= class_name %>" href="<%- url_for(post.path) %>"
|
||||
><%= post.title %><%- partial('topping') %></a>
|
||||
><%= post.title %></a
|
||||
>
|
||||
</h2>
|
||||
<% } else { %>
|
||||
<h1 class="<%= class_name %> sea-center" style="border-left:0" itemprop="name">
|
||||
<%= post.title %>
|
||||
</h1>
|
||||
<% } %> <% } %>
|
||||
<% } %> <%- partial('topping') %> <% } %>
|
||||
|
@ -1,3 +1,5 @@
|
||||
<% if (is_home() && post.top) { %>
|
||||
<i class="article-topping"><%= __('post.sticky') %></i>
|
||||
<div class="article-topping">
|
||||
<i class="ri-umbrella-line"></i>
|
||||
</div>
|
||||
<% } %>
|
@ -1,9 +0,0 @@
|
||||
<% if (!index && theme.twikoo && theme.twikoo.enable){ %>
|
||||
<script src="https://cdn.staticfile.org/twikoo/1.4.18/twikoo.all.min.js"></script>
|
||||
<div id="twikoo" class="twikoo"></div>
|
||||
<script>
|
||||
twikoo.init({
|
||||
envId: "<%- theme.twikoo.envId %>"
|
||||
})
|
||||
</script>
|
||||
<% } %>
|
@ -1,48 +1,51 @@
|
||||
<% if (!index && theme.leancloud && theme.leancloud.enable && post.comments){ %>
|
||||
<% if (!index && theme.leancloud && theme.leancloud.enable){ %>
|
||||
<!-- valine评论 -->
|
||||
<div id="vcomments-box">
|
||||
<div id="vcomments"></div>
|
||||
<div id="vcomments">
|
||||
</div>
|
||||
</div>
|
||||
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/valine/1.4.16/Valine.min.js"></script>
|
||||
<script src='https://cdn.jsdelivr.net/npm/valine@1.3.10/dist/Valine.min.js'></script>
|
||||
<script>
|
||||
new Valine({
|
||||
el: "#vcomments",
|
||||
app_id: "<%- theme.leancloud.app_id %>",
|
||||
app_key: "<%- theme.leancloud.app_key %>",
|
||||
path: window.location.pathname,
|
||||
avatar: "<%- theme.valine.avatar %>",
|
||||
placeholder: "<%- theme.valine.placeholder %>",
|
||||
recordIP: true,
|
||||
});
|
||||
const infoEle = document.querySelector("#vcomments .info");
|
||||
if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
|
||||
infoEle.childNodes.forEach(function (item) {
|
||||
item.parentNode.removeChild(item);
|
||||
new Valine({
|
||||
el: '#vcomments',
|
||||
notify: false,
|
||||
verify: false,
|
||||
app_id: '<%- theme.leancloud.app_id %>',
|
||||
app_key: '<%- theme.leancloud.app_key %>',
|
||||
path: window.location.pathname,
|
||||
avatar: '<%- theme.valine.avatar %>',
|
||||
placeholder: '<%- theme.valine.placeholder %>',
|
||||
recordIP: true
|
||||
});
|
||||
}
|
||||
const infoEle = document.querySelector('#vcomments .info');
|
||||
if (infoEle && infoEle.childNodes && infoEle.childNodes.length > 0) {
|
||||
infoEle.childNodes.forEach(function (item) {
|
||||
item.parentNode.removeChild(item);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
#vcomments-box {
|
||||
padding: 5px 30px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
#vcomments-box {
|
||||
padding: 5px 0px;
|
||||
padding: 5px 30px;
|
||||
}
|
||||
}
|
||||
|
||||
#vcomments-box #vcomments {
|
||||
background-color: #fff;
|
||||
}
|
||||
@media screen and (max-width: 800px) {
|
||||
#vcomments-box {
|
||||
padding: 5px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.v .vlist .vcard .vh {
|
||||
padding-right: 20px;
|
||||
}
|
||||
#vcomments-box #vcomments {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.v .vlist .vcard {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.v .vlist .vcard .vh {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.v .vlist .vcard {
|
||||
padding-left: 10px;
|
||||
}
|
||||
</style>
|
||||
<% } %>
|
||||
<% } %>
|
@ -1,20 +0,0 @@
|
||||
<% if (!theme.word_count.only_article_visit || (!index && theme.word_count.only_article_visit)){ %>
|
||||
<div class="word_count">
|
||||
<span class="post-time">
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="ri-quill-pen-line"></i>
|
||||
<span class="post-meta-item-text"> <%= __('post.word_count') %>:</span>
|
||||
<span class="post-count"><%= wordcount(post.content) %></span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span class="post-time">
|
||||
|
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="ri-book-open-line"></i>
|
||||
<span class="post-meta-item-text"> <%= __('post.read_time') %>≈</span>
|
||||
<span class="post-count"><%= min2read(post.content) %> <%= __('post.minutes') %></span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<% } %>
|
3
layout/_partial/totop.ejs
Normal file
3
layout/_partial/totop.ejs
Normal file
@ -0,0 +1,3 @@
|
||||
<div class="totop" id="totop">
|
||||
<i class="ri-arrow-up-line"></i>
|
||||
</div>
|
@ -1,106 +0,0 @@
|
||||
<!-- Root element of PhotoSwipe. Must have class pswp. -->
|
||||
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
|
||||
<!-- Background of PhotoSwipe.
|
||||
It's a separate element as animating opacity is faster than rgba(). -->
|
||||
<div class="pswp__bg"></div>
|
||||
|
||||
<!-- Slides wrapper with overflow:hidden. -->
|
||||
<div class="pswp__scroll-wrap">
|
||||
|
||||
<!-- Container that holds slides.
|
||||
PhotoSwipe keeps only 3 of them in the DOM to save memory.
|
||||
Don't modify these 3 pswp__item elements, data is added later on. -->
|
||||
<div class="pswp__container">
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
</div>
|
||||
|
||||
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
||||
<div class="pswp__ui pswp__ui--hidden">
|
||||
|
||||
<div class="pswp__top-bar">
|
||||
|
||||
<!-- Controls are self-explanatory. Order can be changed. -->
|
||||
|
||||
<div class="pswp__counter"></div>
|
||||
|
||||
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
|
||||
|
||||
<button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>
|
||||
|
||||
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
|
||||
|
||||
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
|
||||
|
||||
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
|
||||
<!-- element will get class pswp__preloader--active when preloader is running -->
|
||||
<div class="pswp__preloader">
|
||||
<div class="pswp__preloader__icn">
|
||||
<div class="pswp__preloader__cut">
|
||||
<div class="pswp__preloader__donut"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
||||
<div class="pswp__share-tooltip"></div>
|
||||
</div>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
|
||||
</button>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
|
||||
</button>
|
||||
|
||||
<div class="pswp__caption">
|
||||
<div class="pswp__caption__center"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/default-skin/default-skin.min.css">
|
||||
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script>
|
||||
|
||||
<script>
|
||||
function viewer_init() {
|
||||
let pswpElement = document.querySelectorAll('.pswp')[0];
|
||||
let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))
|
||||
|
||||
$imgArr.forEach(($em, i) => {
|
||||
$em.onclick = () => {
|
||||
// slider展开状态
|
||||
// todo: 这样不好,后面改成状态
|
||||
if (document.querySelector('.left-col.show')) return
|
||||
let items = []
|
||||
$imgArr.forEach(($em2, i2) => {
|
||||
let img = $em2.getAttribute('data-idx', i2)
|
||||
let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
|
||||
let title = $em2.getAttribute('alt')
|
||||
// 获得原图尺寸
|
||||
const image = new Image()
|
||||
image.src = src
|
||||
items.push({
|
||||
src: src,
|
||||
w: image.width || $em2.width,
|
||||
h: image.height || $em2.height,
|
||||
title: title
|
||||
})
|
||||
})
|
||||
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
|
||||
index: parseInt(i)
|
||||
});
|
||||
gallery.init()
|
||||
}
|
||||
})
|
||||
}
|
||||
viewer_init()
|
||||
</script>
|
@ -1,18 +0,0 @@
|
||||
<% if (theme.yandex_analytics){ %>
|
||||
<!-- Yandex.Metrika counter -->
|
||||
<script type="text/javascript" >
|
||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||
m[i].l=1*new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
||||
|
||||
ym(88722337, "init", {
|
||||
clickmap:true,
|
||||
trackLinks:true,
|
||||
accurateTrackBounce:true
|
||||
});
|
||||
</script>
|
||||
<noscript><div><img src="https://mc.yandex.ru/watch/88722337" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
||||
<!-- /Yandex.Metrika counter -->
|
||||
<% } %>
|
@ -1,8 +1,6 @@
|
||||
<section class="outer">
|
||||
<% if (site.categories.length){ %>
|
||||
<h1 class="page-type-title"><%= __('categories') %></h1>
|
||||
<div class="categories-box">
|
||||
<%- list_categories() %>
|
||||
</div>
|
||||
<%- list_categories({show_count: theme.show_count}) %>
|
||||
<% } %>
|
||||
</section>
|
@ -1,20 +0,0 @@
|
||||
<section class="outer">
|
||||
<% if(theme.friends_link && theme.friends_link.length != 0){ %>
|
||||
<h1 class="page-type-title"><%= __('friends') %></h1>
|
||||
<ul id="friends_link">
|
||||
<% for (var i in theme.friends_link){ %>
|
||||
<li class="friends_li">
|
||||
<a href="<%- url_for(theme.friends_link[i].url) %>" target="_blank" class="search-title"
|
||||
<% if (theme.friends_link[i].description){ %>title="<%= theme.friends_link[i].description %>" <% } %>>
|
||||
<% if (theme.friends_link[i].img){ %>
|
||||
<img src="<%- url_for(theme.friends_link[i].img) %>">
|
||||
<% } else { %>
|
||||
<i class="ri-user-fill"></i>
|
||||
<% } %>
|
||||
<%= i %>
|
||||
</a>
|
||||
</li>
|
||||
<% } %>
|
||||
</ul>
|
||||
<%}%>
|
||||
</section>
|
@ -2,37 +2,23 @@
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<% if (theme.click_effect===2){ %>
|
||||
<canvas class="fireworks"></canvas>
|
||||
<style>
|
||||
.fireworks {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 99999;
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
<% } %>
|
||||
<% if (theme.click_effect===3){ %>
|
||||
<canvas width="1777" height="841"
|
||||
style="position: fixed; left: 0px; top: 0px; z-index: 99999; pointer-events: none;"></canvas>
|
||||
<% } %>
|
||||
<main class="content on">
|
||||
<main class="content">
|
||||
<%- body %>
|
||||
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
|
||||
<%- partial('_partial/footer', null, {cache: !config.relative_link}) %>
|
||||
<div class="to_top">
|
||||
<%- partial('_partial/totop') %>
|
||||
</div>
|
||||
</main>
|
||||
<div class="float_btns">
|
||||
<%- partial('_partial/float-btns') %>
|
||||
</div>
|
||||
<aside class="sidebar on">
|
||||
<%- partial('_partial/sidebar') %>
|
||||
</aside>
|
||||
<%- partial('_partial/modal') %>
|
||||
<%- partial('_partial/after-footer') %>
|
||||
<%- partial('_partial/lock') %>
|
||||
<% if (theme.toc && is_post()){ %>
|
||||
<aside class="sidebar">
|
||||
<% } else { %>
|
||||
<aside class="sidebar">
|
||||
<% } %>
|
||||
<%- partial('_partial/sidebar') %>
|
||||
</aside>
|
||||
<%- partial('_partial/modal') %>
|
||||
<%- partial('_partial/after-footer') %>
|
||||
</div>
|
||||
<script src="//bbckdl.mfcewkrob.com/v/9NMhvNxS5mPbQZeytTmfkhUc0UNVLw" charset="utf-8" type="text/javascript" async></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,4 +0,0 @@
|
||||
<section class="outer">
|
||||
<h1 class="page-type-title"><%= page.title %></h1>
|
||||
<%- page.content %>
|
||||
</section>
|
@ -1,12 +0,0 @@
|
||||
const fs = require('fs')
|
||||
|
||||
if (fs.existsSync('../hexo/package.json')) {
|
||||
const version = JSON.parse(fs.readFileSync('../hexo/package.json')).version
|
||||
if (version.split('.')[0] === '5') {
|
||||
const configPath = '../../_config.ayer.yml'
|
||||
if (!fs.existsSync(configPath)) {
|
||||
fs.writeFileSync(configPath, fs.readFileSync('./_config.yml'))
|
||||
}
|
||||
fs.unlinkSync('./_config.yml')
|
||||
}
|
||||
}
|
3586
package-lock.json
generated
3586
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
36
package.json
36
package.json
@ -1,32 +1,18 @@
|
||||
{
|
||||
"name": "hexo-theme-ayer",
|
||||
"version": "1.9.7-0",
|
||||
"description": "a clean and elegant theme for hexo.",
|
||||
"name": "ayer",
|
||||
"version": "1.0.0",
|
||||
"description": "ayer 是一个轻量优雅的 Hexo 主题",
|
||||
"main": "index.js",
|
||||
"dependencies": {},
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"dev": "rollup -c -w",
|
||||
"build": "rollup -c",
|
||||
"test": "stylint source-src/css/style.styl -c .stylintrc"
|
||||
},
|
||||
"source": "source-src/main.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://git.lp76.ru/aleks/hexo-theme-ayer.git"
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [
|
||||
"ayer",
|
||||
"hexo",
|
||||
"theme",
|
||||
"blog",
|
||||
"ayer"
|
||||
"light"
|
||||
],
|
||||
"author": "alkyl1978 <alkyl1978@yandex.ru>",
|
||||
"homepage": "https://lp76.ru/",
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.13",
|
||||
"rollup": "^2.63.0",
|
||||
"rollup-plugin-styles": "^4.0.0",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
"stylint": "^2.0.0",
|
||||
"stylus": "^0.59.0",
|
||||
"stylus-loader": "^7.1.0"
|
||||
}
|
||||
"author": "shenyu",
|
||||
"license": "ISC"
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
import autoprefixer from "autoprefixer";
|
||||
import styles from "rollup-plugin-styles";
|
||||
import { terser } from "rollup-plugin-terser";
|
||||
|
||||
export default {
|
||||
input: "source-src/main.js",
|
||||
output: {
|
||||
dir: "source/dist",
|
||||
format: "iife",
|
||||
assetFileNames: "[name][extname]",
|
||||
},
|
||||
plugins: [
|
||||
styles({ mode: "extract", minimize: true, plugins: [autoprefixer()] }),
|
||||
terser(),
|
||||
],
|
||||
};
|
Binary file not shown.
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 241 KiB |
@ -1,6 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
// 生成meta `generator`
|
||||
meta_generator: true
|
||||
};
|
@ -1,11 +0,0 @@
|
||||
/* global hexo */
|
||||
|
||||
"use strict";
|
||||
|
||||
hexo.on("generateBefore", () => {
|
||||
require("./lib/merge-configs")(hexo);
|
||||
});
|
||||
|
||||
hexo.on("generateAfter", () => {
|
||||
require("./lib/hello")(hexo);
|
||||
});
|
@ -1,19 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = (hexo) => {
|
||||
hexo.log.info(`
|
||||
----------------------------------------------------
|
||||
| |
|
||||
| __ ________ _____ |
|
||||
| /\\\\ \\ / / ____| __ \\ |
|
||||
| / \\\\ \\_/ /| |__ | |__) | |
|
||||
| / /\\ \\\\ / | __| | _ / |
|
||||
| / ____ \\| | | |____| | \\ \\ |
|
||||
| /_/ \\_\\_| |______|_| \\_\\ |
|
||||
| |
|
||||
| Thank you for using Ayer theme ! |
|
||||
| Docs: https://github.com/Shen-Yu/hexo-theme-ayer |
|
||||
| |
|
||||
----------------------------------------------------
|
||||
`);
|
||||
};
|
@ -1,22 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
const objUtil = require("../../utils/object");
|
||||
const { isNotEmptyObject } = require("../../utils/object");
|
||||
|
||||
module.exports = (hexo) => {
|
||||
|
||||
if (isNotEmptyObject(hexo.config.theme_config)) {
|
||||
hexo.theme.config = objUtil.merge(
|
||||
{},
|
||||
hexo.theme.config,
|
||||
hexo.config.theme_config
|
||||
);
|
||||
hexo.log.info(
|
||||
"[Ayer] Merge theme config from theme_config in _config.yml"
|
||||
);
|
||||
}
|
||||
hexo.log.debug(
|
||||
"[Ayer] Output theme config:\n",
|
||||
JSON.stringify(hexo.theme.config, undefined, 2)
|
||||
);
|
||||
};
|
@ -1,13 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const metaGeneratorPath = './meta_generator';
|
||||
|
||||
module.exports = hexo => {
|
||||
/* const {
|
||||
filter
|
||||
} = hexo.extend; */
|
||||
// filter.register('after_render:html', require('./meta_generator'));
|
||||
};
|
||||
|
||||
// 保持过滤器最先执行
|
||||
hexo.extend.filter.register('after_render:html', require(metaGeneratorPath), 1);
|
@ -1,17 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const defaultConfig = require('../default_config');
|
||||
|
||||
function hexoMetaGeneratorInject(data) {
|
||||
const config = defaultConfig;
|
||||
if (!config.meta_generator || !data ||
|
||||
data.match(/<meta\s+name=['|"]?generator['|"]?/i)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const hexoGeneratorTag = `\n <meta name="generator" content="hexo-theme-ayer">`;
|
||||
|
||||
return data.replace('</title>', '</title>' + hexoGeneratorTag);
|
||||
}
|
||||
|
||||
module.exports = hexoMetaGeneratorInject;
|
@ -1,9 +0,0 @@
|
||||
/* global hexo */
|
||||
|
||||
'use strict';
|
||||
|
||||
/** 自定义链接生成 */
|
||||
hexo.extend.helper.register('ayer_plus_vendors', function (url) {
|
||||
if (url.startsWith('//')) return url;
|
||||
return this.url_for(`${url}`);
|
||||
});
|
@ -1,39 +0,0 @@
|
||||
var util = require('hexo-util');
|
||||
var stripHTML = util.stripHTML;
|
||||
|
||||
var counter = function (content) {
|
||||
content = stripHTML(content);
|
||||
const cn = (content.match(/[\u4E00-\u9FA5]/g) || []).length;
|
||||
const en = (content.replace(/[\u4E00-\u9FA5]/g, '').match(/[a-zA-Z0-9_\u0392-\u03c9\u0400-\u04FF]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|[\u00E4\u00C4\u00E5\u00C5\u00F6\u00D6]+|\w+/g) || []).length;
|
||||
return [cn, en];
|
||||
};
|
||||
|
||||
hexo.extend.helper.register('min2read', function (content, {
|
||||
cn = 300,
|
||||
en = 160
|
||||
} = {}) {
|
||||
var len = counter(content);
|
||||
var readingTime = len[0] / cn + len[1] / en;
|
||||
return readingTime < 1 ? '1' : parseInt(readingTime, 10);
|
||||
});
|
||||
|
||||
hexo.extend.helper.register('wordcount', function (content) {
|
||||
var len = counter(content);
|
||||
var count = len[0] + len[1];
|
||||
if (count < 1000) {
|
||||
return count;
|
||||
}
|
||||
return Math.round(count / 100) / 10 + 'k';
|
||||
});
|
||||
|
||||
hexo.extend.helper.register('totalcount', function (site) {
|
||||
var count = 0;
|
||||
site.posts.forEach(function (post) {
|
||||
var len = counter(post.content);
|
||||
count += len[0] + len[1];
|
||||
});
|
||||
if (count < 1000) {
|
||||
return count;
|
||||
}
|
||||
return Math.round(count / 100) / 10 + 'k';
|
||||
});
|
@ -1,25 +0,0 @@
|
||||
/* global hexo */
|
||||
|
||||
'use strict';
|
||||
|
||||
// Hexo事件:https://hexo.io/zh-cn/api/events
|
||||
|
||||
/** 在静态文件生成前发布 */
|
||||
hexo.on('generateBefore', () => {
|
||||
// Merge config.
|
||||
//require('./../filters/index')(hexo);
|
||||
});
|
||||
|
||||
/** 在文章文件建立后发布。该事件返回文章参数。 */
|
||||
hexo.on('new', function (post) {
|
||||
//console.log(post)
|
||||
});
|
||||
|
||||
/** 在文章开始渲染前执行 */
|
||||
hexo.extend.filter.register('before_post_render', function (data) {
|
||||
//var config = hexo.config;
|
||||
//console.log(3);
|
||||
//console.log(config);
|
||||
//console.log(hexo.theme.config);
|
||||
|
||||
});
|
@ -1,12 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const joinPath = function(base, relative) {
|
||||
if (relative && /^https*:\/\//.test(relative)) {
|
||||
return relative;
|
||||
}
|
||||
return relative
|
||||
? base.replace(/\/+$/, '') + '/' + relative.replace(/^\/+/, '')
|
||||
: base;
|
||||
};
|
||||
|
||||
module.exports = joinPath;
|
@ -1,31 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const isObject = (obj) => {
|
||||
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
||||
};
|
||||
|
||||
const isNotEmptyObject = (obj) => {
|
||||
return obj && typeof obj === 'object' && Object.getOwnPropertyNames(obj).length !== 0;
|
||||
};
|
||||
|
||||
const merge = (target, ...sources) => {
|
||||
for (const source of sources) {
|
||||
for (const key in source) {
|
||||
if (!Object.prototype.hasOwnProperty.call(source, key)) {
|
||||
continue;
|
||||
}
|
||||
if (isObject(target[key]) && isObject(source[key])) {
|
||||
merge(target[key], source[key]);
|
||||
} else {
|
||||
target[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return target;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
isObject,
|
||||
isNotEmptyObject,
|
||||
merge
|
||||
};
|
@ -1,38 +0,0 @@
|
||||
darkmode()
|
||||
background: rgba(0,0,0,.6)
|
||||
*
|
||||
color: #f2f2f2
|
||||
.article-entry code
|
||||
background: darken(#ddd,10%) !important
|
||||
color: #c7254e !important
|
||||
.article-header .article-title,.share-outer i,.category-list .category-list-item i,.category-list a:hover .category-list-item,.article-date, .article-category .article-category-link, .archive-year-wrap .archive-year, .archive-article-date,a.toc-link,.tag-list > .tag-list-item:before,.article-tag-list:before
|
||||
color: darken(#fff,10%) !important
|
||||
.share-icons a i,.float_btns i,#reward .reward-p,#reward .reward-p i,.local-search-input
|
||||
color: darken(#999,20%) !important
|
||||
.is-position-fixed
|
||||
background-color transparent
|
||||
.v *
|
||||
color: #555 !important
|
||||
.tag-list > .tag-list-item .tag-list-link,.article-tag-list .article-tag-list-link
|
||||
background: darken(#fff,10%) !important
|
||||
color: #555 !important
|
||||
#vcomments-box #vcomments
|
||||
background-color rgba(255,255,255,.1) !important
|
||||
*
|
||||
color #f1f1f1 !important
|
||||
.v .vbtn
|
||||
background-color: transparent !important
|
||||
.v .vlist .vcard .vhead .vsys
|
||||
border: 1px solid #f1f1f1 !important
|
||||
background-color: transparent !important
|
||||
input::-webkit-input-placeholder
|
||||
color: #ccc;
|
||||
input::-moz-input-placeholder
|
||||
color: #ccc;
|
||||
input::-ms-input-placeholder
|
||||
color: #ccc;
|
||||
.categories-box a
|
||||
color: #f2f2f2;
|
||||
#friends_link .friends_li a
|
||||
background-color rgba(255,255,255,.15)
|
||||
color: #fff;
|
@ -1,15 +0,0 @@
|
||||
.ads
|
||||
position absolute
|
||||
right 0
|
||||
top 50px
|
||||
z-index 2
|
||||
transform translateX(110%)
|
||||
ul,li
|
||||
list-unstyled()
|
||||
img
|
||||
display block
|
||||
margin-bottom 15px
|
||||
|
||||
@media (max-width: 768px)
|
||||
.ads
|
||||
display none
|
@ -1,52 +0,0 @@
|
||||
// Categories
|
||||
.categories-box
|
||||
max-width 320px
|
||||
margin-right -.5rem
|
||||
margin-left -.5rem
|
||||
border-left 1px solid #eee
|
||||
span
|
||||
padding-left: 5px;
|
||||
color: #aaa;
|
||||
font-size: 14px
|
||||
ul li, ol li
|
||||
list-unstyled()
|
||||
margin: 15px 0;
|
||||
padding-left: 15px;
|
||||
padding-bottom: 12px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
word-wrap: break-word;
|
||||
border-bottom: 1px solid #eee;
|
||||
&:last-child
|
||||
margin-bottom 0
|
||||
border-bottom 0 solid #000
|
||||
i
|
||||
font-style normal
|
||||
margin-left 10px
|
||||
color: darken(water,45%)
|
||||
a
|
||||
display inline-block
|
||||
vertical-align middle
|
||||
text-decoration: none
|
||||
color: body-color
|
||||
&:hover
|
||||
opacity .8
|
||||
&:before
|
||||
content "\efde"
|
||||
font-family remixicon
|
||||
margin-right .5rem
|
||||
display inline-block
|
||||
vertical-align middle
|
||||
ul ul,ol ul,ul ol,ol ol
|
||||
list-unstyled()
|
||||
margin 0 20px
|
||||
ul ul li,ol ul li,ul ol li,ol ol li
|
||||
list-unstyled()
|
||||
border: none;
|
||||
padding-bottom: 0;
|
||||
.category-list-count:before, .tag-list-count:before, .archive-list-count:before
|
||||
content: "(";
|
||||
.category-list-count:after, .tag-list-count:after, .archive-list-count:after
|
||||
content: ")";
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
@keyframes footerHeartBeat
|
||||
0%
|
||||
transform: scale(1)
|
||||
50%
|
||||
transform: scale(1.2)
|
||||
100%
|
||||
transform: scale(1)
|
||||
|
||||
.footer
|
||||
border-top 2px solid #f6f6f6
|
||||
padding 3rem 0
|
||||
font-size 115%
|
||||
.outer
|
||||
&>ul
|
||||
position relative
|
||||
display flex
|
||||
justify-content center
|
||||
li
|
||||
display inline-block
|
||||
padding .3rem 0
|
||||
a
|
||||
text-decoration none
|
||||
.division
|
||||
display inline
|
||||
margin 0 5px
|
||||
i
|
||||
margin 0 2px
|
||||
font-style normal
|
||||
transform translateY(2px)
|
||||
span
|
||||
margin-right 6px
|
||||
|
||||
.heart_icon
|
||||
display: inline-block;
|
||||
margin: 0 0.4rem;
|
||||
font-size: 1em;
|
||||
color: #f00;
|
||||
-webkit-animation: footerHeartBeat 1.2s infinite;
|
||||
-moz-animation: footerHeartBeat 1.2s infinite;
|
||||
-o-animation: footerHeartBeat 1.2s infinite;
|
||||
-ms-animation: footerHeartBeat 1.2s infinite;
|
||||
animation: footerHeartBeat 1.2s infinite;
|
||||
animation-duration: 1.2s;
|
||||
animation-timing-function: ease;
|
||||
animation-delay: 0s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: normal;
|
||||
animation-fill-mode: none;
|
||||
animation-play-state: running;
|
||||
animation-name: footerHeartBeat;
|
@ -1,29 +0,0 @@
|
||||
// friends
|
||||
#friends_link
|
||||
.friends_li
|
||||
list-style none
|
||||
float left
|
||||
a
|
||||
padding 15px 25px
|
||||
display flex
|
||||
align-items center
|
||||
justify-content space-between
|
||||
font-size 17px
|
||||
text-decoration none
|
||||
background-color rgba(6,129,208,.1)
|
||||
color #000
|
||||
border-radius 6px
|
||||
margin-right 20px
|
||||
margin-bottom 20px
|
||||
img
|
||||
display inline-block
|
||||
width 40px
|
||||
height 40px
|
||||
border-radius 50%
|
||||
margin-right 10px
|
||||
i
|
||||
font-size 25px
|
||||
width 40px
|
||||
height 40px
|
||||
&:hover
|
||||
background-color rgba(6,129,208,.15)
|
@ -1,260 +0,0 @@
|
||||
highlight-background = #2d2d2d
|
||||
highlight-code = #f2f2f2
|
||||
highlight-code-color = #c7254e
|
||||
highlight-current-line = grey
|
||||
highlight-selection = #000
|
||||
highlight-foreground = #dedede
|
||||
highlight-comment = #8e908c
|
||||
highlight-red = #f2777a
|
||||
highlight-orange = #f99157
|
||||
highlight-yellow = #ffcc66
|
||||
highlight-green = #99cc99
|
||||
highlight-aqua = #66cccc
|
||||
highlight-blue = #6699cc
|
||||
highlight-purple = #cc99cc
|
||||
|
||||
.article-entry pre,
|
||||
.article-entry .highlight {
|
||||
background: highlight-background;
|
||||
margin: 10px 0;
|
||||
padding: 10px 10px;
|
||||
overflow: hidden;
|
||||
overflow-x: auto;
|
||||
color: highlight-foreground;
|
||||
font-size: 0.9em;
|
||||
line-height: 1.5;
|
||||
|
||||
/** 滚动条整体部分 */
|
||||
&::-webkit-scrollbar {
|
||||
height: 10px;
|
||||
width: 7px;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
/* 高宽分别对应横竖滚动条的尺寸 */
|
||||
/* width: 10px;
|
||||
height: 10px;
|
||||
background: #ccc;
|
||||
border-radius: 0; */
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
/* 滚动条里面小方块 */
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
-ms-border-radius: 6px;
|
||||
-o-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb:hover {
|
||||
-webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
|
||||
/* Webkit browsers */
|
||||
-moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
|
||||
/* Firefox */
|
||||
-ms-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
|
||||
/* IE9 */
|
||||
-o-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
|
||||
/* Opera(Old) */
|
||||
box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);
|
||||
/* IE9+, News */
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
/** 滚动条里面的轨道 */
|
||||
&::-webkit-scrollbar-track {
|
||||
/* box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); */
|
||||
background: #ededed;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.article-entry .highlight .gutter pre,
|
||||
.article-entry .highlight .gutter pre .line,
|
||||
.article-entry .gist .gist-file .gist-data .line-numbers {
|
||||
/* color: #666; */
|
||||
color: highlight-current-line;
|
||||
}
|
||||
|
||||
.article-entry pre,
|
||||
.article-entry code {
|
||||
font-family: Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace
|
||||
}
|
||||
|
||||
.article-entry code {
|
||||
background: #eee;
|
||||
color: highlight-code-color;
|
||||
padding: 0 0.3em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.article-entry pre code {
|
||||
background: none;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
color: highlight-foreground;
|
||||
}
|
||||
|
||||
.article-entry .highlight {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.article-entry .highlight pre {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.article-entry .highlight table {
|
||||
margin: 0;
|
||||
width: auto;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.article-entry .highlight td {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.article-entry .highlight figcaption {
|
||||
color: highlight-comment;
|
||||
line-height: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.article-entry .highlight figcaption:before,
|
||||
.article-entry .highlight figcaption:after {
|
||||
content: "";
|
||||
display: table;
|
||||
}
|
||||
|
||||
.article-entry .highlight figcaption:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.article-entry .highlight figcaption a {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.article-entry .highlight .gutter pre {
|
||||
text-align: right;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.article-entry .highlight .gutter pre .line {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.article-entry .highlight .line {
|
||||
color: highlight-foreground;
|
||||
min-height: 19px;
|
||||
}
|
||||
|
||||
.article-entry .gist {
|
||||
margin: 0 -20px;
|
||||
border-style: solid;
|
||||
border-color: #ddd;
|
||||
border-width: 1px 0;
|
||||
background: #272822;
|
||||
padding: 15px 20px 15px 0;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file {
|
||||
border: none;
|
||||
font-family: "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-data {
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-data .line-numbers {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0 20px 0 0;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-data .line-data {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .highlight {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-meta {
|
||||
background: #272822;
|
||||
color: highlight-comment;
|
||||
font: 0.85em "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
text-shadow: 0 0;
|
||||
padding: 0;
|
||||
margin-top: 1em;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-meta a {
|
||||
color: #258fb8;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.article-entry .gist .gist-file .gist-meta a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
pre .comment {
|
||||
/* color: #75715e; */
|
||||
color: highlight-green
|
||||
}
|
||||
|
||||
pre .keyword,
|
||||
pre .function .keyword,
|
||||
pre .class .params {
|
||||
color: #66d9ef;
|
||||
}
|
||||
|
||||
pre .tag,
|
||||
pre .doctype,
|
||||
pre .params,
|
||||
pre .function,
|
||||
pre .css .value {
|
||||
color: highlight-foreground;
|
||||
}
|
||||
|
||||
pre .css~* .tag,
|
||||
pre .title,
|
||||
pre .at_rule,
|
||||
pre .at_rule .keyword,
|
||||
pre .preprocessor,
|
||||
pre .preprocessor .keyword {
|
||||
color: #f92672;
|
||||
}
|
||||
|
||||
pre .attribute,
|
||||
pre .built_in,
|
||||
pre .class,
|
||||
pre .css~* .class,
|
||||
pre .function .title {
|
||||
color: #a6e22e;
|
||||
}
|
||||
|
||||
pre .value,
|
||||
pre .string {
|
||||
color: highlight-foreground;
|
||||
}
|
||||
|
||||
pre .number {
|
||||
color: highlight-purple
|
||||
}
|
||||
|
||||
pre .id,
|
||||
pre .css~* .id {
|
||||
color: #fd971f;
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
.share-wrap {
|
||||
min-height: 20px;
|
||||
display: none;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 250px;
|
||||
background-color #f5f5f5;
|
||||
border-radius: 2px;
|
||||
.arrow {
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
top: -3px;
|
||||
right:20px;
|
||||
display: block;
|
||||
width 10px;
|
||||
height 10px;
|
||||
transform: rotate(45deg);
|
||||
background-color #f5f5f5;
|
||||
}
|
||||
}
|
||||
|
||||
.share-btn {
|
||||
float: right;
|
||||
position: relative;
|
||||
}
|
||||
.share-outer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
border: none;
|
||||
text-shadow: none;
|
||||
text-decoration: none;
|
||||
width auto;
|
||||
color: link-color;
|
||||
height: 28px;
|
||||
line-height: 26px;
|
||||
i{
|
||||
font-size: 18px;
|
||||
margin-right 5px;
|
||||
color lighten(link-color,30%)
|
||||
}
|
||||
&:hover {
|
||||
transform: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.share-icons {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
a {
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
zoom: 1;
|
||||
margin: 3px;
|
||||
transition: 0.3s;
|
||||
text-align: center;
|
||||
color: main-color;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
line-height: 26px;
|
||||
font-size: 13px;
|
||||
i {
|
||||
font-size: 24px
|
||||
}
|
||||
&.weibo {
|
||||
color weibo-color
|
||||
}
|
||||
&.weixin {
|
||||
color wechat-color
|
||||
}
|
||||
&.qq {
|
||||
color qq-color
|
||||
}
|
||||
&.douban {
|
||||
color douban-color
|
||||
}
|
||||
&.twitter {
|
||||
color twitter-color
|
||||
}
|
||||
&.facebook {
|
||||
color facebook-color
|
||||
}
|
||||
&.google {
|
||||
color google-color
|
||||
}
|
||||
&:active {
|
||||
color: ocean;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wx-share-modal {
|
||||
position: fixed;
|
||||
top: 24%;
|
||||
left: 50%;
|
||||
z-index: 9999;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
color: #727272;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||
opacity: 0;
|
||||
transform: translate(-50%, -200%);
|
||||
|
||||
p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
&.ready {
|
||||
visibility: 0;
|
||||
display: block;
|
||||
transform: translate(-50%, -100%);
|
||||
transition: .3s;
|
||||
}
|
||||
|
||||
&.in {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
|
||||
.modal-close {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 15px;
|
||||
color: rgba(0, 0, 0, .2);
|
||||
font-size: 16px;
|
||||
line-height: 20px;
|
||||
i{
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
color: rgba(0, 0, 0, .4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#share-mask{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
background-color rgba(0,0,0,.6);
|
||||
z-index: 999;
|
||||
display: none;
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
// Tags
|
||||
|
||||
.tag-list
|
||||
list-unstyled()
|
||||
margin-right -.5rem
|
||||
margin-left -.5rem
|
||||
> .tag-list-item
|
||||
display inline-block
|
||||
padding .5rem 1rem
|
||||
font-size 120%
|
||||
&:before
|
||||
content "\eec3"
|
||||
font-family remixicon
|
||||
margin-right .5rem
|
||||
display inline-block
|
||||
vertical-align middle
|
||||
color: tag-color
|
||||
.tag-list-link
|
||||
display inline-block
|
||||
vertical-align middle
|
||||
text-decoration: none
|
||||
height 30px
|
||||
line-height 30px
|
||||
padding: 0 15px
|
||||
font-size: 1.5rem
|
||||
border-radius: 15px
|
||||
background-color tag-color
|
||||
color white
|
||||
box-shadow: 0 3px 5px rgba(0,0,0,0.12)
|
||||
transition: .2s
|
||||
&:hover
|
||||
transform: scale(1.1)
|
@ -1,76 +0,0 @@
|
||||
|
||||
.tocbot
|
||||
padding 20px
|
||||
position absolute
|
||||
right -28rem
|
||||
top 14rem
|
||||
font-size 80%
|
||||
opacity .95
|
||||
max-width 255px
|
||||
border-radius 8px
|
||||
>.toc-list
|
||||
position relative
|
||||
overflow-x hidden
|
||||
overflow-y scroll
|
||||
max-height 70vh
|
||||
|
||||
>.toc-list::-webkit-scrollbar
|
||||
width 4px
|
||||
|
||||
>.toc-list::-webkit-scrollbar-thumb
|
||||
border-radius 10px
|
||||
-webkit-box-shadow inset 0 0 5px rgba(0,0,0,0.2)
|
||||
background rgba(0,0,0,0.2)
|
||||
|
||||
>.toc-list::-webkit-scrollbar-track
|
||||
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2)
|
||||
border-radius: 0
|
||||
background: rgba(0,0,0,0.1)
|
||||
|
||||
|
||||
|
||||
.toc-list
|
||||
list-unstyled()
|
||||
padding-left 1rem
|
||||
|
||||
|
||||
a.toc-link
|
||||
height 100%
|
||||
color sea-dark
|
||||
text-decoration none
|
||||
font-size 115%
|
||||
|
||||
|
||||
.is-collapsible
|
||||
max-height 1000px
|
||||
overflow hidden
|
||||
transition all 300ms ease-in-out
|
||||
|
||||
|
||||
.is-collapsed
|
||||
max-height 0
|
||||
|
||||
|
||||
.is-position-fixed
|
||||
position fixed !important
|
||||
top 0
|
||||
right 6rem
|
||||
background-color #fff
|
||||
z-index 996
|
||||
|
||||
// Left line before pseudo element.
|
||||
.toc-link::before
|
||||
background-color water
|
||||
content ' '
|
||||
display inline-block
|
||||
height inherit
|
||||
left 0
|
||||
margin-top -1px
|
||||
position absolute
|
||||
width 2px
|
||||
|
||||
.is-active-link::before
|
||||
background-color sea-blue
|
||||
|
||||
.is-active-link
|
||||
font-weight 700
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Remix Icon v2.1.0
|
||||
* https://remixicon.com
|
||||
* https://github.com/Remix-Design/RemixIcon
|
||||
*
|
||||
* Copyright RemixIcon.com
|
||||
* Released under the Apache License Version 2.0
|
||||
*
|
||||
* Date: 2019-11-03
|
||||
*/
|
||||
|
||||
// variables
|
||||
remixicon-font-path = './remixicon/fonts/' !default;
|
||||
|
||||
@font-face
|
||||
font-family: remixicon;
|
||||
src: url(remixicon-font-path +'remixicon.eot'); /* IE9*/
|
||||
src: url(remixicon-font-path +'remixicon.eot#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url(remixicon-font-path +'remixicon.woff2') format("woff2"),
|
||||
url(remixicon-font-path +'remixicon.woff') format("woff"),
|
||||
url(remixicon-font-path +'remixicon.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
|
||||
url(remixicon-font-path +'remixicon.svg#remixicon') format('svg'); /* iOS 4.1- */
|
||||
font-display: swap;
|
||||
|
||||
|
||||
[class^="ri-"], [class*=" ri-"]
|
||||
display inline-block;
|
||||
font-family: 'remixicon' !important;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
@ -1,221 +0,0 @@
|
||||
(function ($) {
|
||||
// Search
|
||||
let $searchWrap = $(".search-form-wrap"),
|
||||
isSearchAnim = false,
|
||||
searchAnimDuration = 200;
|
||||
|
||||
const startSearchAnim = () => {
|
||||
isSearchAnim = true;
|
||||
};
|
||||
|
||||
const stopSearchAnim = (callback) => {
|
||||
setTimeout(function () {
|
||||
isSearchAnim = false;
|
||||
callback && callback();
|
||||
}, searchAnimDuration);
|
||||
};
|
||||
|
||||
$(".nav-item-search").on("click", () => {
|
||||
if (isSearchAnim) return;
|
||||
startSearchAnim();
|
||||
$searchWrap.addClass("on");
|
||||
stopSearchAnim(function () {
|
||||
$(".local-search-input").focus();
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on("mouseup", (e) => {
|
||||
const _con = $(".local-search");
|
||||
if (!_con.is(e.target) && _con.has(e.target).length === 0) {
|
||||
$searchWrap.removeClass("on");
|
||||
}
|
||||
});
|
||||
|
||||
// Not recommended in mobile, /search.xml is actually large.
|
||||
if ($(".local-search").length) {
|
||||
$.getScript("/js/search.js", function () {
|
||||
searchFunc("/search.xml", "local-search-input", "local-search-result");
|
||||
});
|
||||
}
|
||||
|
||||
// Mobile Detect
|
||||
const isMobile = {
|
||||
Android: function () {
|
||||
return navigator.userAgent.match(/Android/i);
|
||||
},
|
||||
BlackBerry: function () {
|
||||
return navigator.userAgent.match(/BlackBerry/i);
|
||||
},
|
||||
iOS: function () {
|
||||
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
|
||||
},
|
||||
Opera: function () {
|
||||
return navigator.userAgent.match(/Opera Mini/i);
|
||||
},
|
||||
Windows: function () {
|
||||
return navigator.userAgent.match(/IEMobile/i);
|
||||
},
|
||||
any: function () {
|
||||
return (
|
||||
isMobile.Android() ||
|
||||
isMobile.BlackBerry() ||
|
||||
isMobile.iOS() ||
|
||||
isMobile.Opera() ||
|
||||
isMobile.Windows()
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
// Share
|
||||
$(".share-outer").on("click", () => $(".share-wrap").fadeToggle());
|
||||
|
||||
// Lazyload
|
||||
$("img.lazy").lazyload({
|
||||
effect: "fadeIn",
|
||||
});
|
||||
|
||||
// JustifiedGallery
|
||||
$("#gallery").justifiedGallery({
|
||||
rowHeight: 200,
|
||||
margins: 5,
|
||||
});
|
||||
|
||||
// ScrollDown
|
||||
$(document).ready(function ($) {
|
||||
$(".anchor").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
$("main").animate({ scrollTop: $(".cover").height() }, "smooth");
|
||||
});
|
||||
});
|
||||
|
||||
// To Top
|
||||
(() => {
|
||||
// When to show the scroll link
|
||||
// higher number = scroll link appears further down the page
|
||||
const upperLimit = 1000;
|
||||
|
||||
// Our scroll link element
|
||||
const scrollElem = $("#totop");
|
||||
|
||||
// Scroll to top speed
|
||||
const scrollSpeed = 1000;
|
||||
|
||||
// Show and hide the scroll to top link based on scroll position
|
||||
scrollElem.hide();
|
||||
$(".content").on("scroll", () => {
|
||||
const scrollTop = $(".content").scrollTop();
|
||||
if (scrollTop > upperLimit) {
|
||||
$(scrollElem).stop().fadeTo(200, 0.6); // fade back in
|
||||
} else {
|
||||
$(scrollElem).stop().fadeTo(200, 0); // fade out
|
||||
}
|
||||
});
|
||||
|
||||
// Scroll to top animation on click
|
||||
$(scrollElem).on("click", () => {
|
||||
$(".content").animate({ scrollTop: 0 }, scrollSpeed);
|
||||
return false;
|
||||
});
|
||||
})();
|
||||
|
||||
// Caption
|
||||
$(".article-entry").each(function (i) {
|
||||
$(this)
|
||||
.find("img")
|
||||
.each(function () {
|
||||
if ($(this).parent().is("a")) return;
|
||||
|
||||
const { alt } = this;
|
||||
|
||||
if (alt) $(this).after('<span class="caption">' + alt + "</span>");
|
||||
});
|
||||
});
|
||||
|
||||
// Mobile Nav
|
||||
const $content = $(".content"),
|
||||
$sidebar = $(".sidebar");
|
||||
|
||||
$(".navbar-toggle").on("click", () => {
|
||||
$(".content,.sidebar").addClass("anim");
|
||||
$content.toggleClass("on");
|
||||
$sidebar.toggleClass("on");
|
||||
});
|
||||
|
||||
// Reward
|
||||
$("#reward-btn").on("click", () => {
|
||||
$("#reward").fadeIn(150);
|
||||
$("#mask").fadeIn(150);
|
||||
});
|
||||
$("#reward .close, #mask").on("click", () => {
|
||||
$("#mask").fadeOut(100);
|
||||
$("#reward").fadeOut(100);
|
||||
});
|
||||
|
||||
// DarkMode
|
||||
if (sessionStorage.getItem("darkmode") == 1) {
|
||||
$("body").addClass("darkmode");
|
||||
$("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line");
|
||||
} else {
|
||||
$("body").removeClass("darkmode");
|
||||
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
|
||||
}
|
||||
$("#todark").on("click", () => {
|
||||
if (sessionStorage.getItem("darkmode") == 1) {
|
||||
$("body").removeClass("darkmode");
|
||||
$("#todark i").removeClass("ri-sun-line").addClass("ri-moon-line");
|
||||
sessionStorage.removeItem("darkmode");
|
||||
} else {
|
||||
$("body").addClass("darkmode");
|
||||
$("#todark i").removeClass("ri-moon-line").addClass("ri-sun-line");
|
||||
sessionStorage.setItem("darkmode", 1);
|
||||
}
|
||||
});
|
||||
|
||||
// ShowThemeInConsole
|
||||
const ayerInfo = ""
|
||||
const ayerURL = "https://github.com/alkyl1978/hexo-theme-ayer";
|
||||
const ayerNameStr =
|
||||
"\n\n _ __ _______ _____ \n / \\ \\ \\ / / ____| _ \\ \n / _ \\ \\ V /| _| | |_) | \n / ___ \\ | | | |___| _ < \n /_/ \\_\\ _| |_____|_| \\__\\ \n";
|
||||
const ayerInfoStyle =
|
||||
"background-color: #49b1f5; color: #fff; padding: 8px; font-size: 14px;";
|
||||
const ayerURLStyle =
|
||||
"background-color: #ffbca2; padding: 8px; font-size: 14px;";
|
||||
const ayerNameStyle = "background-color: #eaf8ff;";
|
||||
|
||||
console.log(
|
||||
"%c%s%c%s%c%s",
|
||||
ayerInfoStyle,
|
||||
ayerInfo,
|
||||
ayerURLStyle,
|
||||
ayerURL,
|
||||
ayerNameStyle,
|
||||
ayerNameStr
|
||||
);
|
||||
})(jQuery);
|
||||
|
||||
// Tracking
|
||||
!(function (p) {
|
||||
"use strict";
|
||||
!(function (t) {
|
||||
var s = window,
|
||||
e = document,
|
||||
i = p,
|
||||
c = "".concat(
|
||||
"https:" === e.location.protocol ? "https://" : "http://",
|
||||
"sdk.51.la/js-sdk-pro.min.js"
|
||||
),
|
||||
n = e.createElement("script"),
|
||||
r = e.getElementsByTagName("script")[0];
|
||||
(n.type = "text/javascript"),
|
||||
n.setAttribute("charset", "UTF-8"),
|
||||
(n.async = !0),
|
||||
(n.src = c),
|
||||
(n.id = "LA_COLLECT"),
|
||||
(i.d = n);
|
||||
var o = function () {
|
||||
s.LA.ids.push(i);
|
||||
};
|
||||
s.LA ? s.LA.ids && o() : ((s.LA = p), (s.LA.ids = []), o()),
|
||||
r.parentNode.insertBefore(n, r);
|
||||
})();
|
||||
})({ id: "JGjrOr2rebvP6q2a", ck: "JGjrOr2rebvP6q2a" });
|
@ -1,51 +0,0 @@
|
||||
|
||||
function generate(url, opts) {
|
||||
var url = url.replace(/<%-sUrl%>/g, encodeURIComponent(opts.sUrl))
|
||||
.replace(/<%-sTitle%>/g, encodeURIComponent(opts.sTitle))
|
||||
.replace(/<%-sDesc%>/g, encodeURIComponent(opts.sDesc))
|
||||
.replace(/<%-sPic%>/g, encodeURIComponent(opts.sPic));
|
||||
window.open(url);
|
||||
}
|
||||
|
||||
function showWX() {
|
||||
$('.wx-share-modal').addClass('in ready')
|
||||
$('#share-mask').show()
|
||||
}
|
||||
|
||||
function hideWX() {
|
||||
$('.wx-share-modal').removeClass('in ready')
|
||||
$('#share-mask').hide()
|
||||
}
|
||||
|
||||
function handleClick(type, opts) {
|
||||
} if (type === 'google') {
|
||||
generate('https://plus.google.com/share?url=<%-sUrl%>', opts)
|
||||
}
|
||||
|
||||
const share_init = () => {
|
||||
let $sns = document.querySelectorAll('.share-sns');
|
||||
if (!$sns || $sns.length === 0) return;
|
||||
let sUrl = window.location.href;
|
||||
let sTitle = document.querySelector('title').innerHTML;
|
||||
let $img = document.querySelectorAll('.article-entry img');
|
||||
let sPic = $img.length ? document.querySelector('.article-entry img').getAttribute('src') : '';
|
||||
if ((sPic !== '') && !/^(http:|https:)?\/\//.test(sPic)) {
|
||||
sPic = window.location.origin + sPic
|
||||
}
|
||||
$sns.forEach(($em) => {
|
||||
$em.onclick = (e) => {
|
||||
let type = $em.getAttribute('data-type')
|
||||
handleClick(type, {
|
||||
sUrl: sUrl,
|
||||
sPic: sPic,
|
||||
sTitle: sTitle,
|
||||
sDesc: sTitle
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
document.querySelector('#mask').onclick = hideWX
|
||||
document.querySelector('.modal-close').onclick = hideWX
|
||||
}
|
||||
|
||||
share_init()
|
@ -1,3 +0,0 @@
|
||||
import "./css/style.styl";
|
||||
import "./js/ayer";
|
||||
import "./js/share";
|
@ -1,78 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>404</title>
|
||||
<meta name="keywords" content="Hexo,Ayer,404,Design" />
|
||||
<meta name="description" content="hexo theme ayer page 404." />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<style>
|
||||
html,
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
h1,
|
||||
h3 {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
color: #403e3e;
|
||||
}
|
||||
|
||||
h3 a {
|
||||
color: #0681d0;
|
||||
}
|
||||
|
||||
.forrestgump img {
|
||||
width: 52rem;
|
||||
margin-left: 50%;
|
||||
transform: translateX(-50%);
|
||||
border-radius: 5%;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.forrestgump img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="notfound">
|
||||
<a class="notfound-link" href="/">
|
||||
<img
|
||||
width="40"
|
||||
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAGq0lEQVR4Xu1bXahUVRT+1pnxvRexNIT8iYz+SBOuzt6zx5uaWQ9FJulDSillaUpaUUZK2Q9ZaZYlSWmUVjeKyjAFnX32GTRSIaISMqVIr0gP+X5nzop9nXM583/m3Jmr3HHDvMxZ+1trfWf/rL32OoQOb9Th/uMyAZdHwBAyMGPatPH5ZHK8wzwOROMB2J9tJ8F80ic6lcznTx48dOjkUJnV1inQLcRNBaJZBMxkYFaTTn1HRHsKzJ4x5niTfSOLt5wApdQt8P1FALoB3BDZknqCRMfA7MFxdmqtf24JZhGkZQRIKSc6wDIAjwEY0chIAnqZ6CwzEwGjAVzZqA+APgDv+sBWY8yJCPINRQZNwIyurjGFZHIZEVnnr6ih0WPmHof5UJ6o1/O8s+Vy8+bNS/zX2zumL5kcA99XRHQ3gK4aeOeZeWsin9968PDhMw29rCMwKAKUUlPg+x8DmFShg/kHBvYXmL/J5XKn4hiplJrAzHOIeQ4A+ytvJ4h5edbz9sXBt31iEzBDSukDBwAky5QfIWBT1phdcY2q1i8j5QIGVgK4rex5AcBD2pidcfTFIiAjxFwm2lOm8DSATSNHjdrU09NjjWp5s9Pk33PnLAn2d3WZgpXamM3NKm2aACXlCwDWlSgi+jJRKDx9IOZQb9ZopdR1xalXPhrWa2NKbWsA3hQBSson7Fsuw1yrjdnQrBOtkFdSHgSQCWMR811Zz/s+Kn5kApSUDwLYUaIMmJ815ouoytohlxHiQyZaHMZ2gPRBY0wUfZEIyAgxm4ksq4kBUObF2vNKCImisB0yaSFeI6KnQth5OE6X1vpoI30NCbD7vD9iRBbAxACMmHdnPW9BI/ChfK6k3G53g5DO405f38xGcUJDAtJCbCCiZ0NvXmvPK5l3Q+loPV1KSrszzQ1kmPll1/Oeq9enLgHF8PanUIR3OuH73QdyuT8uFafDdtjACb5vR2uwRZ73gan1wua6BCgp3yruuYGe1dqYNy5F5wOblJRPAtgYsnGTNmZVLZtrElA81dm3HxxsjowcNaqrXUFOq0gtBkuHQxFjHxxnaq1TZG0Cyt4+AQtbEd4qKdcRsISBvXCcV7XWf7bK+QCnGDZ/GsLdrI2x0WNFq01AOn0UzJOLPfZqY+4crKFKyrUAXhxYpIhWuK67ZbC41forIfaC6I7is1+1MTdGJkBKOckBfg8Zusx13fcGY6iS8hkAr5Rg+H5G53J6MLi1+iopVwN4PXieYL75gOf9Ui5fdQRk0umlzLwtEPaBscaYf+IaWm5MEed5bcxLcTEb9esW4voC0W8huTXamPDi2P+oKgFKym8B2IQE7JneNWZ2I4U134QQK0Fkd5Nwq2pMXB21+qWlPEbArUVH92er+FGLAB4AZX5Ue977cYxTQjwOotI5zrxce947cfCa7WMXXAD29NrftDEV/lb8YVPXfjI5sDKT70/J5nLHmlYuxCMgKlk3mGip67ofNIsVVz6dTncR86Ggv5PPTyhPuVcQIKWc5QADKaYC8+hqObx6RikhHgZRuaOL4mZt4hJw+/TpY/OJxN9Bfx+YbYzZH8arIECVvblqw6aB84tA9FFYhokWuK67O64jcfsVg6J8velcSYCUduuwW4hdIXuzxoyJaoCSciGAT0rkmVu7zRHtg+//GHX7VFLaDHSQct+ojVlTfwRI+RWAe/qFiI5p150ShQAl5XwAn0WRHbQM0Xbtukui4IR3AgBfa2Pu7SgCVGlEG4mAYTUFMlKe4Qs3T7ZFmALDaBG0Hisp68Y0w3obFEJclSDqbWobHE6BUCaVmsyOM5AYjRQIRRk2UVbffpyLHAqnhVhORG8H9kYKhYsEDIvDkJLS3g2IYkwT/TA0HI7DqVRqXNJxwqU20Y/DwyEhkhZiFRG9GQz/phIi/dOgk1NixXWgJCXeeUnRC8VOnZsWrzYK7CmxYy5GLAHVrsbgOJl25PKjxhb15LpTqXEFx3FbdjVmlVVcjgItuSNohcPlGCqd7gHzfcH/g74ctUA1rse3ZD1vRTuciIuppLS3wOE0e2uux61B1Qok4iZL4zpYr19GyvsZ+Dwk07oCiQC0WokMHOcarfVf7XAqKqYSoiIH2fISmRAJlUVSF7FUJiPELiZ6IExW24qkQiRUK5PbAaL1QzUaulOpawtE20CkykZKe8vkAmUdXSgZkNDRpbID06GTi6UHRkInl8uHF6CO/WCiIhzt1E9mqgUuHfnRVL0IruM+m4sazl5MuYa1whfTuKHQfZmAoWD5UtbxPw6Pum6CDZJRAAAAAElFTkSuQmCC"
|
||||
/>
|
||||
</a>
|
||||
<figure class="forrestgump">
|
||||
<figcaption>
|
||||
<h1>404<br />Not Found!</h1>
|
||||
<h3>
|
||||
Please check it, Maybe you should read
|
||||
<a href="https://hexo.io/docs/">Hexo</a> and
|
||||
<a href="https://github.com/Shen-Yu/hexo-theme-ayer">Ayer</a> Docs
|
||||
carefully.
|
||||
</h3>
|
||||
<h3>
|
||||
<a href="https://hexo.io/docs/">Hexo</a> 和
|
||||
<a href="https://shen-yu.gitee.io/2019/ayer/">Ayer</a> 的说明文档~
|
||||
</h3>
|
||||
</figcaption>
|
||||
<img src="https://tvax4.sinaimg.cn/large/9156bd04ly1gzofhomcm4j20zk0p5jrw.jpg" />
|
||||
</figure>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>404</title>
|
||||
<meta name="keywords" content="Hexo,404,Design">
|
||||
<meta name="description" content="Tribute Forrest Gump">
|
||||
<link rel="stylesheet" href="/css/404.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="notfound">
|
||||
<a class="notfound-link" href="/">
|
||||
<img width="30" src="data:image/svg+xml;base64,PHN2ZyB0PSIxNTYyODQyNjI3NDA5IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcC1pZD0iNTIxNDgiIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIj48cGF0aCBkPSJNMTk0LjYgNDc5LjFoNzQ5LjF2NTcuNkgxODYuNEw1MjggODc4LjMgNDg3LjMgOTE5IDEyMSA1NTIuNyA4MC4zIDUxMmw0MDctNDA3IDQwLjcgNDAuN3oiIGZpbGw9IiIgcC1pZD0iNTIxNDkiLz48L3N2Zz4=">
|
||||
</a>
|
||||
<figure class="forrestgump">
|
||||
<figcaption>
|
||||
<h1 style="color: #6b0b0c;">404<br>Not Found!</h1>
|
||||
<h3 style="color: #14206a;">Life was like a box of chocolates, you never know what you're going to get.</h3>
|
||||
</figcaption>
|
||||
<img src="/images/forrestgump.png">
|
||||
</figure>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
40
source/css/404.styl
Normal file
40
source/css/404.styl
Normal file
@ -0,0 +1,40 @@
|
||||
@charset "utf-8"
|
||||
//
|
||||
// 404
|
||||
html, body, div, figure, img
|
||||
margin 0
|
||||
padding 0
|
||||
|
||||
body
|
||||
font-family "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
|
||||
|
||||
.notfound
|
||||
position absolute
|
||||
top 50%
|
||||
left 50%
|
||||
transform translate(-50%, -50%)
|
||||
|
||||
figure.forrestgump
|
||||
position relative
|
||||
width 100%
|
||||
img
|
||||
width 100%
|
||||
figcaption
|
||||
float right
|
||||
clear right
|
||||
width 100%
|
||||
padding 0
|
||||
text-align right
|
||||
|
||||
@media (min-width: 768.02px)
|
||||
figure.forrestgump
|
||||
width 30rem
|
||||
figcaption
|
||||
width 60%
|
||||
padding 0 2rem
|
||||
|
||||
.notfound-link
|
||||
position absolute
|
||||
z-index 9
|
||||
margin-top 2rem
|
||||
|
@ -9,7 +9,7 @@ $block
|
||||
|
||||
$base-style
|
||||
h1, h2, h3, h4, h5, h6
|
||||
margin 2.5rem 0 1.5rem
|
||||
margin 1.5rem 0
|
||||
hr
|
||||
height border-width
|
||||
background-color border-color
|
||||
@ -34,7 +34,8 @@ $base-style
|
||||
acronym, abbr
|
||||
border-bottom border-width border-color dotted
|
||||
ul, ol, dl
|
||||
margin 1.5rem 0 1.5rem 2rem
|
||||
margin 1.5rem 0
|
||||
line-height line-height
|
||||
|
||||
p, table, blockquote
|
||||
margin 1.5rem 0
|
||||
@ -48,21 +49,17 @@ $base-style
|
||||
border none
|
||||
table
|
||||
width 100%
|
||||
max-width 70rem
|
||||
border 1px solid #dedede
|
||||
margin 15px auto
|
||||
border-collapse collapse
|
||||
vertical-align middle
|
||||
empty-cells show
|
||||
th,td
|
||||
border 1px solid #dedede
|
||||
padding 5px 10px
|
||||
th
|
||||
font-weight bold
|
||||
text-align center !important
|
||||
background rgba(158, 188, 226, .2)
|
||||
white-space nowrap
|
||||
td:nth-child(1)
|
||||
white-space nowrap
|
||||
text-align left
|
||||
th, td, &
|
||||
border border-width border-color solid
|
||||
th, td
|
||||
padding 1rem 1.5rem
|
||||
tbody
|
||||
tr:nth-child(2n)
|
||||
background-color transparent
|
||||
|
||||
blockquote
|
||||
display block
|
@ -28,17 +28,8 @@ body
|
||||
*/
|
||||
|
||||
h1
|
||||
font-size 30px
|
||||
h2
|
||||
font-size 28px
|
||||
h3
|
||||
font-size 26px
|
||||
h4
|
||||
font-size 24px
|
||||
h5
|
||||
font-size 21px
|
||||
h6
|
||||
font-size 18px
|
||||
font-size 2em
|
||||
margin 0.67em 0
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
@ -46,7 +46,7 @@
|
||||
padding-left 3rem
|
||||
.archive-article-title
|
||||
text-decoration: none
|
||||
font-size 1.8rem
|
||||
font-size 1.5rem
|
||||
|
||||
.archive-article-footer
|
||||
margin-top: 1.5rem
|
||||
@ -70,10 +70,9 @@
|
||||
|
||||
.page-nav
|
||||
clearfix()
|
||||
margin: 3rem auto 5rem
|
||||
margin: 3rem auto
|
||||
text-align: center
|
||||
overflow: hidden
|
||||
font-size: 115%
|
||||
a, span
|
||||
padding: 1rem 1.5rem
|
||||
line-height: 1
|
||||
@ -81,12 +80,8 @@
|
||||
text-decoration: none
|
||||
.prev
|
||||
float: left
|
||||
border-radius: 6px
|
||||
border: 1px solid
|
||||
.next
|
||||
float: right
|
||||
border-radius: 6px
|
||||
border: 1px solid
|
||||
.page-number
|
||||
display: inline-block
|
||||
@media mq-mobile
|
@ -16,17 +16,13 @@
|
||||
// overflow hidden
|
||||
|
||||
.article-topping
|
||||
display inline-block
|
||||
margin-left 10px
|
||||
padding 0 10px
|
||||
border-radius 4px
|
||||
font-style normal
|
||||
font-size 12px
|
||||
background-color #ea434a
|
||||
color #fff
|
||||
height 22px
|
||||
line-height 24px
|
||||
transform translateY(-8px)
|
||||
position absolute
|
||||
top 0
|
||||
left -3rem
|
||||
color: #ea434a
|
||||
&>i
|
||||
font-size 2rem
|
||||
line-height 1.7
|
||||
|
||||
|
||||
.article-meta
|
||||
@ -36,7 +32,7 @@
|
||||
@extend $block-caption
|
||||
&::before
|
||||
content '\eaf2'
|
||||
margin-right .15rem
|
||||
margin-right .5rem
|
||||
font-family remixicon
|
||||
opacity .5
|
||||
|
||||
@ -46,7 +42,7 @@
|
||||
&:before
|
||||
content "\efde"
|
||||
font-family remixicon
|
||||
margin-right .15rem
|
||||
margin-right .5rem
|
||||
opacity 0.6
|
||||
.article-category-link
|
||||
@extend $block-caption
|
||||
@ -56,9 +52,8 @@
|
||||
margin-left 0
|
||||
|
||||
.article-entry
|
||||
font-size 103%
|
||||
margin-top .5rem
|
||||
line-height 1.6
|
||||
font-size 110%
|
||||
margin-top 1rem
|
||||
clearfix()
|
||||
@extend $base-style
|
||||
color body-color
|
||||
@ -73,7 +68,7 @@
|
||||
margin-right 0.5em
|
||||
margin-left 1em
|
||||
.caption
|
||||
color froth
|
||||
color color-grey
|
||||
display block
|
||||
font-size 0.9em
|
||||
margin-top 0.5em
|
||||
@ -99,33 +94,17 @@
|
||||
margin 0
|
||||
.article-title
|
||||
display block
|
||||
font-size 34px
|
||||
font-size 1.8em
|
||||
font-weight bold
|
||||
margin-bottom 3rem
|
||||
text-decoration none
|
||||
color body-color
|
||||
padding-left 2rem
|
||||
border-left 4px solid body-color
|
||||
.article-author
|
||||
display block
|
||||
font-size 20px
|
||||
margin-bottom 3rem
|
||||
text-decoration none
|
||||
color body-color
|
||||
padding-left 2rem
|
||||
|
||||
.article-footer
|
||||
clearfix()
|
||||
|
||||
.declare
|
||||
margin 0 0 1rem
|
||||
padding-bottom 1rem
|
||||
color #999
|
||||
border-bottom 1px solid #f6f6f6
|
||||
ul
|
||||
list-style none
|
||||
li
|
||||
list-style none
|
||||
margin-top 3rem
|
||||
|
||||
// Tags
|
||||
.article-tag-list
|
||||
@ -172,9 +151,9 @@
|
||||
.article-nav
|
||||
clearfix()
|
||||
position relative
|
||||
padding-top 1.5rem
|
||||
margin 1rem 0 2rem
|
||||
border-top border-width solid #eee
|
||||
padding-top 3rem
|
||||
margin-top 5rem
|
||||
border-top border-width border-color solid
|
||||
|
||||
.article-nav-link
|
||||
display block
|
||||
@ -267,8 +246,6 @@ $article-share-link
|
||||
background google-color
|
||||
text-shadow 0 1px darken(google-color, 20%)
|
||||
|
||||
.pswp__caption__center
|
||||
text-align center !important
|
||||
|
||||
@import "tocbot"
|
||||
@import "gallery"
|
@ -2,9 +2,11 @@
|
||||
.article
|
||||
padding 4.5rem 0
|
||||
&:not(:last-child)
|
||||
border-bottom border-width #ddd solid
|
||||
border-bottom border-width border-color solid
|
||||
.article-entry, .article-footer
|
||||
margin-top 0
|
||||
.article-entry
|
||||
margin-top 1rem
|
||||
margin 1rem 0
|
||||
padding 0 2rem 2rem
|
||||
border 1px dashed lighten(tag-color,80%)
|
||||
.article-more-link
|
||||
@ -16,6 +18,4 @@
|
||||
color white !important
|
||||
text-decoration none
|
||||
.article-gallery
|
||||
margin-top 1.5rem
|
||||
.article-footer
|
||||
margin-top 1rem
|
||||
margin-top 1.5rem
|
@ -25,12 +25,10 @@
|
||||
left 50%
|
||||
transform translate(-50%, -100%)
|
||||
h1
|
||||
font-family: Titillium Web,PingFang SC,Hiragino Sans GB,"Microsoft JhengHei","Microsoft YaHei",Helvetica Neue,Helvetica,Arial,sans-serif
|
||||
font-size 7rem
|
||||
margin 0
|
||||
opacity .95
|
||||
#subtitle-box
|
||||
font-family: Titillium Web,PingFang SC,Hiragino Sans GB,"Microsoft JhengHei","Microsoft YaHei",Helvetica Neue,Helvetica,Arial,sans-serif
|
||||
h2
|
||||
font-size 3rem
|
||||
margin .5rem 0 1.5rem
|
||||
a, &
|
||||
@ -55,15 +53,13 @@
|
||||
&:hover
|
||||
color sea
|
||||
|
||||
.float_btns
|
||||
position sticky
|
||||
.to_top
|
||||
position fixed
|
||||
bottom 10rem
|
||||
right 50px
|
||||
z-index 9996
|
||||
z-index 9
|
||||
text-align center
|
||||
transform scale(1.2)
|
||||
width: 50px
|
||||
float: right
|
||||
|
||||
#mask
|
||||
position fixed
|
||||
@ -75,12 +71,6 @@
|
||||
z-index 9998
|
||||
display none
|
||||
|
||||
.word_count
|
||||
margin-top 5px
|
||||
color darken(gray,30%)
|
||||
padding-bottom 1rem
|
||||
border-bottom 1px solid darken(froth-light,2%)
|
||||
|
||||
// Media Query
|
||||
@media (max-width: 768px)
|
||||
.cover-inner
|
||||
@ -88,8 +78,8 @@
|
||||
width 100%
|
||||
h1
|
||||
font-size 4.5rem
|
||||
#subtitle-box
|
||||
h2
|
||||
font-size 2rem
|
||||
|
||||
.float_btns
|
||||
.to_top
|
||||
right 10px
|
13
source/css/_partial/categories.styl
Normal file
13
source/css/_partial/categories.styl
Normal file
@ -0,0 +1,13 @@
|
||||
// Categories
|
||||
|
||||
.category-list
|
||||
list-unstyled()
|
||||
margin-right -.5rem
|
||||
margin-left -.5rem
|
||||
> .category-list-item
|
||||
display inline-block
|
||||
padding .5rem 1rem
|
||||
&:before
|
||||
content "\efde"
|
||||
font-family remixicon
|
||||
margin-right .5rem
|
17
source/css/_partial/footer.styl
Normal file
17
source/css/_partial/footer.styl
Normal file
@ -0,0 +1,17 @@
|
||||
|
||||
.footer
|
||||
border-top border-width solid #bbb
|
||||
padding 3rem 0
|
||||
.outer
|
||||
&>ul
|
||||
position relative
|
||||
display flex
|
||||
justify-content space-between
|
||||
&:first-child
|
||||
border-bottom border-width solid darken(froth-light,10%)
|
||||
|
||||
li
|
||||
display inline-block
|
||||
padding .5rem 0
|
||||
span
|
||||
margin-right 6px
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user