1实现原理 · 为什么它能做到
可信玻璃由四个成分合成(frost / translucency / edge of glass / depth),缺一就读成普通半透明盒子
Glass is never one property. Every panel needs all four, or it reads as a plain translucent box:
利用 backdrop-filter 的作用域语义:它只模糊元素背后的内容,所以必须压在真实杂物或渐变背景上,纯色底等于没效果
**`backdrop-filter` only blurs content that sits behind the element.** Over a flat background color it does nothing visible — glass needs a busy backdrop (image, gradient, video) to frost.
细节工艺:亮边用 masked ::before 做单向受光(而非一条平 border),并用 feTurbulence 噪点 ::after 消除重模糊下的色带
Draw a masked 1px ring with a lit corner via `::before`, and dither away gradient **banding**
液态玻璃(2026 演进口径)用 SVG 滤镜做折射:动 feTurbulence 驱动 feDisplacementMap,叠在 backdrop-filter 霜面之上
<feDisplacementMap in="SourceGraphic" in2="n" scale="22" xChannelSelector="R" yChannelSelector="G"/>
可访问性与性能是硬约束:prefers-reduced-transparency 退成实心面板、prefers-reduced-motion 停折射、无 backdrop-filter 走 @supports 兜底,且文字对比要 ≥4.5:1
**Contrast over busy backgrounds**: translucent panels over photos can drop text below WCAG.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| api | CSS backdrop-filter(Safari 需 -webkit- 前缀)与 prefers-reduced-transparency |
| api | SVG 滤镜原语 feTurbulence / feDisplacementMap(含 SMIL animate 驱动 baseFrequency) |
| network | 无第三方库、无 CDN 依赖(纯 CSS 加内联 SVG;references 的噪点是 data: URI 内联,非网络请求) |
| cli | npx / Playwright(宿主侧截图工具;SKILL.md 在 verify 段示范) |
| cli | scripts/seek-shot.sh + scripts/contact-sheet.sh + ffmpeg(仓库根打包助手,被 Packaged helper 段点名) |
4风险提醒 风险提醒:绿色 · 放心使用
- prefers-reduced-transparency 的验收没有可用取证手段(见 second_pass) — 该媒体特性支持面窄(以 Firefox 为主),SKILL.md 却把它列为必过项且未给确定性命令,实际执行极易变成声称已验证。
- 液态玻璃滤镜在低端设备上代价高 — feTurbulence 加 feDisplacementMap 每帧重算,且文档要求叠加 backdrop-filter;只在单元素使用时可控,一旦被复制到网格就会明显掉帧。
- 玻璃面板天然压低文字对比度 — 半透明加重模糊叠在照片上时,正文与背景最亮区的对比可能低于 4.5:1;文档给了 scrim 与 text-shadow 的补救方向,但需逐屏人工核对背景亮度。
- Packaged helper 路径以仓库根为基准,且 references 尾部带 iart.ai utm 推广链 — 单装时 scripts/seek-shot.sh 不可用;references/glass-recipes.md 末行为 iart.ai 推广段(含 utm_term=glassmorphism)。
5第二遍独立确认
- [ok] backdrop-filter 只能模糊身后内容这一关键前提是否自洽 — SKILL.md 核心段与 references 第 1 节都写明该语义,并据此推出演示必须压在真实杂物背景上;验收第 1 条与之对齐(glass overlaps a real busy backdrop, not a flat color)。
- [unlocatable] prefers-reduced-transparency 的可验证性(正文把它列为必过项) — SKILL.md 要求加载 reduced-transparency 并确认实心兜底可读,但给的建议含糊(Playwright --color-scheme-style flags, or a ?reduced=1 query)——Playwright 并无该媒体特性的专用开关,?reduced=1 需自行在页面实现。全文未给可用的确定性取证命令,故该验收项在源码内不可定位为可行步骤(对比 accessible-animation 用的是真实存在的 --reduced-motion=reduce)。
- [ok] 液态玻璃滤镜的性能告诫是否与实现一致 — 正文说明 filter(不是 backdrop-filter)作用于元素自身像素,需叠在霜面之上;references 第 5 节同样表述,并给 baseFrequency/scale/dur 的调参表与只用一块 hero 的限制,前后一致。
- [discrepancy] Packaged helper 的路径基准 — SKILL.md 写 scripts/seek-shot.sh anim.html 0 1.5 3,但 scripts/ 在仓库根而非本 skill 目录,单装形态下相对路径不成立。
6结论
282f840f1bf8a217…b6dba3eb75