效果预览
步骤 修改主题的配置文件 _config.butterfly.yml,将index_img
和footer_bg
的参数改为transparent
,background设置为自己的图片地址
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
引入样式
注:modify.styl
会被 Hexo 渲染成 modify.css
文件,所以此处应为 modify.css
1 2 3 4 5 6 7 8 9 # other (其他) # -------------------------------------- # Inject # Insert the code to head (before '</head > ' tag) and the bottom (before '</body > ' tag) # 插入代码到头部 </head > 之前 和 底部 </body > 之前 inject: head: - <link rel ="stylesheet" href ="/css/modify.css" >
在博客根目录打开cmd,安装依赖
新建一个文件,位于 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 '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 (); });
hexo三连~