介绍 本文将会详细介绍一图流背景与顶部图的修改过程。
设置图片 这个是 Butterfly 自带的功能,修改主题的配置文件 _config.butterfly.yml
。
编辑 index_img
、background
、footer_bg
选项。 设置网站背景,并将主页顶部图和页脚背景改为透明。 (需要将以下示例地址替换为自己的图片地址。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 index_img: transparent background: url(https://example.com/img/background.jpg) footer_bg: transparent
引入相关样式 新建一个文件,位于 source/css/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 @import 'nib' #page-header &, &:before background : transparent !important &.post-bg , &.not-home-page height : 280px !important #post-info bottom : 40px !important #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)
在主题配置文件 _config.butterfly.yml
的 inject.head
引入样式。
1 2 3 4 5 6 7 8 9 inject: head: - <link rel="stylesheet" href="/css/modify.css">
modify.styl
会被 Hexo 渲染成 modify.css
文件,所以此处应为 modify.css
。
增加插件脚本 因为使用了 cheerio
来解析 HTML,所以需要先安装此依赖。
新建一个文件,位于 scripts/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 cheerio = require ("cheerio" );function insertTopImg ($ ) { let header = $("#page-header" ); if (header.length === 0 ) return ; let background = header.css ("background-image" ); if (!background) return ; $("#post, #page, #archive, #tag, #category" ).prepend ( `<div class="top-img" style="background-image: ${background} ;"></div>` ); } hexo.extend .filter .register ("after_render:html" , function (str, data ) { let $ = cheerio.load (str, { decodeEntities : false , }); insertTopImg ($); return $.html (); });
大功告成 👏 恭喜你完成了修改,可以使用以下命令进行预览。
后记 其实在早些时候,有篇最终效果差不多的修改教程。@Nesxc 大佬写的butterfly 文章页美化教程 。 是通过直接修改主题源文件的方式实现的。 而本文的修改方式是使用了 Hexo 的插件 系统实现的。
插件版的优点是更新主题时,只要结构变化不大,便无需任何操作即可继续使用。并且在管理上比较方便。 源文件版的优点是效率会略高一点,毕竟是直接修改的主题源文件。
如果像我一样,不想每次升级主题都可能要重新改一遍,或是为了方便管理,则可以选择插件版。 如果是本来就修改了源文件,也不介意再多修改这一个,则可以选择源文件版。