# 新手进阶
## 平滑升级
更新 Hexo 主题时,一般都会有这样的经历:先将主题目录下的 `_config.yml` 文件备份,更新完主题后,再将备份的数据复制粘贴还原回去。
这个过程繁琐又浪费时间,因此我们需要一种友好的更新方式。如果你也经历着这样的痛苦,那么不妨尝试 Hexo 3.0 新增的功能 -- [数据文件](https://hexo.io/zh-cn/docs/data-files)。
Stun 主题利用该功能实现了平滑升级的特性,使用步骤如下:将主题目录下的 `_config.yml` 文件复制到博客根目录下的 `/source/_data/` 中,并重命名为主题名称。例如使用 `stun` 主题,那么就叫做 `stun.yml` 。如果 `source` 目录下没有 `_data` 文件夹请自行创建。
这两个文件的关系为 `stun.yml` 覆盖 `_config.yml`,也就是说,想要修改配置时,只需要修改 `stun.yml` 里的即可(修改 `_config.yml` 里的不会生效)。这样就实现了平滑升级,更新时 `_config.yml` (可能)会更新,而你的配置数据保留在 `stun.yml` 中。
::: warning 注意 !!!
**主题更新后,如果主题目录下的 `_config.yml` 文件里出现了新的选项,那么你必须从该文件中将它们复制到 `/source/_data/stun.yml` 中,并设置它们的值为你想要的选项。**
如果你使用了平滑升级这一特性,那么 `/themes/stun/_config.yml` 和 `/source/_data/stun.yml` 这两个文件里的选项没有同步,是更新主题后,启动报错的最主要的原因!
:::
> 有时候,同步 `/themes/stun/_config.yml` 和 `/source/_data/stun.yml` 两个配置文件里的内容也比较麻烦。因此,推荐使用代码对比工具进行查看,这样再进行同步就方便多了。例如,VS Code 自带的代码对比工具:
>
> ![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200331233853.png)
## 国际化(i18n)
修改 Hexo 根目录下的 `_config.yml` 文件:
``` yaml
language: zh-CN # 可选值 zh-CN 或 en-US
```
语言文件在主题文件夹的 `languages` 目录下。Stun 主题默认有 `zh-CN.yml` 和 `en.yml` 两种语言文件,如果需要支持其他语言,请自行编写语言文件。语言文件的命名请参考:[https://github.com/theme-next/hexo-theme-next/tree/master/languages](https://github.com/theme-next/hexo-theme-next/tree/master/languages)
## 网站布局设置
::: warning
该功能从 `v1.6.0` 版本开始支持,在 `v1.7.0` 版本中对配置项进行了更改。
:::
主题提供了对布局的一些常用设置。修改主题配置文件:
`v1.6.0`:
``` yaml
layout:
# 网站内容区域宽度
content: 768px
# 侧边栏宽度
sidebar: 300px
# 内容区域和侧边栏之间的间隙
content_sidebar_gap: 30px
# 网站主体区域和页面两侧的间隙
main_side_gap: 20px
```
`v1.7.0 ~ Latest`:
``` yaml
layout:
# 网站内容区域宽度(显示文章的区域)
content: 760px
# 侧边栏宽度
sidebar: 300px
# 内容区域和侧边栏之间的间隙
content_sidebar_gap: 30px
# 网站中 "main" 标签的 padding 属性
# 你可以像使用 CSS 中的 padding 属性一样进行设置。例如:
# 设置 实际效果
# 20px padding: 20px
# 10px 20px padding: 10px 20px
# 30px 20px 10px padding: 30px 20px 10px
# 30px 20px 10px 20px padding: 30px 20px 10px 20px
main_padding:
# 屏幕宽度在 [768px, 无穷) 之间时生效
default: 20px
# 屏幕宽度在 [576px, 768px) 之间时生效
tablet: 15px
# 屏幕宽度在 [0px, 576px) 之间时生效
mobile: 10px
```
上面的属性所对应的地方,示意图如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200115162037.jpg)
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200203174507.jpg)
## 夜晚模式
修改主题配置文件:
``` yaml
night_mode:
enable: true
# 切换夜晚模式的按钮
button:
# 按钮块的颜色(请使用引号包裹值)
color: "#fafafa"
# 按钮的背景颜色(请使用引号包裹值)
bg_color: "#8c8a8a"
# 代表白天和夜晚的图标(目前仅支持文本和 emoji)
icon:
dark: 🌜
light: 🌞
```
## Front-Matter
Front-Matter 在 Hexo 主题中,占据了极其重要的地位。如果你还不了解 Front-Matter,可以查看这里:[https://hexo.io/zh-cn/docs/Front-Matter](https://hexo.io/zh-cn/docs/Front-Matter)。
下面是 Hexo 中默认提供的几种 Front-Matter 属性。
- `title` - 标题
- `date` - 文件建立日期
- `updated` - 文件更新日期
例如:
```
---
title: Hello Stun
date: 2019-5-15 22:54:49
updated: 2019-5-16 10:23:46
---
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190722105740.png)
::: tip
Hexo 会使用 git commit 中,文件的最新提交时间作为更新日期,所以一般不需要手动指定 `updated` 属性。并且当你使用 `hexo new xxx` 指令生成文件时,Hexo 会帮你添加好 `title` 和 `date` 属性。因此这三个属性一般不需要手动设置。
:::
- `comments` - 是否开启评论功能
在 Stun 主题中,如果你启用了某个评论系统,默认是对所有通过 Markdown 文件生成的页面(除首页,归档页,单个分类页,单个标签页以外的所有页面)生效。因此,你可以使用该属性单独设置某个页面 / 文章是否启用评论。例如:
```
---
title: Hello Stun
comments: false
---
```
- `excerpt` - 指定文章摘要
Hexo 3.9.0 及以前的版本中,只能通过添加 `` 标记来保留文章摘要。在 Hexo 4.0.0 及以后的版本中,可以通过在 Front-Matter 中使用 `excerpt` 来设置文章摘要。例如:
```
---
title: Hello Stun
excerpt: 这是一段文章摘要,是通过 Front-Matter 的 excerpt 属性设置的。
---
```
- `permalink` - 覆盖 Markdown 文件名
例如,你有两篇文章:`https://xxx/2020/02/03/foo` 和 `https://xxx/2020/02/03/bar`,它们分别由 `foo.md` 和 `bar.md` 文件生成。如果你在 `bar.md` 的 Front-Matter 中设置了 `permalink`:
```
---
title: I'm bar, but link to foo
date: 2020-02-03 15:39:40
permalink: /foo
---
```
这样,`foo.md` 和 `bar.md` 文件都会被解析为:`https://xxx/2020/02/03/foo`。
- `categories` - 设置文章分类
文章分类有顺序性和层次性。下面是一些例子:
- 嵌套分类
```
---
categories:
- Diary
- Life
---
```
这样会使分类 `Life` 成为 `Diary` 的子分类。
- 并列分类
```
---
categories:
- [Diary]
- [Life]
---
```
这样会使 `Life` 和 `Diary` 成为并列分类。
- 并列嵌套分类
```
---
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]
---
```
这样会使 `PlayStation` 和 `Games` 同为 `Diary` 的子分类,而 `Life` 和 `Diary` 是并列分类。
- `tags` - 设置文章标签
标签没有顺序性和层次性,**只能设置为同级的**。也就是说,标签只有一种用法:
```
---
tags:
- PlayStation
- Games
- [Diary, Life]
---
```
这样会被解析为 `PlayStation`、`Games`、`Diary,Life` 三个并列标签。
- `layout` - 是否对文章或页面应用布局样式
- 在 Front-Matter 中设置了 `layout: false`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190820175118.png)
可以看到,设置了 `layout: false` 后,只将 Markdown 解析成 HTML,不做其他处理。
- 在 Front-Matter 中设置了 `layout: true` 等价于 默认
---
下面几种 Front-Matter 属性在 Hexo 文档中并没有出现(也许是 Hexo 的文档没有更新吧),但在 Hexo 提供的主题单元测试库中出现。按照测试文件的要求,一个合格的 Hexo 主题都应该支持它们。这些属性如下:
- `link` - 链接
如果指定该属性,当点击该文章标题时,应该在新窗口或新的标签页中,打开所指定的链接地址。
- `photos` - 图片
用于指定一些图片,这些图片会显示在文章中(Stun 主题将其显示在文章最顶部)。使用如下:
``` yaml
photos:
- http://xxxxx1.jpg
- http://xxxxx2.jpg
- http://xxxxx3.jpg
```
默认情况下,这些图片会按照文档流的方式显示,效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190724170139.png)
为了优化这些图片的显示效果,Stun 主题提供了**瀑布流布局** ,如果想启用这一布局,你需要修改主题配置文件:
``` yaml
gallery_waterfall:
enable: false
# 瀑布流中每一列的宽度
col_width: 220px
# 图片之间的水平间隙
gap_x: 10px
# 图片之间的垂直间隙
gap_y: 10px
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190724170138.png)
::: tip
- 启用瀑布流效果后,还可以再启用 [fancybox 效果](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/assist.html#fancybox)。
- 可以利用这个属性,来建立一个**相册页面**或**展示图片的文章**。例如:[https://liuyib.github.io/gallery/](https://liuyib.github.io/gallery/)
:::
---
下面是 Stun 主题中,特有的几种 Front-Matter 属性。
- `top_image: https://xxxx.jpg`
用于设置某篇文章顶部的大图。详情:[指定顶部图](https://liuyib.github.io/hexo-theme-stun/zh-CN/guide/primary-setting.html#指定顶部图)
- `toc: true`
文章是否启用目录。会覆盖主题配置文件中的全局设置。详情:[文章目录](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/advanced-setting.html#文章目录)
- `toc_min_depth: 1`
用于设置某篇文章中,解析标题生成目录的最小深度。取值 1 ~ 6,默认为 1。
例如:`toc_min_depth: 3`,只会解析文中的 `h3, h4, h5, h6` 标签来生成目录。详情:[文章目录](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/advanced-setting.html#文章目录)
- `toc_max_depth: 6`
用于设置某篇文章中,解析标题生成目录的最大深度。取值 1 ~ 6,默认为 6。
例如:`toc_max_depth: 4`,只会解析文中的 `h1, h2, h3, h4` 标签来生成目录。详情:[文章目录](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/advanced-setting.html#文章目录)
- `quicklink: true`
是否在浏览器空闲时间预取可视区内的链接,以加快后续页面的加载速度。详情:[启用 Quicklink](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/third-part.html#启用-quicklink)
- `math: true`
是否需要解析数学公式。详情:[数学公式](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/third-part.html#数学公式)
- `reward: true`
文章是否启用打赏功能。会覆盖主题配置文件中的全局设置。详情:[启用赞赏码](https://liuyib.github.io/hexo-theme-stun/zh-CN/guide/primary-setting.html#启用赞赏码)
- `copyright: true`
文章是否启用版权信息。会覆盖主题配置文件中的全局设置。详情:[知识共享许可协议(cc)](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/advanced-setting.html#知识共享许可协议(cc))
---
下面是安装某些插件后,可以设置的几种 Front-Matter 属性。
- `top: true`
文章是否置顶。详情:[文章置顶](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/advanced-setting.html#文章置顶)
- `no-emoji: true`
是否解析文章中的 emoji 代码。详情:[添加-emoji-支持](https://liuyib.github.io/hexo-theme-stun/zh-CN/advanced/third-part.html#添加-emoji-支持)
## 二级导航菜单
启用二级导航菜单,需要修改主题配置文件:
1. 修改 `menu` 配置项
``` yaml
menu:
# `||` 分隔符之前是占位符,`||` 分隔符之后是图标
# 用法(有图标): `Key: javascript:; || fa(s|r|l|d|b) fa-图标名称`
# 用法(无图标): `Key: javascript:;`
# fas far fal fad fab 是 FontAwesome 5.x 中图标的前缀,你需要根据具体图标自行设置
xxx1: javascript:; || fa(s|r|l|d|b) fa-xxx
```
2. 修改 `submenu` 配置项
``` yaml
submenu:
# 这里的 xxx1 与上述名称对应
xxx1:
xxx1-1: /xxx1-1/ || fa(s|r|l|d|b) fa-xxx
xxx1-2: /xxx1-2/ || fa(s|r|l|d|b) fa-xxx
```
3. 国际化设置
找到 `languages` 目录下的语言文件,根据你网站使用的语言选择对应的语言文件,例如:
`zh-CN.yml`:
``` yaml
xxx1: 这是 xxx1 对应的中文
xxx1-1: 这是 xxx1-1 对应的中文
xxx1-2: 这是 xxx1-2 对应的中文
```
例如,添加一个友情链接的二级菜单:
1. 修改主题配置文件
``` yaml
menu:
friends: javascript:; || fas fa-users
submenu:
friends:
aaa: /aaa/ || fas fa-male
bbb: /bbb/ || fas fa-female
```
2. 国际化设置
`zh-CN.yml`:
``` yaml
menu:
friends: 朋友
aaa: 小 A
bbb: 小 B
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190826161817.png)
## 启用赞赏码
如果你想要在文章页面启用赞赏码,修改主题配置文件:
``` yaml
# Reward
reward:
enable: false
# 支付宝
alipay: https://xxxxx.png
# 微信
wechat: https://xxxxx.png
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608175556.png)
::: tip
1. 你可以在 Front-Matter 中,设置 `reward: true/false` 来指定某文章或页面是否启用赞赏码。
2. 如果你在配置文件中启用了赞赏码,则默认所有文章页面启用这一功能,其他页面不启用。因此你可以在文章页面中设置 `reward: false` 禁用赞赏码,在其他页面中设置 `reward: true` 启用赞赏码。
:::
## 知识共享许可协议(cc)
用于设置你的文章的版权信息,不启用则表示无版权限制。修改主题配置文件:
``` yaml
creative_commons:
enable: true
# 可选值: BY | BY-SA | BY-ND | BY-NC | BY-NC-SA | BY-NC-ND
# 详情请访问: https://creativecommons.org/share-your-work/licensing-types-examples/
license: BY-NC-SA
# 是否在侧边栏中显示
sidebar: true
# 是否在文章底部显示
post: true
# 可选值:
# id | ms | ca | da | de | en | es | es_ES | eo | eu | fr | gl | hr
# it | lv | lt | hu | nl | no | pt | pt_BR | pl | ro | sl | fi | sv
# tr | is | cs | el | be | ru | zh | zh_TW | uk | ar | fa | bn | ja | ko
# 不设置默认为:en(当用户查看许可协议时,会以你设置的语言进行显示)
language:
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190619210339.png)
::: tip
知识共享许可协议启用后,默认对所有文章页面生效。你可以在 Front-Matter 中,设置 `copyright: false` 来指定某文章不启用该功能。
:::
## 文章目录
修改主题配置文件:
``` yaml
toc:
enable: true
# 是否自动添加列表序号
list_number: true
# 是否文本溢出时换行
wrap: true
# 是否始终展开所有文章目录
# true :始终展开
# false:默认折叠,滚动到对应位置时自动展开
expand_all: false
# 生成目录时,解析 `
` 的最小深度
# 你可以在 Front-Matter 中,通过添加 `toc_min_depth` 属性,来为某篇文章指定该配置
min_depth: 1
# 生成目录时,解析 `` 的最大深度
# 你可以在 Front-Matter 中,通过添加 `toc_max_depth` 属性,来为某篇文章指定该配置
max_depth: 6
```
::: tip
启用文章目录后,默认对所有文章页面生效。你可以在 Front-Matter 中,设置 `toc: false` 来指定某篇文章不启用该功能。
:::
## 订阅设置
设置邮件订阅和 RSS 订阅,修改主题配置文件:
``` yaml
feed:
enable: false
# 邮件订阅地址 (例如:http://eepurl.com/guAE6j)
email:
# RSS 订阅地址 (例如:/atom.xml)
rss:
```
想要使用邮件订阅,你需要自己构建 或 使用第三方提供的邮件订阅服务。例如我的邮件订阅地址:[http://eepurl.com/guAE6j](http://eepurl.com/guAE6j)
开启 RSS 订阅之前,你需要安装 hexo 插件:[hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed)。然后在 Hexo 根目录下的 `_config.yml` 文件中添加配置项(关于各个配置项的具体含义,请查看插件的[文档](https://github.com/hexojs/hexo-generator-feed)):
``` yaml
feed:
type: atom
# 这是 RSS 订阅的地址(可以随意设置,和上面 rss 配置项对应)
path: atom.xml
limit: 20
hub:
content:
content_limit: 140
content_limit_delim: " "
order_by: -date
icon: icon.png
```
配置完成之后,访问你设置的订阅地址,如:`https://yoursite.com/atom.xml`,即可看到 RSS 订阅信息。
## 文章阅读进度条
修改主题配置文件:
``` yaml
reading_progress:
enable: true
# 请使用引号包裹值(支持所有 CSS 颜色单位)
color: "#fc6423"
# 进度条高度(支持所有 CSS 长度单位)
height: 1px
```
侧边栏所有效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190619211446.png)
## 文章头部信息
修改主题配置文件:
``` yaml
post_meta:
# 是否只显示图标
icon_only: false
# 文章创建时间
created:
enable: true
# 查找图标名称,请访问:https://fontawesome.com/icons
icon: far fa-calendar-plus
# 文章更新时间
updated:
enable: true
# 查找图标名称,请访问:https://fontawesome.com/icons
icon: far fa-calendar-check
# 文章预计的阅读时间
# 启用这个功能之前,你首先需要在 Hexo 根目录安装依赖:
# `npm install hexo-wordcount --save`,然后重启 hexo 服务器
reading_time:
enable: false
# 查找图标名称,请访问:https://fontawesome.com/icons
icon: far fa-clock
# 设置文章的阅读速度(阅读时间会根据这个设置来计算)
speed:
# 中文的阅读速度
zh: 200
# 英文的阅读速度
en: 80
# 文章字数统计
# 启用这个功能之前,你首先需要在 Hexo 根目录安装依赖:
# `npm install hexo-wordcount --save`,然后重启 hexo 服务器
word_count:
enable: false
# 查找图标名称,请访问:https://fontawesome.com/icons
icon: far fa-file-word
```
效果如下:![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190619210334.png)
## 文章列表分页
::: warning
该功能从 `v1.0.1` 版本开始支持,在 `v1.0.3` 版本中对配置项进行了更改。
:::
如果你想设置**首页**或**归档页**的文章列表是否分页,可以修改主题配置文件:
`v1.0.1 ~ v1.0.2`:
``` yaml
# 分页设置
post_list_paged:
# 首页的文章列表是否分页
home: true
# 归档页面的文章列表是否分页
archives: false
```
`v1.0.3 ~ Latest`:
``` yaml
post_list:
# 是否分页
paginate:
# 首页的文章列表是否分页
home: true
# 归档页面的文章列表是否分页
archives: false
```
> 默认情况下,网站首页的文章列表启用分页,归档页面的文章列表不启用分页。
分页效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190713173927.png)
## 文章列表封面图片
::: warning
该功能从 `v1.0.3` 版本开始支持,在 `v1.1.2` 版本中对配置项进行了更改。
:::
如果你为一篇文章单独设置了顶部图,并且想使用这个顶部图作为文章列表的封面图片来显示,可以修改主题配置文件:
`v1.0.3 ~ v1.1.1`:
``` yaml
post_list:
# 文章列表里的文章的封面图片
top_image:
home: false
```
`v1.1.2 ~ Latest`:
``` yaml
post_list:
# 文章列表里的文章的封面图片
cover_image:
home: false
```
封面图片效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190713173929.jpg)
## 文章标签
::: warning
该功能从 `v1.0.0-beta.1` 版本开始支持,在 `v1.0.3` 版本中对配置项进行了更改。
:::
在文章末尾显示文章的所有标签,修改主题配置文件:
`v1.0.0-beta.1 ~ v1.0.2`:
``` yaml
# 是否在文章末尾显示文章标签
post_tags: true
```
`v1.0.3 ~ Latest`:
``` yaml
post_widget:
# 是否在文章末尾显示文章标签
tags: true
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190713173926.png)
## 文章结束提示信息
::: warning
该功能从 `v1.0.0-beta.1` 版本开始支持,在 `v1.0.3` 版本中对配置项进行了更改。
:::
在文章末尾自动添加文章结束的提示信息,修改主题配置文件:
`v1.0.0-beta.1 ~ v1.0.2`:
``` yaml
# 在文章底部显示 “本文结束” 的提示信息
post_end:
enable: true
# 是否在提示信息之前显示水平分割线
horizon_line: true
```
`v1.0.3 ~ Latest`:
``` yaml
post_widget:
# 在文章底部显示 “本文结束” 的提示信息
end_text:
enable: true
# 是否在提示信息之前显示水平分割线
horizon_line: true
```
效果如下:![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190619210335.png)
## 文章置顶
想要使用文章置顶功能,首先你需要安装 hexo 插件 [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
```
最后,在文章的 Front-Matter 中,使用 `top: true` 来实现置顶。
设置文章置顶后,在文章列表中可以看到表示置顶的图标。你可以对图标进行设置,修改主题配置文件:
``` yaml
stick_top:
# 图标的位置(可选值为:left 和 right)
position: right
# 查找图标名称,请访问:https://fontawesome.com/icons
icon: fas fa-thumbtack
# 图标的旋转角度(角度的单位是:deg)
rotate: 45deg
# 请使用引号包裹值(支持所有 CSS 颜色单位)
color: "#999"
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190713174424.jpg)
## 代码高亮
::: warning
该配置项从 `v1.0.0` 开始支持,在 `v1.6.0` 版本中进行了修改。
:::
设置代码高亮样式,修改主题配置文件:
`v1.0.0 ~ v1.5.4`:
``` yaml
# 设置代码高亮
highlight_theme: light
```
`v1.6.0 ~ Latest`:
``` yaml
codeblock:
# 设置代码高亮
highlight: light
```
有三种可供选择的代码高亮样式:`light`、`drak`、`ocean`。默认是 `light`。效果分别如下:
- `light`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608175153.png)
- `dark`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608175155.png)
- `ocean`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608175154.png)
::: warning
如果代码没有高亮样式,请确保 Hexo 根目录下的 `_config.yml` 文件中 `highlight.hljs` 设为 `false`。
:::
## 代码块样式
设置代码块样式,修改主题配置文件:
``` yaml
codeblock:
# 设置代码块样式
style: carbon
```
有三个可选值:`default`、`simple`、`carbon`。默认为:`default`。效果分别如下:
- `default`
默认样式。具有**显示语言**、**显示行号**和**启用复制按钮**的功能。
> 下图中的代码高亮样式(从左至右,从上至下)分别为:`light`、`light`(开启夜间模式)、`dark`、`ocean`。
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200115133041.png)
- `simple`
极简样式,只显示代码。
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200115133056.png)
- `carbon`
仿 carbon 样式,只显示代码。
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20200115134022.png)
## 代码溢出换行
::: warning
该配置项从 `v1.0.0` 开始支持,在 `v1.6.0` 版本中进行了修改。
:::
修改主题配置文件:
`v1.0.0 ~ v1.5.4`:
``` yaml
# 代码溢出是否换行
code_word_wrap: false
```
`v1.6.0 ~ Latest`:
``` yaml
codeblock:
# 代码溢出是否换行
word_wrap: false
```
可选值为:`true`、`false`。默认是 `false`。效果分别如下:
- `true`(代码溢出换行)
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608214540.png)
- `false`(代码溢出不换行)
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190608214539.png)
## 图片水平对齐方式
::: danger
该配置项,即 `img_horizonal_align` 在 `v1.4.0` 版本废弃。
:::
## 文字与图片的垂直对齐方式
::: danger
该配置项,即 `text_vertical_align_with_img` 在 `v1.2.0` 版本废弃。
:::
## 标签云
如果你启用了 `tags` 页面,想要对其进行设置,修改主题配置文件:
``` yaml
tag_cloud:
# 请使用引号包裹颜色值(只支持十六进制的颜色值)
start_color: "#a4d8fa"
end_color: "#49b1f5"
# 标签最大、最小的尺寸(例如:设置为 20 表示 字体大小 20px)
min_size: 16
max_size: 26
# 最大显示标签数量
max_amount: 200
```
效果如下:![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190619210337.png)
## 其他设置
### 设置图片
- 设置图片大小
1. 使用 HTML 中的 `img` 标签,通过 `style` 属性控制图片大小。
2. 使用 hexo 提供的语法 `{% https://xxxxx.png width height %}`,填入宽、高即可设置大小。
3. Stun 主题提供了一个便捷的方法,你可以在图片路径后面使用查询参数:`?size=宽度x高度` 来控制图片显示大小。例如:
``` md
![](https://xxxxx.png?size=200x100)
```
- 使用行内图片
默认情况下,文章中的图片水平居中显示。如果你想使用**行内图片**,你可以在图片路径后面使用查询参数:`?show=inline` ,使得图片显示为行内图片。例如:
``` md
![](https://xxxxx.png?show=inline)
```
当然,你可以同时控制**图片的大小**和**是否显示为行内图片**:
``` md
![](https://xxxxx.png?size=200x100&show=inline)
```
它们的用法和 URL 中的查询参数完全相同!
### 自定义样式
如果你想修改主题的样式,推荐将样式代码添加到 `source/css/_custom` 目录下的 `index.styl` 文件中。这样,当主题更新时,不会覆盖你已经修改了的样式代码。
> 当然,你也可以进行模块化分类:在该目录下新建样式文件,然后通过 `@import xxx` 语句在同目录下的 `index.styl` 文件中引入你新建的样式文件。
### 标识外部链接
从 `v1.1.3` 版本开始,除了侧边栏,顶部栏以外的区域,Stun 主题会在外链后面加上一个 Icon,用于标识这是一个外部链接。
你可以通过修改主题配置文件,来设置 Icon 以及是否启用这一功能:
``` yaml
external_link:
icon:
enable: true
# 查找图标名称,请访问:https://fontawesome.com/icons
name: fas fa-external-link-alt
# 请使用引号包裹值(支持所有 CSS 颜色单位)
color: "#aaa"
```
### FancyBox
如果想要使用 fancybox 功能,只需要修改主题配置文件即可:
``` yaml
fancybox: true
```
效果如下:
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190724173526.png)
可以去官网在线体验:[http://fancyapps.com/fancybox/3/](http://fancyapps.com/fancybox/3/)
### 图片放大效果
Stun 主题从 `v1.2.0` 版本开始支持图片点击放大的效果。你可以配置该功能,修改主题配置文件:
``` yaml
zoom_image:
enable: true
# 遮罩的颜色(请使用引号包裹值)
mask_color: "rgba(0,0,0,0.6)"
# 图片放大时,距离屏幕边缘的间隙(只支持 px 单位)
gap_aside: 20px
```
::: tip
如果你启用了 fancybox,那么主题会优先使用 fancybox 效果。
:::
### 图片懒加载
Stun 主题从 `v1.2.0` 版本开始支持图片懒加载,但是**该功能只对文章页面起作用**。你可以配置该功能,修改主题配置文件:
``` yaml
lazyload:
enable: true
# 图片未加载前的占位符。可选值有:gif 或 block
placeholder: gif
```
占位符取不同的值效果如下:
- `gif`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190801204631.png)
- `block`
![](https://raw.githubusercontent.com/liuyib/picBed/master/hexo-theme-stun/doc/20190801204629.png)
::: warning 注意 !!!
下面是启用 lazyload 之后,已知的一些问题。
- 不兼容使用 Front-Matter 的 `photos` 属性进行展示的图片(即这些图片不会懒加载)。
:::