Hexo博客之butterfly主题优雅魔改系列(持续更新)

为了便于各位博主了解到是否新增了魔改方案,请查看更新记录页

前置说明

魔改亮点

🆙主题可升级:几乎不改动主题源码。即便魔改,也不需要为升级主题而烦恼。

🍳简单快速:简单上手,快速修改。

🍭看我72变:多种背景随意更换。

📕优雅阅读:对卡片进行不同的透明度设置,实现更优雅的阅读。

👦个性友联:为你的好友设置不同的颜色

🎈页脚更炫酷:彩色渐变footer喜欢么?

🍟更多优点等你发现


为什么写这篇文章?

相信在这之前,大家肯定看过网上的各种魔改教程。但是这些魔改教程基本上千篇一律,都是一种方式,大量修改模板(主题源文件)。这种方式的好处就是简单快速且直接,缺点就是每次升级😏,不用我说了吧。除非你不打算在升级。

但是对于一个热爱升级的我来说,我怎么可以这样。于是乎我便写了这篇文章。按照此教程进行的魔改,大部分都是通过引入新的js文件和css文件实现的。这意味着再也不用因为升级而再次魔改而苦恼了😄。同样的缺点也还是有的,引入新文件必定导致页面加载速度下降,下降多少取决于访客网速、电脑配置及服务器的带宽。具体速度可以参考本博客。

此博客环境:Coding + Jsdeliver

这篇文章大部分修改全部没有改动pug模板。基本都是添加css文件和js文件实现的修改。

至此(2020-06-12)只有两项(友链页、双评论)修改改动了pug模板。

至于友链页 ,可改动空间并不大,因此升级主题只需要直接将文件覆盖作者文件即可。

而双评论,只需要每次升级主题将对应文件的else if改为if即可。

相信上述两项pug模板的修改不需要刻意记录也能印在心头把?

快速预览魔改范围

JS/CSS如何使用

下面关于各种修改我会直接给出参考代码,你可以每做一个修改都建立一个新的css/js文件,也可以将所有的代码都复制到一个css/js文件。

JS/CSS如何引用

此篇文章所说的一切引用(包括css和js)都可以参考这里。

  1. 打开主题配置文件(butterfly.yml)
  2. 定位搜索 inject
  3. 其中head是用来引入css的。bottom是用来引入js的。

示例:

inject:
  head:
    - <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/css/flink.min.css">
  bottom:
    - <script src="https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/js/hideMobileSidebar.js"></script>

注:以上方式2.3.5版本可用,其他版本请自行查找引入自定义js及css的地方。

引用方式说明

引用方式二选一即可。

以相对路径引入

  1. 将写好的css文件移动到\Butterfly\source\css\目录下。

  2. 然后修改配置文件的引入方式

以外链的方式引入

同样的可以将这个文件上传到cdn,如七牛云、又拍云、GitHub+Jsdeliver等。

只需要将引入地址写为你的文件外链地址即可。

例如我的jsd链接

注:不同版本可能设置略有不同,请仔细对照你所使用版本的文档。引入并非写个连接,而是使用html标签引入。

快速“复制”

不想动手,就想得到魔改后的效果。😏可以直接使用作者自用的css。

直接使用作者自用的css可能会导致自己的布局出现错误排版,或者其他各种问题。无法解决!或者自行解决。(除非自己懂前端。)

css

  1. 自定义css

    https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/pool.min.css

  2. 阿里iconfont

    https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/iconfont.min.css

js

  1. 自定义js

    https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/js/pool.min.js

以上三个链接引用后理论上会与我的博客效果一模一样(不包含友链、双评论)。其中:

  • 友情链接页面

    替换模板即可,无需在添加css(引用以上三个链接的情况下)

  • 双评论

    修改模板,无需添加css(引用以上三个链接的情况下)

小康的蝴蝶魔改库

这个工具库主要为了方便修改js部分而编写的库,以后可能会扩充也可能是最后一个版本。

具体使用与文档参照:xkTool工具库文档

使用此库后此页面所有有关js部分的代码(css代码参照此文档)均可参照文档使用对象方法调用,而无需复制粘贴冗长的代码。例如:

  • 随机背景
  • 简单插入阿里svg
  • banner图滤镜效果、透明
  • 。。。

视觉体验

这部分修改主要是针对进入博客后的直观感受。

背景

与本博客同款背景。开启需关闭背景图片设置,可能也需要关闭js动态背景。具体请自己尝试,本人没有尝试过。(主题的background请设置'#efefef'

背景可参照Hexo博客之butterfly主题优化更换背景这篇文章进行魔改

去掉Banner图

效果图:

通过几行JS即可搞定:

var full_page = document.getElementsByClassName("full_page");
if (full_page.length != 0) {
   
  full_page[0].style.background = "transparent";
}
  • 2020-05-17

    F 修复连同文章页也变透明的bug

鼠标样式

将以下代码复制到你所创建的css文件即可。

body {
   
    cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur),
        default;
}
a,
img {
   
    cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/pointer.cur),
        default;
}

