介绍 在文章「博客迁移至Hexo,并更名为矩阵。 」中,提到过一图流背景与顶部图的修改。
本文会详细介绍其修改过程。
主题配置 修改 Butterfly 的配置文件 _config.butterfly.yml
。
编辑 index_img
、index_top_img_height
、background
、footer_bg
、mask.header
选项。 设置网站背景,将主页顶部图和页脚背景改为透明,调整主页顶部图高度,移除顶部图的黑色半透遮罩。(需要将示例地址替换为自己的图片地址。)
_config.butterfly.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 index_img: transparent index_top_img_height: 400px background: url(https://example.com/img/background.jpg) footer_bg: transparent mask: header: false
引入相关样式 新建一个文件,位于 source/css/modify.styl
,并增加以下内容。(此处只是举例,也可以使用已有的样式文件。)
modify.styl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 @import 'nib' #page-header background : transparent !important &.post-bg , &.not-home-page height : 280px !important #post-info bottom : 40px !important text-align : center #page-site-info top : 140px !important @media screen and (max-width : 768px ) &.not-home-page height : 200px !important #post-info bottom: 10px !important #page-site-info top: 100px !important .top-img height : 250px margin: -50px -40px 50px border-top-left-radius: inherit border-top-right-radius: inherit background-position: center center background-size: cover transition: all 0.3s @media screen and (max-width : 768px ) height : 230px margin: -36px -14px 36px [data-theme='dark'] & filter: brightness(0.8 ) // 页脚 #footer:before background-color: alpha(#FFF, .5 ) [data-theme='dark'] & background-color: alpha(#000 , .5 ) #footer-wrap, #footer-wrap a color : #111 transition: unset [data-theme='dark'] & color : var(--light-grey)
修改 Butterfly 的配置文件 _config.butterfly.yml
,在 inject.head
选项引入样式。
_config.butterfly.yml 1 2 3 4 5 6 7 8 9 inject: head: - <link rel="stylesheet" href="/css/modify.css">
Hexo 会将 Stylus 渲染成 CSS 文件,所以此处应为 modify.css
。
增加插件脚本 因为使用了 cheerio
来解析 HTML,所以需要先安装此依赖。
新建一个文件,位于 scripts/modify.js
,并增加以下内容。(此处只是举例,也可以使用已有的插件脚本文件。)
modify.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 'use strict' ;const { filter } = hexo.extend ;const cheerio = require ('cheerio' );function insertTopImg ($ ) { const header = $('#page-header' ); if (header.length === 0 ) return ; const background = header.css ('background-image' ); if (!background) return ; $('#post, #page, #archive, #tag, #category' ).prepend (`<div class="top-img" style="background-image: ${background} ;"></div>` ); } filter.register ('after_render:html' , (str, data ) => { const $ = cheerio.load (str, { decodeEntities : false }); insertTopImg ($); return $.html (); });
大功告成 👏 恭喜你完成了修改,可以使用以下命令进行预览。
后记 其实早些时候,有篇最终效果类似的修改教程。 是友链的 @Nesxc 大佬写的「butterfly文章页美化教程 」。 他是通过修改主题源文件的方式实现的。 而我是用 Hexo 的 插件 系统实现的。
插件版的优点是更新主题时,只要结构变化不大,无需任何操作即可继续使用。并且在管理上也方便。 源文件版的优点是效率会略高一点,毕竟是直接修改的主题源文件。
如果像我一样,不想每次升级主题都可能要重新改一遍,或是为了方便管理,则可以选择插件版。 如果本来就修改了源文件,也不介意再多修改这一个,则可以选择源文件版。