首页分类磁贴配置与自定义
前言
默认的 Butterfly 主题首页只有文章列表,缺少直观的分类入口。hexo-butterfly-categories-card 插件可以在首页文章列表上方展示一组分类磁贴卡片,每个卡片显示分类名称、描述、文章数量和背景封面,点击即可跳转到对应分类页面。本文介绍插件的安装配置,以及如何通过自定义 CSS 修改图标和悬停效果。
一、安装插件
在博客根目录执行:
1 | npm install hexo-butterfly-categories-card --save |
二、基础配置
在 _config.butterfly.yml 中添加以下配置:
1 | # hexo-butterfly-categories-card 首页分类磁贴 |
配置说明
| 字段 | 说明 |
|---|---|
enable |
是否启用分类磁贴 |
priority |
过滤器优先级,一般保持默认 |
enable_page |
应用页面,/ 表示仅首页 |
layout |
挂载容器,绑定到 #recent-posts 的第一个子元素前 |
column |
列数,odd 为 3 列,even 为 4 列 |
row |
显示行数,超出后变为滚动 |
message |
分类列表,name 需与实际分类名一致 |
三、自定义样式
插件自带基础 CSS,但默认样式较为简单。为了统一博客视觉风格,建议通过独立的 CSS 文件进行覆盖,而非修改 custom.css(保持按功能拆分文件的原则)。
1. 创建独立样式文件
在 source/css/category-tile.css 创建文件:
1 | /* 分类磁贴自定义样式 */ |
2. 修改说明
图标替换:插件默认使用 \f02d(fa-book 书本图标),这里替换为 \f15c(fa-file 文件图标),更符合”文章数量”的语义。
悬停优化:
- 添加
translateY(-6px)使卡片在悬停时微微上浮 - 增加外层阴影
0 12px 30px营造立体感 - 使用
cubic-bezier(0.25, 0.46, 0.45, 0.94)缓动函数使动画更平滑
3. 注入样式文件
在 _config.butterfly.yml 的 inject.head 中添加:
1 | inject: |
四、踩坑记录
1. Font Awesome 版本问题
插件默认 CSS 中的字体声明:
1 | /* 插件原样式 — 写死了 FA6 */ |
但 Butterfly 主题当前使用的是 Font Awesome 7.1.0,字体族名称为 Font Awesome 7 Free,而非 Font Awesome 6 Free。因此自定义覆盖时必须使用正确的字体族名和字重:
1 | font-family: "Font Awesome 7 Free" ; |
排查方法:检查
plugins.yml中 fontawesome 的版本号,或从 CDN 拉取对应版本的 CSS 查看@font-face声明中的font-family名称。
2. Emoji 在 content 中不可用
最初尝试用 emoji 📄 替换图标:
1 | /* 不可行 */ |
CSS 的 content 属性对 emoji 的浏览器兼容性很差,最终改用 Font Awesome 图标码。
五、插件默认样式参考
以下是 hexo-butterfly-categories-card@1.0.0 的完整默认 CSS,可作为自定义覆盖的参考:
1 | li.categoryBar-list-item { |
如需进一步自定义(如修改卡片高度、渐变方向、文字大小等),直接在 category-tile.css 中用 !important 覆盖即可。
总结
分类磁贴通过 hexo-butterfly-categories-card 插件实现,配置简单,关键踩坑点是 Font Awesome 版本差异导致的字体族名不匹配。自定义样式建议按功能拆分为独立 CSS 文件,通过 inject 注入,便于维护。
参考资料:

