个人博客应用美化
个人博客应用美化
后续可能 butterfly 和 hexo 框架会更新,而博客魔改过后,更新会覆盖原本改动过的文件,造成效果失效,甚至可能直接博客崩了也有可能,所以记录一下我用到过的各种博客美化效果,如果是 css+js 直接注入的话问题就不大,如果是直接修改 pug 等根目录文件的话可能就会出问题,总之防范于未然!
我更喜欢纯粹的 CSS+JS 更改效果的美化,所有需要引入他站内容的我一律不予以考虑,因为本来就是搭在 github page 上的个人小网站,搞太多花里胡哨的内容实在是本末倒置了,简单的 css+js 就可以满足大部分的美化需求了,而且开起来也快,不会有那种引用其他外链导致的各种问题。
pjax 也懒得配置,反正现在网站内容不大,暂且就这么用着,等到什么时候开始卡了再搞吧。
至于我个人的前段代码能力····,只能说和没有没什么区别,让我自己开发,自己魔改,那简直是天方夜谈。
目前所有的美化都是基于其他大佬的美化教程的修改,主要还是为了满足我的个人审美,不太喜欢那么多花里胡哨的特效,所以基本都会删一些内容的,属于是站在巨人的肩膀上了。
引用的大佬博客文章: Fomalhaut
纯 CSS+JS 美化
背景一图流
注意这个纯粹依靠 css 文件,所以文章开始图不会被正确显示!
其他的 一图流美化,但是需要改源文件(这个可以让文章图片显示在文章的开头)
需要增加插件脚本的 一图流美化 (注意一下,这篇文章中的 source/css 一律指的是 butterfly 根目录下的那个 source,而不是 blog 根目录下的那个,这个也可以显示文章图片)
1.在[BlogRoot]\source文件夹下新建一个文件夹css,该文件夹用于存放自定义的css样式,再新建一个名为custom.css,在里面写入以下代码:
1 | /* 页脚与头图透明 */ |
2.在主题配置文件[BlogRoot]\_config.butterfly.yml文件中的inject配置项的head子项加入以下代码,代表引入刚刚创建的custom.css文件(这是相对路径的写法)
1 | inject: |
3.在主题配置文件[BlogRoot]\_config.butterfly.yml文件中的index_img和footer_bg配置项取消头图与页脚图的加载项避免冗余加载
1 | # The banner image of home page |
黑夜霓虹灯
1.在自定义的custom.css中添加如下代码,默认是左上角标题、中间标题和副标题,还有文章页头的标题和信息有循环霓虹灯,
1 | /* 日间模式不生效 */ |
2.同理注入 inject 中的 head 部分即可
鼠标光晕
1.新建文件[BlogRoot]\source\js\cursor.js,在里面写上如下代码:
1 | var CURSOR; |
2.在[BlogRoot]\source\css\custom.css添加如下代码:
1 | /* 鼠标样式 */ |
3.在 inject 中引用这两个文件
1 | inject: |
4.重启项目即可
页面样式美化
1.在 custom.css 中添加代码
1 | :root { |
2.参数说明:
--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 的过滤器,这是亚克力效果的一种实现方法;这里引用的是 fomalhaut 的样式
3.inject 引用并且重启项目
节日弹窗与公祭日变灰
1.新建[BlogRoot]\source\js\day.js,并写入以下代码,这里公祭日灰度我设置的为60%:
1 | var d = new Date(); |
2.由于有的节日是农历的,因此还要引入一个计算农历的代码,新建[BlogRoot]\source\js\lunar.js,并写入以下代码,太长了压缩了一下:
1 | var lunarInfo = [ |
3.引入以下以上两个 js 文件和一个弹窗依赖(注意顺序不能颠倒):
1 | inject: |
我引用了 sweetalert2 后,开启速度会变的很慢,所以这里我其实删掉了绝大多数节日,也取消了弹窗,只保存了公祭日变黑的选项,保持简洁
头像呼吸灯
先说呼吸灯,这个可以用 css 实现,和上面的黑夜霓虹灯是一个原理的
1.在custom.css中插入以下代码
1 | /* 头像呼吸灯 */ |
网站恶搞标题
1.新建文件[BlogRoot]\source\js\title.js,写入以下内容:
1 | //动态标题 |
2.在主题配置文件_config.butterfly.yml引入该文件:
1 | inject: |
3.重启项目
雪花特效
新建[BlogRoot]\source\js\snow.js,并写入以下代码,其中雪花的参数是可以自行调节的:
1 | if ( |
2.在自定义 css 文件custom.css写入如下代码,我这里设置只在白天模式显示,你可以自行设置,这里比较简单,本质就是调节画布的显示参数:
1 | /* 雪花特效 */ |
3.引入画布元素:在主题配置文件_config.butterfly.yml文件的引入 js 文件和一个canvas画布:
1 | inject: |
- 重启项目即可看到效果
星空背景和流星特效
1.在[BlogRoot]/source/js目录下新建universe.js,输入以下代码:
1 | function dark() { |
2.在[BlogRoot]/source/css目录下新建universe.css,输入以下代码:
1 | /* 背景宇宙星光 */ |
3.在主题配置文件_config.butterfly.yml的inject配置项中bottom下填入:
1 | inject: |
4.在主题配置文件_config.butterfly.yml的inject配置项中head下填入:
1 | inject: |
修改源文件的魔改
白天黑夜四个背景
1.修改代码 [Root]\themes\butterfly\layout\includes\layout.pug`
大概位置在 14 行左右
1 | + - var DefaultBg = page.defaultbg ? page.defaultbg : theme.background.default |
2.再是实现手机端的白天黑夜双背景,在[BlogRoot]\themes\butterfly\source\css\_layout目录下新建一个web-bg.styl文件,写入以下内容:
1 | $web-bg-night = hexo-config('background.darkmode') ? unquote(hexo-config('background.darkmode')) : $web-bg |
3.然后还要修改一下[BlogRoot]\themes\butterfly\source\css\var.styl,大约 35 行的位置
1 | $text-line-height = 2 |
4.再修改一下配置项,在[BlogRoot]/_config.butterfly.yml中找到background配置项,内容改为:
1 | # Website Background (設置網站背景) |
5.当开了Pjax,还要再把#web_bg加到pjax选择器中。修改[BlogRoot]\themes\butterfly\layout\includes\third-party\pjax.pug
1 | script(src=url_for(theme.CDN.pjax)) |
每页单独背景
这个魔改可能会与白天黑夜四背景产生冲突!
1.修改[BlogRoot]\themes\butterfly\layout\includes\layout.pug
1 | if theme.background |
2.如此即可在每个页面的markdown文件的front-matter中使用background配置项单独配置页面背景了,不写或留空则使用主题配置文件中的默认背景。
1 | --- |
3.当开了Pjax,还要再把#web_bg加到pjax选择器中。修改[BlogRoot]\themes\butterfly\layout\includes\third-party\pjax.pug
1 | script(src=url_for(theme.CDN.pjax)) |
右下角阅读百分比
注意,这部分内容我做了个人的修改,主要是发现现版本 butterfly 自带一个阅读百分比的功能,但是那个功能字体难看,并且百分比有延迟,滚轮一下不是一点点加,而是一下子加 3%~4%,很难看,所以我就修改了一下
1.修改文件[BlogRoot]\themes\butterfly\layout\includes\rightside.pug,在中间面插入如下代码(或者在_config.butterfly.yml 中
rightside_scroll_percent: false 的部分改成 true,保存运行一下再关掉,就会自动出来这一行代码。
1 | button#go-up(type="button" title=_p("rightside.back_to_top")) |
2.新建文件[BlogRoot]\source\js\readPercent.js,在自定义 js 文件中加入如下代码:
1 | window.onscroll = percent; // 执行函数 |
3.创建 css 文件[BlogRoot]\source\css\readPercent.css写入如下代码:
1 | /* 返回顶部 */ |
4.inject 导入 并且重启服务即可 不知道如何导入的见前两条。
直达底部按钮
在[BlogRoot]\themes\butterfly\layout\includes\rightside.pug做以下修改:
1 | button#go-up(type="button" title=_p("rightside.back_to_top")) |
文章顶部波浪效果
1.修改 [BlogRoor]\themes/butterfly/layout/includes/header/index.pug 大概第 33 行左右
1 | if top_img !== false |
2.然后在_config.butterfly.yml的 [inject.head] 或者自定义 css 中 引入以下 css
1 | /* 波浪css */ |
3.重启项目
这个效果不知道为啥我按照教程装上后一点效果都没有···所以暂且停止使用这个,我使用背景一图流那个方案解决 top-img 和背景割裂的问题
Hexo 博客的迁移
将博客迁移到新的电脑
参考教程:CSDN:Hexo 博客迁移到新电脑
在新电脑行进行环境准备工作,具体的步骤和Hexo 博客搭建基础教程(一)的第 1-7 步一模一样,大家在新电脑上跟着做即可(注意千万不要做第 8 步,
hexo init blog-demo这一步会覆盖并还原你原本的的源码文件)这时候新建一个文件夹
new-blog,用来装你的新博客源码的,进入这个文件夹,准备复制我们旧的博客源码进来,我们可以看到旧的博客项目结构是如下样子的:这里红框内的都是需要复制迁移到新的博客的,具体的要不要保留见下表:
需要复制的 需要删除的 _config.yml:站点配置文件 .git:无论是在站点根目录下,还是主题目录下的.git 文件,都可以删掉 _config.butterfly.yml:主题配置文件,为了方便主题升级剥离出来的配置文件 node_modules: npm install会根据 package.json 生成package.json:说明使用哪些依赖包 public: hexo g会重新编译生成scaffolds:文章的模板 .deploy_git:在使用 hexo d时也会重新生成source:自己写的博客源码 db.json 文件: hexo s快速启动所需的数据库themes:主题文件夹(魔改都在里面啦) package-lock.json:记录依赖之间的内部依赖关系,可以根据 package.json重新生成.gitignore:说明在提交时哪些文件可以忽略 复制所需的文件到新电脑的文件夹之后,在
git bash中切换目录到新拷贝的文件夹里,使用npm install命令,进行模块安装。这里绝对不能使用hexo init初始化,因为有的文件我们已经拷贝生成过来了,所以不必用hexo init去整体初始化,如果不慎用了,则站点的配置文件_config.yml里面内容会被重置,所以这一步一定要慎重:1
npm install
执行以下命令情况并启动项目,进入
localhost:4000进行验证:1
hexo cl; hexo g; hexo s
当本地能成功启动,之后就可以部署到 Github,执行以下代码:
1
hexo d
如果出现
Deploy done,则说明部署成功,稍等两分钟,打开浏览器访问之前的域名就可以看到之前的博客,以后你可以在这台新电脑上魔改和写文章了~
注意,重装电脑后,如果你的文件全都没有发生变化,那么你需要做的是:
1.重新配置git选项:
1 | git config --global user.name "你的用户名" |
2.重新获取sshkey并且填写到你的github上
1 | ssh-keygen -t rsa -C "你的邮箱" |
之后打开C盘下用户文件夹下的.ssh的文件夹,会看到 id_rsa.pub
用记事本打开上述图片中的公钥(id_rsa.pub),复制里面的内容,然后开始在github中配置ssh密钥。
进入github,点击右上角头像 选择settings,进入设置页后选择 SSH and GPG keys,名字随便起,公钥填到Key那一栏。
3.第三步 尝试将你的本地文件进行提交,会提醒你这个仓库不可信,按照
1 | git config --add safe.directory '*' |
设置就好
4.记得使用hexo s尝试本地部署,并且记得配置你的本地nodejs npm 和你的hexo的安装
1 | npm install -g hexo-cli |
Github Action 实现自动部署
Github Action 简介
每次部署Hexo都需要运行指令三件套,随着文章越来越多,编译的时间也随之越来越长,通过Github Action,我们只需要在每次完成博客的编写或修改以后,将改动直接push到远程仓库,之后的编译部署的工作统统交给CI来完成即可
1 | [GITHUBTOKEN]:15076c8eb9c874sad676bc9bfb13sadw86babf2 |
获取 Token
为了确保交由Github Action来持续部署时,Github Action具备足够的权限来进行hexo deploy操作,需要先获取Token
Github –> 右上角头像 –>settings–> 下拉到最下面 developer settings —> 三个选项中最后一个 Personal access tokens
选择下面那个 Tokens(classic)
左上角选 Generate new tokens
名字随便起,但是要 repo / workflow 选项必须勾选
生成后立刻记住,保存起来。
创建存放源码的私有仓库
Create a new repository 选择 private
配置 Github Action
1.在[Blogroot]新建.github文件夹,注意开头是有个.的。然后在.github内新建workflows文件夹,再在workflows文件夹内新建autodeploy.yml,在[Blogroot]/.github/workflows/autodeploy.yml里面输入
1 | # 当有改动推送到master分支时,启动Action |
新仓库默认的分支是 main,你可以选择修改分支名称为 master 方便后续管理
打开 code 页面, 左边头像下方 有个 main 分支,点开 点 view all branches 在 default 中右边三个点,点开就有 rename branch
重设远程仓库与分支
1.删除或者先把[Blogroot]/themes/butterfly/.git移动到非博客文件夹目录下,原因是主题文件夹下的.git文件夹的存在会导致其被识别成子项目,从而无法被上传到源码仓库。
2.在博客根目录[Blogroot]路径下运行指令
1 | git init #初始化 |
3.添加屏蔽项
因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。
打开[Blogroot]/.gitignore,输入以下内容:
1 | .DS_Store |
检验是否成功
打开你的私有仓库 找到 action,找到自动部署,点击 deploy,查看是否全部打勾
提交仓库的代码
代码三件套:
1 | hexo cl |
变为:
1 | git add . |
写在最后
魔改需谨慎哦,出错了记得及时回滚,就不会有事啦~
希望你也能建出属于自己的好看的博客!BYE~~~( ̄ ▽  ̄)~*

