Hexo博客(四) 主题美化
Hexo 博客搭建与美化导航
特别说明
欢迎来到我的网站,此博客由【Hexo + Butterfly】来进行搭建。
本站所有内容仅供学习交流使用,不构成任何商业用途。内容因版本差异导致的问题,博主将尽力修正但不承担法律责任。
Hexo 博客版本:7.3.0
Butterfly 主题版本:5.3.5
🍏Hexo博客(四) 主题美化 ⇦ 当前位置🍁
页脚渐变色
点击查看教程
添加代码到 页脚渐变.css
文件
- 创建
Hexo根目录/source/css/页脚渐变.css
文件,将下面代码复制粘贴到该文件中。
1 | /* 渐变色滚动动画 */ |
引入 页脚渐变.css
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
清理并重启项目即可看到变更
1 | hexo cl; hexo s |
直达底部按钮
点击查看教程
- 在
Hexo根目录\themes\butterfly\layout\includes\rightside.pug
最后添加以下内容:
1 | // 直达底部按钮 |
增加动画特效
点击查看教程
安装插件
Hexo 博客根目录
执行安装命令:
1 | npm install hexo-butterfly-wowjs --save |
- 在站点配置文件
_config.yml
或者主题配置文件_config.butterfly.yml
中添加: - 动画预览网站:https://animate.style/
1 | # Hexo + Butterfly 增加动画特效 |
清理并重启项目即可看到变更
1 | hexo cl; hexo s |
更改标题图标
点击查看教程
主题配置
修改主题配置文件_config.butterfly.yml
文件的beautify
配置项:
1 | beautify: |
添加代码到 custom-icon.css
文件
- 创建
Hexo根目录/source/css/custom-icon.css
文件,将代码复制粘贴到该文件中。 - 【fontawesome 的 icon 图标代号】
1 | /* 导入字体库 */ |
引入 custom-icon.css
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
清理并重启项目即可看到变更
1 | hexo cl; hexo s |
全局吸底播放器
点击查看教程
安装 aplayer 插件(其实也许不一定需要但以防万一)
- hexo博客根目录,安装
aplayer
插件
1 | npm install --save hexo-tag-aplayer |
修改 _config.yml
hexo配置文件
1 | aplayer: |
修改 _config.butterfly.yml
Butterfly配置文件
1 | aplayerInject: |
aplayer 的 html 配置文件
- 在``Hexo根目录\themes\butterfly\layout\includes\head.pug`后追加内容:
1 | 完整歌曲链接:https://xxx.yyyy.com/野狼disco-宝石Gem/lyric.lrc |
1 | // 添加音频播放器代码 |
hexo 博客 butterfly 主题 aplyer 音乐播放器美化
深色模式+自动缩进隐藏
- 添加代码到
aplayer.css
文件 - 创建
Hexo根目录/source/css/aplayer.css
文件,将代码复制粘贴到该文件中。
1 | /*aplayer日间模式调整*/ |
引入 aplayer.css
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
默认隐藏歌词
- 添加代码到
隐藏歌词.js
文件 - 创建
Hexo根目录/source/js/隐藏歌词.js
文件,将代码复制粘贴到该文件中。
1 | // APlayer 默认关闭歌词 |
引入 隐藏歌词.js
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
清理并重启项目即可看到变更
1 | hexo cl; hexo s |
文章顶部波浪效果
点击查看教程
修改 Hexo根目录/themes/butterfly/layout/includes/header/index.pug
大概第 33
行左右
1 | if globalPageType === 'post' |
为了方便复制,提供一份需要修改的部分:
1 | // butterfly文章顶部添加波浪效果,开始 |
创建 Hexo根目录/source/css/bolang.css
文件,将代码复制粘贴到该文件中。
1 | /* 波浪css */ |
引入 bolang.css
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
清理并重启项目即可看到变更
1 | hexo cl; hexo s |
文章标题居中
点击查看教程
文件路径:博客根目录\themes\butterfly\source\css_layout\head.styl
以下示例为将文章标题及其相关信息修改为居中显示
该代码块在第100行左右
1 | #post-info |
首页分类磁贴
点击查看教程
这个插件主要实现了以下功能:
- 自定义 tags 或 categories 的排列和展示
- 自定义 tags 或 categories 的展示图标,名称
- 自定义排列的行数,默认 2 行
安装插件
- 在博客根目录
[BlogRoot]
下打开终端,运行以下指令:
1 | npm i hexo-magnet --save |
卸载插件
1 | npm uninstall hexo-magnet --save --package-lock-only |
注意,一定要加 --save
,不然本地预览的时候可能不会显示!!!
修改配置文件
- 在网站配置文件
_config.yml
新增以下项 (注意不是主题配置文件
),这里的分类名字必须和你文章的分类名字一一对应:
1 | magnet: |
配置项说明
- 配置项的含义:
enable
参数:true/false
含义:是否开启插件enable_page
参数:/
含义:路由地址,如 / 代表主页。/me/ 代表自我介绍页等等priority
参数:1
含义:插件的叠放顺序,数字越大,叠放约靠前。type
参数:categories/tags
含义:选择筛选分类还是标签devide
参数:2
含义:表示分隔的列数,2 表示分为两列展示display
参数:
1 | - name: 教程 # 这里是tags或者categories的名称 |
含义:配置项,可自行设置,按照设置的顺序展示
color_setting
参数:
1 | text_color: black # 文字默认颜色 |
含义:颜色配置项,可自行设置
layout
参数:type; (class&id)
参数:name;
参数:index;(数字)
含义:如果说 magnet 是一幅画,那么这个 layout 就是指定了哪面墙来挂画
而在 HTML 的是世界里有两种墙分别 type 为 id 和 class。
其中在定义 class 的时候会出现多个 class 的情况,这时就需要使用 index,确定是哪一个。
最后墙的名字即是 name;
1 | <div name="我是墙" id="recent-posts"> |
temple_html
参数:html 模板字段
含义:包含挂载容器
1 | <div class="recent-post-item" style="width:100%;height: auto"> <!--文章容器--> |
plus_style
参数:“”
含义:提供可自定义的 style,如加入黑夜模式。
执行 hexo 三连
1 | hexo clean; hexo g; hexo s |
修复黑夜模式
我们可以看到黑夜模式看起来特别的别扭,因此还要做一下黑夜模式的颜色适配,在custom.css
文件中添加以下代码适配黑夜模式(具体颜色可以自己调节):
1 | /* 小冰分类分类磁铁黑夜模式适配 */ |
夜间模式动画
点击查看教程
创建pug文件
- 新建
博客根目录\themes\butterfly\layout\includes\custom\sun_moon.pug
,这部分其实实质上就是一个svg文件,通过js操作它的旋转显隐,淡入淡出实现动画效果。
1 | svg(aria-hidden='true', style='position:absolute; overflow:hidden; width:0; height:0') |
创建styl文件
- 新建
博客根目录\themes\butterfly\source\css\_layout\sun_moon.styl
1 | .Cuteen_DarkSky, |
创建JS文件
- 新建
博客根目录\themes\butterfly\source\js\sun_moon.js
,去除了冗余代码,去jquery
1 | // 定义 saveToLocal 对象 |
修改博客根目录\_config.butterfly.yml
,引入sun_moon.js
1 | inject: |
修改相关文件
- 修改
博客根目录\themes\butterfly\layout\includes\head.pug
,在文件末位加上一行
1 | //- global config |
修改博客根目录\themes\butterfly\layout\includes\rightside.pug
,把原本的昼夜切换按钮替换掉
1 | when 'translate' |
重启项目并切换夜间模式即可看见效果
1 | hexo cl; hexo s |
导航栏多彩图标
点击查看教程
引入iconfont图标
新建图标项目
访问阿里巴巴矢量图标库,注册登录。
搜索自己心仪的图标,然后选择添加入库,加到购物车。
选择完毕后点击右上角的购物车图标,打开侧栏,选择添加到项目,如果没有项目就新建一个。
可以通过上方顶栏菜单->资源管理->我的项目,找到之前添加的图标项目。(现在的iconfont可以在图标库的项目设置里直接打开彩色设置,然后采用fontclass的引用方式即可使用多彩图标。但是单一项目彩色图标上限是40个图标,酌情采用。)
引入图标
线上引入方案,我使用的是官方文档中最便捷的font-class
方案。这一方案偶尔会出现图标加载不出的情况。但是便于随时对图标库进行升级,换一下在线链接即可,适合新手使用。最新版本的iconfont支持直接在项目设置中开启彩色图标,从而实现直接用class添加多彩色图标。(推荐直接用这个即可)
- 在
[BlogRoot]\themes\butterfly\source\css\custom.css
中填写如下内容,引入Unicode和Font-class的线上资源:
1 | @import "//at.alicdn.com/t/font_2264842_b004iy0kk2b.css"; |
更推荐在在主题配置文件inject
配置项进行全局引入:
1 | inject: |
同时可以在自定义CSS
中添加如下样式来控制图标默认大小和颜色等属性(若已经在项目设置中勾选了彩色选项,则无需再定义图标颜色),写法与字体样式类似,这恐怕也是它被称为iconfont
(图标字体)的原因:
1 | .iconfont { |
可以通过自己的阿里图标库的font-class方案查询复制相应的icon-xxxx
。
1 | <i class="iconfont icon-rat"></i> |
菜单栏多色动态图标
详见:糖果屋微调合集
相比于静态的图标,个人更喜欢动态的,因此一步到位!
前置教程:Hexo引入阿里矢量图标库-iconfont inject和基于Butterfly的外挂标签引入-Tag Plugins Plus中关于动态标签anima
的内容。请确保您已经完成了前置教程,并实现了在文章中使用symbol
写法来引入iconfont
图标。同时引入了fontawesome_animation
的前置依赖。
主要检查您的inject
配置项中是否有这两个依赖
1 | inject: |
替换[BlogRoot]\themes\butterfly\layout\includes\header\menu_item.pug
为以下代码,本方案默认使用观感最佳的悬停父元素触发子元素动画效果,默认动画为faa-tada
。注意:可以把之前的代码注释掉,再在后面加上如下代码,以便于回滚,此代码在butterfly 4.3.1
上可以运行并保留hide字段隐藏子菜单的功能,其他版本自行测试。代码的本质并不复杂,就是扫描配置文件对应的配置项,然后根据||
的分割标志筛选出对应的图标名称、对应链接等,从而渲染出html页面。
1 | if theme.menu |
以下是填写示例,在[BlogRoot]\_config.butterfly.yml
中修改。icon-xxx
字样的为iconfont
的symbol
引入方案的id
值,可以在你的iconfont
图标库内查询,其中hide属性也是可以用的。
1 | menu: |
要注意的是,这里的动态图标是svg.icon
的标签,因此上面调节.iconfont
的css并不使用,我们需要在自定义样式文件custom.css
里加上一些样式来限制图标的大小和颜色等,具体大小自行调节。
1 | svg.icon { |
添加按钮
修改"博客根目录\themes\butterfly\layout\includes\header\nav.pug"
修改搜索按钮图标:
- 图标
icon-a-044_sousuo
修改为自己的,width: 2.2em; height: 2.2em;
修改大小 - 把以下语句删除或注释掉即可,搜索两个字就不会显示出来(这种语句统一写法是直接删除
+
就可以,不用补空格)。
引入明暗模式切换图标:
- 太阳图标:``icon-sun
,月亮图标:
icon-moon。我的默认是黑暗模式,选择太阳图标
use#modeicon(xlink:href=‘#icon-shezhi’)`
修改菜单按钮图标:
- 图标
icon-shezhi
修改为自己的,width: 1.6em; height: 1.6em;
修改大小
1 | #menus |
完整的 #menus部分
代码
1 | #menus |
重启项目即可看到效果:
1 | hexo cl; hexo s |
导航栏引入图标
点击查看教程
1 | nav#nav |
1. 基本结构
1 | Puga.site-page.faa-parent.animated-hover(onclick='toggleWinbox()' title='切换壁纸') |
- 这是一个
<a>
链接元素,包含一个嵌套的<svg>
图标。 - 使用了 Pug 的嵌套语法,通过缩进表示层级关系。
2. 链接属性
1 | a.site-page.faa-parent.animated-hover(onclick='toggleWinbox()' title='切换壁纸') |
- 类名:
.site-page
:基础样式类(可能定义链接的外观)。.faa-parent
:Font Awesome Animation 的父容器类(用于子元素动画)。.animated-hover
:自定义悬停动画效果的类。
- 事件:
onclick='toggleWinbox()'
:点击时调用 JavaScript 函数toggleWinbox()
(可能是控制弹窗/壁纸切换的逻辑)。
- 提示文本:
title='切换壁纸'
:鼠标悬停时显示的工具提示(“切换壁纸”)。
3. SVG 图标
1 | svg.faa-tada.bizhi(aria-hidden="true", style="height:2em;width:2em") |
类名:
.faa-tada
:Font Awesome Animation 的“抖动”动画效果。.bizhi
:自定义类(可能用于样式覆盖,bizhi
是中文“壁纸”的拼音)。
无障碍:
aria-hidden="true"
:对屏幕阅读器隐藏(因图标仅为装饰)。
尺寸:
style="height:2em;width:2em"
:强制宽高为2em
(继承父元素字体大小)。
4. 生成的实际 HTML
1 | HTML<a class="site-page faa-parent animated-hover" onclick="toggleWinbox()" title="切换壁纸"> |
5. 关键功能
- 点击事件: 点击后会触发
toggleWinbox()
(可能是切换壁纸弹窗或壁纸本身的函数)。 - 动画效果:
faa-parent
+faa-tada
组合会让 SVG 图标持续抖动(类似 Font Awesome 的动画效果)。animated-hover
可能添加了悬停时的过渡效果(如颜色变化)。
- 国际化:
title="切换壁纸"
提示中文用户,但代码本身是语言无关的。
6. 可能的依赖库
- Font Awesome Animation:提供
faa-*
动画类。 - Winbox.js:如果
toggleWinbox()
是控制弹窗,可能用到此库。 - 自定义 CSS:
.site-page
、.bizhi
等类需要额外样式文件支持。
完整添加代码
1 | nav#nav |
黑夜霓虹灯
点击查看教程
创建 Hexo根目录/source/css/custom.css
文件,将代码复制粘贴到该文件中。
1 | /* 日间模式生效 */ |
引入 custom.css
文件
- 在
_config.butterfly.yml
文件中找到inject
部分,如果该部分不存在,添加以下内容:
1 | inject: |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
刷新页面即可看到效果,默认是夜间模式才开启的,因为白天模式开启霓虹灯会显得很奇怪
全局圆角
点击查看教程
创建 Hexo根目录/source/css/全局圆角.css
文件,将代码复制粘贴到该文件中。
1 | /******************** 全局圆角 ***********************/ |
在 _config.butterfly.yml
文件中找到 inject
部分,添加以下内容:
1 | inject: |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
页面美化
点击查看教程
--trans-light
:白天模式带透明度的背景色,如rgba(255, 255, 255, 0.88)
底色是纯白色,其中0.88就透明度,在0-1之间调节,值越大越不透明;--trans-dark
: 夜间模式带透明度的背景色,如rgba(25, 25, 25, 0.88)
底色是柔和黑色,其中0.88就透明度,在0-1之间调节,值越大越不透明;--border-style
: 边框样式,1px solid rgb(169, 169, 169)
指宽度为1px的灰色实体边框;--backdrop-filter
: 背景过滤器,如blur(5px) saturate(150%)
表示饱和度为150%的、高斯模糊半径为5px的过滤器,这是亚克力效果的一种实现方法;- 大家可以根据自己喜好进行调节,不用拘泥于我的样式!
创建 Hexo根目录/source/css/页面美化.css
文件,将代码复制粘贴到该文件中。
1 | /****************************** 定义全局颜色 ****************************/ |
常驻导航栏
在 _config.butterfly.yml
文件中修改为:
1 | nav: |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
配置文件CDN替换
点击查看教程
主题默认的CDN有:local、cdnjs、jsdelivr、unpkg等,但是速度偶读比较一般,要想提高部分标准静态资源的响应速度,走CDN是最好的办法,最好是在国内的CDN。
参考教程:
修改教程,我分享一下我目前在用的方案:
修改主题配置文件_config.butterfly.yml
的CDN
配置项:
1 | # CDN |
修改完成后可以 f12
->源代码
->网页
看看是否已经加载到对应的资源
挂绳小猫咪
点击查看教程
制作一个盛放内容的盒子,在[BlogRoot]/node_modules/hexo-theme-butterfly/layout/includes/head.pug
(如果是git clone
安装在[BlogRoot]/themes/butterfly/layout/includes/head.pug
)最后一行加入如下代码:
1 | //- 挂绳小猫咪 |
- 其实随便放在哪里都行,只要能加载出来就行
- 在
[BlogRoot]/node_modules/hexo-theme-butterfly/source/js
文件夹下新建一个cat.js
,将以下代码复制到文件中。
1 | if (document.body.clientWidth > 992) { |
在[BlogRoot]/node_modules/hexo-theme-butterfly/source/css
文件夹下新建一个cat.css
,将以下代码复制到文件中。当然你也可以选择不新建 css 文件,复制代码到custom.css
也行,总之有地方引入就行。
1 |
|
在主题配置文件_config.butterfly.yml
中引入cat.js
和cat.css
,当然还有在bottom的最前面引入jQuery
,因为cat.js
的语法依赖jQuery
。
1 | inject: |
最后重新编译运行即可看见效果。
1 | hexo cl; hexo s |
禁用 f12
点击查看教程
修改[BlogRoot]/node_modules/hexo-theme-butterfly/layout/includes/layout.pug
,根据图中位置添加以下 pug 代码(跟 head
、body
同级)
1 | script. |
将以下代码复制到自定义的f12.js
,随后在主题配置文件的inject
->bottom
中引入该js文件
1 | document.onkeydown = function (e) { |
重新编译运行,即可看到效果
1 | hexo cl; hexo s |
**注意:**如果自己调试阶段,可注释第一步和第二步中的代码,再进行编译,就可以打开控制台了。部署时放开注释,编译好再丢上去就OK了
写轮眼加载动画
点击查看教程
创建博客根目录\themes\butterfly\layout\includes\custom\sharingan.pug
1 | div.loading |
引用 sharingan.pug
- 修改
博客根目录\themes\butterfly\layout\includes\head.pug
1 | include ./custom/sharingan.pug |
修改_config.butterfly.yml
1 | # 加载动画 |
重启项目即可看到效果:
1 | hexo cl; hexo s |
页脚徽标和计时器
点击查看教程
安装插件
1 | npm install hexo-butterfly-footer-beautify --save |
在主题配置文件_config.butterfly.yml
中添加配置项
1 | # footer_beautify |
创建 博客根目录/source/js/runtime.js
1 | /* 页脚计时器 start */ |
创建 博客根目录/source/css/runtime.css
1 | div#runtime { |
重启项目即可看到效果:
1 | hexo cl; hexo s |
一图流
点击查看教程
创建 Hexo根目录/source/css/custom.css
文件,将代码复制粘贴到该文件中。
1 | /* 页脚与头图透明 */ |
在主题配置文件 [BlogRoot]\_config.butterfly.yml
文件中的inject配置项的head子项加入以下代码,代表引入刚刚创建的custom.css文件
1 | inject: |
在主题配置文件 [BlogRoot]\_config.butterfly.yml
文件中的 index_img
和 footer_bg
配置项取消头图与页脚图的加载项避免冗余加载
1 | # The banner image of home page |
在主题配置文件 [BlogRoot]\_config.butterfly.yml
文件中的background配置项设置背景图
1 | background: https://source.fomal.cc/img/home_bg.webp |
引用字体
点击查看教程
首先将文件放到CSS同级目录下:Hexo根目录/source/css/GenJyuuGothic-Medium-2.ttf
创建 Hexo根目录/source/css/引用字体.css
文件,将代码复制粘贴到该文件中。
1 | /* 引用外链字体(任选其一) */ |
引入 引用字体.css
文件
在 _config.butterfly.yml 文件中找到 inject 部分,如果该部分不存在,添加以下内容:
1 | inject: |
配置字体
在 _config.butterfly.yml 文件中修改一下内容:
1 | # 全局字体设置 |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
刷新页面即可看到效果
滚动条样式
点击查看教程
创建 Hexo根目录/source/css/滚动条样式.css
文件,将代码复制粘贴到该文件中。
1 | /********************** 滚动条整体样式 ********************/ |
引入 滚动条样式.css
文件
在 _config.butterfly.yml 文件中找到 inject 部分,如果该部分不存在,添加以下内容:
1 | inject: |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
刷新页面即可看到效果
头像呼吸灯
点击查看教程
创建 Hexo根目录/source/css/头像呼吸灯.css
文件,将代码复制粘贴到该文件中。
1 | /****************** 头像呼吸灯优化版 ***********************/ |
引入 头像呼吸灯.css
文件
在 _config.butterfly.yml 文件中找到 inject 部分,如果该部分不存在,添加以下内容:
1 | inject: |
最后重新编译运行即可看见效果
1 | hexo cl; hexo s |
刷新页面即可看到效果
博客背景切换
点击查看教程
创建按钮
自行选择在哪里添加,只需要调用
toggleWinbox
函数就可以
- 引入到右下角方法
修改博客根目录\butterfly\layout\includes\rightside.pug
在众多when下面新增:
1 | when 'comment' |
然后修改:
1 | #rightside |
以上是引入到
右下角
的方法
- 引入到导航栏
右上角
方法
- 图标
#icon-a-zhaopiantupianxiangce
修改为自己的
1 | if theme.menu |
创建 博客根目录/source/js/xxx.js
1 | // 存数据 |
创建 博客根目录/source/css/xxx.css
1 | /* 由于全屏会出bug,所以直接给他隐藏 */ |
引入 xxx.js和xxx.css
1 | inject: |
重启项目即可看到效果:
1 | hexo cl; hexo s |
访客定位欢迎信息
点击查看教程
新建[BlogRoot]/source/js/welcome.js
文件
1 | // 进行 fetch 请求 |
新建 [BlogRoot]/source/css/welcome.css
文件
1 | /* 访客定位欢迎信息 */ |
引入 xxx.js和xxx.css
1 | inject: |
重启项目即可看到效果:
1 | hexo cl; hexo s |
脚页添加小动物
点击查看教程
修改[BlogRoot]/themes/solitude/layout/includes/footer.pug
文件,新增以下代码(我是在末尾添加的)
1 | #footer-animal |
新建 [BlogRoot]/source/css/welcome.css
文件
1 | /* 脚页添加小动物 */ |
引入 welcome.css
1 | inject: |
重启项目即可看到效果:
1 | hexo cl; hexo s |
今日诗词侧边栏小组件
点击查看教程
创建组件
主题新建[BlogRoot]/themes/butterfly/layout/includes/widget/card_poem.pug
内容如下:
1 | #card-poem.card-widget |
引入组件
在 [BlogRoot]/themes/butterfly/layout/includes/widget/index.pug
中你需要的位置添加以下内容:
1 | !=partial('includes/widget/card_poem', {}, {cache: true}) |
填写示例,可以在俩个
1 | #aside-content.aside-content |
创建 Hexo根目录/source/css/custom.css
文件,将代码复制粘贴到该文件中。
1 | #card-poem { |
引入custom.css
如果没有引用过 heoMainColor.css
需要引用
1 | inject: |
重启项目即可看到效果:
1 | hexo cl; hexo s |