butterfly加入彩色动态图标
魔改有风险,请提前做好备份
效果
教程
转载自糖果屋微调合集
参考:博客魔改教程总结(二)
菜单栏彩色动态图标
点击查看教程
引入iconfont自定义图标
新建图标项目
- 访问阿里巴巴矢量图标库,注册登录。
- 搜索自己心仪的图标,然后选择添加入库,加到购物车。
- 选择完毕后点击右上角的购物车图标,打开侧栏,选择添加到项目,如果没有项目就新建一个。
- 可以通过上方顶栏菜单->资源管理->我的项目,找到之前添加的图标项目。(现在的iconfont可以在图标库的项目设置里直接打开彩色设置,然后采用fontclass的引用方式即可使用多彩图标。但是单一项目彩色图标上限是40个图标,酌情采用。)
引入图标
线上引入方案,我最开始使用的是font-class引用。但我使用此方法引用后虽然可以引入彩色图标,但无法加入动态效果还出现了bug,所以选择了symbol引入(效果最好),所以我就说symbol引入了
- 复制项目下面生成的symbol代码  
 例如:- 1 - //at.alicdn.com/t/font_8d5l8fzk5b87iudi.js 
- 在 - [Blogroot]\themes\butterfly\source\css\目录(没有就创建)下新建- icon.css:- 1 
 2
 3
 4
 5
 6
 7- svg.icon { 
 width: 1.15em; height: 1.15em;
 /* width和height定义图标的默认宽度和高度*/
 vertical-align: -0.15em;
 fill: currentColor;
 overflow: hidden;
 }
- 引入上面两个文件 - 1 
 2
 3
 4
 5- inject: 
 head:
 - <link rel="stylesheet" href="/css/self/icon.css"> #自定义图标
 bottom:
 - <script async src="//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js"></script> # 改成你自己的图标库
添加动态效果
确保做完上述操作后
- 把[BlogRoot]\themes\butterfly\layout\includes\header\menu_item.pug替换为:这里为了防止出bug,我记录下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
 44if theme.menu 
 //- for mobile sidebar
 - let sidebarChildHide = theme.hide_sidebar_menu_child ? 'hide' : ''
 .menus_items
 each value, label in theme.menu
 if typeof value !== 'object'
 .menus_item
 a.site-page.faa-parent.animated-hover(href=url_for(trim(value.split('||')[0])))
 if value.split('||')[1]
 - var icon_value = trim(value.split('||')[1])
 - var anima_value = value.split('||')[2] ? trim(value.split('||')[2]) : 'faa-tada'
 if icon_value.substring(0,2)=="fa"
 i.fa-fw(class=icon_value + ' ' + anima_value)
 else if icon_value.substring(0,4)=="icon"
 svg.icon(aria-hidden="true" class=anima_value)
 use(xlink:href=`#`+ icon_value)
 span=' '+label
 else
 .menus_item
 a.site-page.faa-parent.animated-hover(href='javascript:void(0);')
 if label.split('||')[1]
 - var icon_label = trim(label.split('||')[1])
 - var anima_label = label.split('||')[2] ? trim(label.split('||')[2]) : 'faa-tada'
 if icon_label.substring(0,2)=="fa"
 i.fa-fw(class=icon_label + ' ' + anima_label)
 else if icon_label.substring(0,4)=="icon"
 svg.icon(aria-hidden="true" class=anima_label)
 use(xlink:href=`#`+ icon_label)
 span=' '+ trim(label.split('||')[0])
 i.fas.fa-chevron-down.expand(class=sidebarChildHide)
 ul.menus_item_child
 each val,lab in value
 li
 a.site-page.child.faa-parent.animated-hover(href=url_for(trim(val.split('||')[0])))
 if val.split('||')[1]
 - var icon_val = trim(val.split('||')[1])
 - var anima_val = val.split('||')[2] ? trim(val.split('||')[2]) : 'faa-tada'
 if icon_val.substring(0,2)=="fa"
 i.fa-fw(class=icon_val + ' ' + anima_val)
 else if icon_val.substring(0,4)=="icon"
 svg.icon(aria-hidden="true" class=anima_val)
 use(xlink:href=`#`+ icon_val)
 span=' '+ labmenu_item.pug原本的内容(如果butterfly版本和我的版本4.5.1相差太大,内容不一样了就不要直接替换了,自己做好备份):点击查看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
 27if theme.menu 
 .menus_items
 each value, label in theme.menu
 if typeof value !== 'object'
 .menus_item
 - const valueArray = value.split('||')
 a.site-page(href=url_for(trim(valueArray[0])))
 if valueArray[1]
 i.fa-fw(class=trim(valueArray[1]))
 span=' '+label
 else
 .menus_item
 - const labelArray = label.split('||')
 - const hideClass = labelArray[2] && trim(labelArray[2]) === 'hide' ? 'hide' : ''
 a.site-page.group(class=`${hideClass}` href='javascript:void(0);')
 if labelArray[1]
 i.fa-fw(class=trim(labelArray[1]))
 span=' '+ trim(labelArray[0])
 i.fas.fa-chevron-down
 ul.menus_item_child
 each val,lab in value
 - const valArray = val.split('||')
 li
 a.site-page.child(href=url_for(trim(valArray[0])))
 if valArray[1]
 i.fa-fw(class=trim(valArray[1]))
 span=' '+ lab- 最后就可以修改 - [Blogroot]\_config.butterfly.yml配置了,把原来的fas fa-xxxx就可以修改为你的icon图标名,后面在跟上动态效果名
 例如我的是:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- menu: 
 首页: / || icon-zhuye- || faa-tada
 文章 || icon-tubiaozhizuomoban- || faa-tada || hide:
 时间轴: /archives/ || icon-ruzhishijian || faa-tada
 标签: /tags/ || icon-biaoqian || faa-tada
 分类: /categories/ || icon-wenjianjia || faa-tada
 统计: /charts/ || fas fa-chart-simple
 随便逛逛: /random/ || icon-suiji || faa-tada
 娱乐 || icon-yule1 || faa-tada || hide:
 音乐: /music/ || icon-yinle || faa-tada
 看星星: /meteor/ || icon-shouhuixingxing || faa-tada
 测试页面: /test/ || icon-shiguan || faa-tada
 # Movie: /movies/ || fas fa-video
 其他 || icon-List || faa-tada || hide:
 说说: /artitalk/ || icon-icon-test || faa-tada
 友链: /link/ || icon-lianjie || faa-tada
 留言板: /comments/ || icon-liuyan || faa-tada
 关于: /about/ || icon-aixin || faa-tada- 其中hide是默认不展开折叠 
