时间轴
时间轴
2025-12-27
init
本文介绍了在Hexo Butterfly主题中实现MacOS液态玻璃效果的具体方法。文章详细讨论了基于多层叠加(包括容器壳、液态模糊层、色调蒙层、高光层及内容层)与SVG滤镜的实现思路,并总结了Hover交互动态效果及在主题中进行实际应用的修改步骤。
在Codepen上看到的,稍微改了一下,效果可以看本站aside的card或nav。
实现思路
主要思路是利用多层叠加,共四层
1 | <div class="liquidGlass-wrapper"> |
liquidGlass-wrapper
容器壳
1 | .liquidGlass-wrapper { |
- 作用:最外层容器,负责整体阴影和动画过渡。
- 关键点:
background: none和backdrop-filter: none是为了不让它自己产生模糊,把模糊交给内部.liquidGlass-effect。- 阴影模拟玻璃的立体感。
transition让 hover 时的圆角和 padding 变化更流畅。
liquidGlass-effect
核心“液态”模糊层
1 | .liquidGlass-effect { |
backdrop-filter: blur(3px)
对背景内容(如网页其他部分)做模糊处理 → 这是“毛玻璃”的基础。filter: url(#glass-distortion)⭐ 这是“液态”感的关键!它引用了一个 SVG 滤镜(#glass-distortion),通常定义在页面<svg>中,用于对图像施加扭曲、波纹、液态流动等效果。isolation: isolate确保该层创建新的层叠上下文,避免滤镜影响其他元素。
glass-distortion
1 | <svg style="display: none"> |
liquidGlass-tint
色调蒙层
1 | .liquidGlass-tint { |
- 在模糊层之上叠加一层半透明白色(也可改为浅蓝、浅灰等)。
- 模拟真实玻璃的“反光底色”,让文字/内容更易读。
z-index: 1确保它在 effect 之上、shine 之下。
liquidGlass-shine
高光层
1 | .liquidGlass-shine { |
- 使用 内阴影(inset box-shadow) 模拟玻璃边缘的高光和微反光。
- 上右亮(+2px 白光),下左稍暗(-1px 白光)→ 营造光照方向感。
z-index: 2放在最上层(但低于内容)。
liquidGlass-box
内容层
1 |
|
- 真正放内容的地方(如头像、文字)。
z-index: 3确保内容在所有玻璃效果层之上,清晰可见。position: relative使其脱离普通流,但仍在 wrapper 内。
交互效果(Hover 动态)
1 | /* OTHER STYLES */ |
- 悬停时:
- 圆角变大(
+1em)→ 模拟“液体膨胀”或“柔软变形”; - 内边距增大 → 整体“呼吸感”;
- 所有非内容层同步圆角变化,保持视觉一致。
- 圆角变大(
应用到butterfly的例子
下面以card_author为例,即显示作者信息的卡片。
card_author.pug
修改themes/butterfly/layout/includes/widget/card_author.pug
1 | if theme.aside.card_author.enable |
liquid_glass.css
创建自定义css文件themes\butterfly\source\css\liquid_glass.css
1 | /* LIQUID GLASS STYLES */ |
inject
主题的_config.yaml的inject中引入
1 | inject: |