玻璃拟态的三个必要条件 封面
返回上一级

玻璃拟态的三个必要条件

写作时间:2026-08-28
# CSS
# 视觉

玻璃拟态做出来像「磨砂白卡片」,八成不是样式写错了,而是底下没东西可模糊

条件一:背后必须有内容

backdrop-filter 模糊的是元素背后的已绘制内容。如果背后是一片纯色,模糊纯色还是纯色——玻璃感无从谈起。

所以玻璃 UI 的第一步是给画布安排「可被模糊的色彩」:大半径、低透明度的径向渐变光晕,让每张卡背后都有平缓的颜色流动。

条件二:模糊半径与内容频率匹配

  • 背后是平滑渐变:小半径即可,模糊前后几乎无差别;
  • 背后是文字与卡片边缘(典型如导航条):需要大半径,把高频细节摊开,否则高对比边缘会以「光条」「亮线」的形态透出来。

经验值:导航条这类「背后什么都会路过」的层,模糊半径 24px 起;普通卡片背后是平滑渐变时,甚至可以不模糊。

条件三:边缘语言要统一

玻璃的「边」由三件套构成:

  1. 半透明发丝线(深色下 white/12,浅色下 white/40——密度观感对齐);
  2. 顶部 1px 内高光(inset 0 1px 0 white),模拟光从上方来;
  3. 大圆角加柔和投影。

发丝线的透明度有硬阈值:1px 亮线与相邻区域的亮度差超过约 +27 就会被读成「渲染故障」而不是「边框」。底边尤其危险——卡下方是投影压暗的画布,同样的线在底边会显得更亮。稳妥做法是底边不画发丝线,或把线压暗。

一个反直觉的结论

卡片自己往往不需要模糊。 卡片背后是平滑光晕,模糊与不模糊肉眼无差;而每多一层模糊就多一个合成层,导航条再对这些「已模糊层」采样时,容易叠出双层模糊的怪相。把模糊留给真正需要它的导航条,卡片用「半透明底 + 发丝边 + 内高光」就足够成立。

检查清单

  • 画布有可被模糊的色彩流动
  • 高频内容层上方的玻璃用了足够大的模糊半径
  • 发丝线亮度差在阈值内,底边单独处理
  • 只有一层 blur,没有嵌套模糊