- 配置完后可以重启项目查看: - 1 - hexo cl; hexo s 
 
social社交卡片彩色动态图标
注:需要先完成菜单栏彩色动态图标
点击查看教程
- [Blogroot]\themes\butterfly\layout\includes\header\social.pug替换为以下代码:还是为了防止出bug,记录下- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- each value, title in theme.social 
 a.social-icon.faa-parent.animated-hover(href=url_for(trim(value.split('||')[0])) target="_blank" title=title === undefined ? '' : trim(title))
 if value.split('||')[1]
 - var icon_value = trim(value.split('||')[1])
 - var anima_value = value.split('||')[2] ? trim(value.split('||')[2]) : 'faa-tada'
 if icon_value.substring(0,2)=="fa"
 i.fa-fw(class=icon_value + ' ' + anima_value)
 else if icon_value.substring(0,4)=="icon"
 svg.icon(aria-hidden="true" class=anima_value)
 use(xlink:href=`#`+ icon_value)- social.pug的原本内容:- 点击查看- 1 
 2
 3
 4- each url, icon in theme.social 
 a.social-icon(href=url_for(trim(url.split('||')[0])) target="_blank"
 title=url.split('||')[1] === undefined ? '' : trim(url.split('||')[1]))
 i(class=icon)
- 修改 - [Blogroot]\_config.butterfly.yml的social配置项。- 1 
 2
 3
 4
 5
 6
 7- social: 
 # iconfont彩色图标
 Github: https://github.com/python3student || icon-rat || faa-tada
 # fontawesome单色图标
 Email: mailto:469784630@qq.com || fas fa-envelope || faa-tada
 # iconfont单色图标
 Bilibili: https://space.bilibili.com/1840039653 || icon-ox || faa-tada- 注:写法和原来不一样了 
 原来:图标: 跳转链接 || 注释
 现在: 注释: 跳转链接 || 图标名 || 动态效果名
- 配置完后可以重启项目查看: - 1 - hexo cl; hexo s 
修改搜索图标
注:需要先完成菜单栏彩色动态图标
点击查看教程
直接添加动态效果(使用fas fa-xxxx的方式)
点击查看教程
- 确保 - inject配置项引入了这两个依赖- 1 
 2
 3
 4
 5
 6
 7- inject: 
 head:
 #动画标签anima的依赖
 - <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/l-lin/font-awesome-animation/dist/font-awesome-animation.min.css" media="defer" onload="this.media='all'">
 bottom:
 # 阿里矢量图标,这串是我的图标库,你的链接会有所不同。
 - <script async src="//at.alicdn.com/t/c/font_3805964_cz3h2lzj9m.js"></script>