代码解读:以上代码表示当鼠标在body元素及aimg元素上时所显示的鼠标为url路径里的样式。

因此你可以将里边的文件替换为任意鼠标样式。

鼠标*字跟随样式

真实效果可以去IconFont表或者友情链接页面去体验。

这个修改只是一个js,当然你可以全局引入,这样就会在整个博客都有这种效果。当然也可以向我一样,只在某个文章引入。

  1. 全局引入

    直接在配置文件处引入这个js即可。

    https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/js/mouse_snow.min.js

  2. 只在部分文章引入

    将下边内容复制到markdown即可。注意:如果你的编辑器为你转化成了代码块,请删掉代码块。因为这是一个HTML标签

    <script src='https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/js/mouse_snow.min.js'></script>
    

页脚渐变

效果图

同样的将以下代码复制到你所创建的css文件即可。

/* 页脚footer */
/* 渐变色滚动动画 */
@-webkit-keyframes Gradient {
   
    0% {
   
        background-position: 0 50%;
    }

    50% {
   
        background-position: 100% 50%;
    }

    100% {
   
        background-position: 0 50%;
    }
}

@-moz-keyframes Gradient {
   
    0% {
   
        background-position: 0 50%;
    }

    50% {
   
        background-position: 100% 50%;
    }

    100% {
   
        background-position: 0 50%;
    }
}

@keyframes Gradient {
   
    0% {
   
        background-position: 0 50%;
    }

    50% {
   
        background-position: 100% 50%;
    }

    100% {
   
        background-position: 0 50%;
    }
}
#footer {
   
    background: linear-gradient(-45deg, #ee7752, #ce3e75, #23a6d5, #23d5ab);
    background-size: 400% 400%;
    -webkit-animation: Gradient 10s ease infinite;
    -moz-animation: Gradient 10s ease infinite;
    animation: Gradient 10s ease infinite;
    -o-user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
}
#footer:before {
   
    background-color: rgba(0, 0, 0, 0);
}

滚动条

将以下代码复制到你所创建的css文件即可。

/* 滚动条 */
::-webkit-scrollbar {
   
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
   
  background-color: rgba(73, 177, 245, 0.2);
  border-radius: 2em;
}

::-webkit-scrollbar-thumb {
   
  background-color: #49b1f5;
  background-image: -webkit-linear-gradient(
    45deg,
    rgba(255, 255, 255, 0.4) 25%,
    transparent 25%,
    transparent 50%,
    rgba(255, 255, 255, 0.4) 50%,
    rgba(255, 255, 255, 0.4) 75%,
    transparent 75%,
    transparent
  );
  border-radius: 2em;
}

::-webkit-scrollbar-corner {
   
  background-color: transparent;
}

::-moz-selection {
   
  color: #fff;
  background-color: #49b1f5;
}

手机侧边栏默认不展开

这段修改需要将下边的代码复制到新建的js文件中。

var mobile_sidebar_menus = document.getElementById("mobile-sidebar-menus");
var menus_item_child = mobile_sidebar_menus.getElementsByClassName(
    "menus_item_child"
);
var menus_expand = mobile_sidebar_menus.getElementsByClassName("menus-expand");
for (var i = 0; i < menus_item_child.length; i++) {
   
    menus_item_child[i].style.display = "none";
    menus_expand[i].className += " menus-closed";
}

这里提供一个现成的地址,可以直接在引用处填写。也可以复制上边的代码到你自己的js文件中。

在线地址:https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/js/hideMobileSidebar.js

分类卡片折叠

分类卡片隐藏需要同时引入css和js文件。

  1. JavaScript代码

    var card_category_list = document.getElementsByClassName(
        "card-category-list child"
    );
    var item = document.getElementsByClassName("card-category-list-item");
    function toggle(t) {
         
        var display = t.parentElement.nextSibling.style.display;
        if (display == "none") {
         
            t.parentElement.nextSibling.style.display = "block";
            t.parentElement.nextSibling.style.height = "100%";
            t.className = t.className.replace("fa-chevron-up", "fa-chevron-down");
        } else {
         
            t.parentElement.nextSibling.style.display = "none";
            t.className = t.className.replace("fa-chevron-down", "fa-chevron-up");
        }
    }
    
    for (var i = 0; i < card_category_list.length; i++) {
         
        card_category_list[i].style.display = "none";
        card_category_list[i].style.transition = "all 1s";
        card_category_list[i].previousSibling.innerHTML +=
            '<i class="fa fa-chevron-up menus-expand  menus-closed" aria-hidden="true" style="margin-left:20px;" οnclick="toggle(this)"></i>';
    }
    
  2. CSS代码

    #aside_content
    .card-archives
    ul.card-archive-list
    > .card-archive-list-item
    a
    span:first-child,
    #aside_content
    .card-categories
    ul.card-category-list
    > .card-category-list-item
    a
    span:first-child {
         
        width: auto;
        min-width: 50%;
    }
    