- 找到 - [Blogroot]\themes\butterfly\layout\includes\header\nav.pug文件:- 点击查看原始文件- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- nav#nav 
 span#blog_name
 a#site-name(href=url_for('/')) #[=config.title]
 
 #menus
 if (theme.algolia_search.enable || theme.local_search.enable)
 #search-button
 a.site-page.social-icon.search
 i.fas.fa-search.fa-fw
 span=' '+_p('search.title')
 !=partial('includes/header/menu_item', {}, {cache: true})
 #toggle-menu
 a.site-page
 i.fas.fa-bars.fa-fw
- nav.pug修改为:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- nav#nav 
 span#blog_name
 a#site-name(href=url_for('/')) #[=config.title]
 
 #menus
 if (theme.algolia_search.enable || theme.local_search.enable)
 #search-button
 a.site-page.social-icon.search.faa-parent.animated-hover
 i.fas.fa-search.fa-fw.faa-tada
 span=' '+_p('search.title')
 !=partial('includes/header/menu_item', {}, {cache: true})
 #toggle-menu
 a.site-page
 i.fas.fa-bars.fa-fw
- 重启项目查看: - 1 - hexo cl; hexo s 
换为自己的图标添加动态效果(使用阿里巴巴图标库)
点击查看教程
- 确保 - [Blogroot]\_config.butterfly.yml的- inject配置项引入了这两个依赖- 1 
 2
 3
 4
 5
 6
 7- inject: 
 head:
 #动画标签anima的依赖
 - <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/l-lin/font-awesome-animation/dist/font-awesome-animation.min.css" media="defer" onload="this.media='all'">
 bottom:
 # 阿里矢量图标,这串是我的图标库,你的链接会有所不同。
 - <script async src="//at.alicdn.com/t/c/font_3805964_cz3h2lzj9m.js"></script>
- 找到 - [Blogroot]\themes\butterfly\layout\includes\header\nav.pug文件:- 点击查看原始文件- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- nav#nav 
 span#blog_name
 a#site-name(href=url_for('/')) #[=config.title]
 
 #menus
 if (theme.algolia_search.enable || theme.local_search.enable)
 #search-button
 a.site-page.social-icon.search
 i.fas.fa-search.fa-fw
 span=' '+_p('search.title')
 !=partial('includes/header/menu_item', {}, {cache: true})
 #toggle-menu
 a.site-page
 i.fas.fa-bars.fa-fw- nav.pug修改为:注:其中- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19- nav#nav 
 span#blog_name
 a#site-name(href=url_for('/')) #[=config.title]
 
 #menus
 if (theme.algolia_search.enable || theme.local_search.enable)
 #search-button
 a.site-page.social-icon.search.faa-parent.animated-hover
 svg.icon(aria-hidden="true" class='faa-tada')
 use(xlink:href="#icon-icon-sousuo")
 span=' '+_p('search.title')
 !=partial('includes/header/menu_item', {}, {cache: true})
 #toggle-menu
 a.site-page
 i.fas.fa-bars.fa-fw- faa-tada为动画名,- icon-icon-sousuo为我的图标名,你应替换为你的,否则不会显示
- 重启项目查看:1 hexo cl; hexo s 
 
图标局部调整
自己挑选的图标,可能会因为图标大小不一而出现图标不整齐的情况,下面提供几种解决方案
点击查看教程
直接找人家的图标套图,直接用图标库里的,这样大小就一样了。因为我想用自己挑选的图标,所以我用了第二种解决办法


在项目里直接给图标调整大小和位置进行调整
- 点击图标右上角的编辑 
- 通过提供的位移,旋转,大小进行调整,然后保存重新生成代码 
- 修改[Blogroot]\_config.butterfly.yml的inject配置项引入新的代码1 
 2
 3
 4inject: 
 bottom:
 # 阿里矢量图标,这串是我的图标库,改成你新生成的链接。
 - <script async src="//at.alicdn.com/t/c/font_3805964_cz3h2lzj9m.js"></script>
- 重启项目查看并不断调整:1 hexo cl; hexo s 
动态效果合集
点击查看效果
转载自Tag Plugins Plus
更多详情请参看font-awesome-animation文档
| 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-tada animated | faa-tada animated-hover | faa-tada | 
| 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 | 