同样的,这个魔改也提供在线地址。

文章表情不换行

这个是一段JS代码,我建议在你需要添加表情的文章引入这段js。如果全局引入可能会拖慢页面加载速度。

<script src="https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/js/WithoutLine.min.js"></script>

以上代码,直接在markdown文档最下边写即可。

注意:如果你用的markdown如果将其转为代码块,那么请删除代码块,因为这是一个脚本内容。正确写的姿势如图(typora为例):

错误示例:

部分编辑器可能将其自动转化为代码块,请各位博主注意些!

阅读模式的背景与字体

阅读模式下会给body加一个class名,因此改起来很简单。

.read-mode{
   
    /* 字体大小 */
    font-size:17px;
    /* 可以在这里引入自定义字体,具体方法请自行百度css引入字体 */
}
.read-mode #web_bg{
   
    /* 背景颜色 */
    background:#fdf6e3;
}

任意元素添加动效动画

On DOM load On hover On parent hover
 faa-wrench animated  faa-wrench animated-hover  faa-wrench
 faa-ring animated  faa-ring animated-hover  faa-ring
 faa-horizontal animated  faa-horizontal animated-hover  faa-horizontal
 faa-vertical animated  faa-vertical animated-hover  faa-vertical
 faa-flash animated  faa-flash animated-hover  faa-flash
 faa-bounce animated  faa-bounce animated-hover  faa-bounce
 faa-spin animated  faa-spin animated-hover  faa-spin
 faa-float animated  faa-float animated-hover  faa-float
 faa-pulse animated  faa-pulse animated-hover  faa-pulse
 faa-shake animated  faa-shake animated-hover  faa-shake
 faa-tada animated  faa-tada animated-hover  faa-tada
 faa-passing animated  faa-passing animated-hover  faa-passing
 faa-passing-reverse animated  faa-passing-reverse animated-hover  faa-passing-reverse
 faa-burst animated  faa-burst animated-hover  faa-burst
 faa-falling animated  faa-falling animated-hover  faa-falling
 faa-rising animated  faa-rising animated-hover  faa-rising

理论上这些动效是可以给任意DOM元素添加的。添加方式很简单,引入一个css库:https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/font-awesome-animation.min.css

然后在DOM元素的类名添加相应的动画即可。

例如网址导航栏可以写为- 网址收藏 || https://dh.xiaokang.me/ || fas fa-infinity faa-shake animated

注意:如果使用On parent hover需要向父级元素添加class名faa-parent animated-hover。其余两个不需要。

MAC代码框美化

butterfly.ymlhighlight_theme配置项改为mac后任意引入下方一个css即可。(也可加入到自己的css文件中)

  • 白色代码框

    https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/macWhite.css

    image-20200625185013423

  • 黑色美化版

    https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/macblack.css

    image-20200625184949239

页面类修改

这部分的修改主要是针对一些特殊的页面,例如友链页。

友情链接页面修改

效果图

友情链接修改内容过大,不建议小白修改。

此修改需要替换作者文件(及flink.pug),位置\themes\Butterfly\layout\

flink.pug下载地址:https://tzk.lanzous.com/b06lwtwkb

替换完pug模板之后引入此css样式即可:https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/flink.min.css

  • 2020-0617

    适配蝴蝶3.0版本

  • 2020-05-09

    加入一行小字效果。

字段说明

至于如何配合使用,请自行尝试(此配置加在link.yml下即可)示例如下:

class_test:
  class_name: class名
  class_desc: 小字描述支持html标签
  link_list:
    name: 小康博客
    link: https://antmoe.com
    avatar: https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/avatar.jpg
    descr: 更多效果自行搭配
    # 边框大小 默认为0 
    width: 0px
    # 边框样式 默认 solid
    style: solid
    # 边框颜色 默认淡蓝色 #49b1f5
    color: "#0078e7"
    # 自动旋转 可选值 flash(闪现) link_custom(单色呼吸灯) link_custom1(彩色呼吸灯)
    custom: link_custom1
    # 动画时长设定,默认为0
    time: 4s
    # name的颜色
    namecolor: "#ff9191"
    # descr的颜色
    descolor: "#ff9191"
    # 背景颜色
    background: 0
    # 鼠标悬停旋转角度
    rotate: 360deg
    # 自动旋转 latuo左旋转 rauto右旋转
    autorotate: "lauto"
    # 旋转的
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值