CSS 玻璃拟态生成器,免费
创建流行的毛玻璃界面效果,支持实时预览。自定义并复制 CSS 代码。
玻璃卡片
这是一个使用纯 CSS 实现的玻璃拟态效果。
CSS 代码
什么是玻璃拟态(glassmorphism)?
玻璃拟态是一种界面设计趋势,其特点是通过模糊效果让背景透过毛玻璃风格的元素显现。它使用 CSS 的 backdrop-filter: blur() 属性、半透明背景和微妙的边框,呈现现代、层次分明的外观。它常用于仪表板界面、卡片和模态框。
浏览器兼容性
backdrop-filter 受所有现代浏览器支持:Chrome、Edge、Safari 和 Firefox 103+。对于更旧的 Firefox 版本,请准备一种不透明的纯色作为回退背景。
工作原理
- 选择背景色。玻璃效果需要背景才能显现。为预览区选择纯色背景、渐变色或照片,以便判断模糊效果在实际布局中的表现。
- 设置模糊度和饱和度。模糊半径模拟磨砂玻璃的光散射效果;饱和度将面板后方的颜色向前拉伸。经典苹果风格配方大约为
blur(10px) saturate(180%)。 - 调整玻璃颜色和透明度。元素自身的背景必须是半透明的,不透明颜色会完全遮挡背景。白色或黑色10-30% alpha值是典型起点。
- 调整边框和圆角半径。低alpha值的细白边框模仿真实玻璃的内边缘高光效果。约12-20px的border-radius营造出大多数玻璃态设计所使用的柔和卡片外观。
- 复制CSS代码。将生成的属性块粘贴到样式表中。如需支持旧版Safari,请添加
-webkit-backdrop-filter配套声明。
术语的由来
这种视觉效果早于其名称的诞生。苹果公司于2013年随iOS 7为通知面板和控制中心引入了实时模糊背景,并于次年通过macOS Yosemite将其带到桌面端,WebKit团队之所以在2015年8月推出CSS backdrop-filter 属性,正是因为正如其发布文章所言,「iOS 7和OS X Yosemite的用户界面设计语言已改变,融入了精美的背景模糊效果。」 微软早期的Windows Vista 「Aero Glass」(2007年)也是同一理念,微软在现代Fluent系统中记录了两种相关材质:亚克力(半透明、模糊,带有噪点叠加)和云母(随Windows 11引入的不透明桌面色调变体)。「glassmorphism」这一专有名称由波兰设计师Michał Malewicz(Hype4 Academy)于2020年11月创造,与macOS Big Sur发布同步,命名风格与此前的「neumorphism」一脉相承,为设计师提供了讨论该技术的共同词汇。
CSS配方
.glass-card {
/* 1. Element background: must be partially transparent */
background: rgba(255, 255, 255, 0.18);
/* 2. The frosted-glass effect */
backdrop-filter: blur(10px) saturate(180%);
-webkit-backdrop-filter: blur(10px) saturate(180%); /* Safari 9-16 */
/* 3. The inner-edge highlight */
border: 1px solid rgba(255, 255, 255, 0.3);
/* 4. Soft corners */
border-radius: 16px;
}
关于该配方,有三点需要牢记。其一,元素自身的背景必须是透明或半透明的,MDN明确指出:「元素或其背景必须是透明或半透明的,效果才能显现。」 完全不透明的 background-color 会覆盖模糊采样,用户看到的将是一个平坦的面板。其二,效果需要背后有内容可供模糊,玻璃态效果在纯白页面上无法呈现。其三,现代Safari支持无前缀属性,但低于Safari 17的旧版本需要同时包含 backdrop-filter 和 -webkit-backdrop-filter 两者。
全部十种滤镜函数
backdrop-filter 定义于W3C滤镜效果模块第2级规范中,与常规 filter 属性接受相同的十种滤镜函数:blur()、brightness()、contrast()、drop-shadow()、grayscale()、hue-rotate()、invert()、opacity()、saturate()、以及 sepia()。这些函数可以链式叠加,且顺序至关重要,它们从左到右依次作用于背景采样。对于玻璃态效果,blur() 加 saturate() 已能呈现经典外观;其余均为创意调节(例如,在深色背景上使用 brightness(105%) 提亮模糊采样,或使用 contrast(120%) 保持色彩关系的清晰度)。
浏览器支持与 -webkit- 前缀
截至2026年,所有主流浏览器均已支持该属性。WebKit率先于2015年8月10日随Safari 9 / iOS 9发布,使用 -webkit-backdrop-filter 前缀。Chrome在76版本(2019年7月)加入了无前缀支持,Edge随Chromium切换在79版本跟进,Firefox 103于2022年7月26日默认启用。 MDN将该属性标记为Baseline 2024(自2024年9月起新可用),意味着四大主流引擎已实现互操作。全球实际支持率约为95%。为兼容旧版Safari(以及PostCSS用户),可并排添加带前缀和不带前缀的声明,或让 autoprefixer 从Browserslist配置中自动添加前缀。
不支持时的降级方案
使用 @supports 查询,确保不支持该属性的浏览器获得纯色降级效果,而非难以辨认的透明面板:
.glass-card {
background: rgba(30, 41, 59, 0.92); /* opaque fallback */
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
.glass-card {
background: rgba(255, 255, 255, 0.18);
backdrop-filter: blur(10px) saturate(180%);
-webkit-backdrop-filter: blur(10px) saturate(180%);
}
}
性能:何时使用(以及何时避免)
backdrop-filter 经GPU加速,但并非没有代价。每个经过滤镜处理的表面都会迫使浏览器维护一个独立的合成层,并对元素后方区域重新采样。W3C编辑草稿对此有直接说明,指出嵌套或叠加的背景滤镜可能导致「指数级渲染通道」,WebKit发布文章也警告该属性「会迫使引擎执行更多渲染通道,从而影响性能。」 Web.dev简明总结如下:「backdrop-filter可能损害性能。部署前请先测试。」
实际规则:在生产代码中将模糊半径控制在约20px以内,避免全视口玻璃表面(每次滚动都会重绘的玻璃导航栏是典型反例),不要将多个滤镜表面相互叠加,并避免将 backdrop-filter 应用于 <video> 元素(模糊需在每帧重新计算)。微软在Fluent文档中对亚克力用户提出了同样的建议:「当设备进入省电模式时,亚克力效果会自动禁用。」
无障碍访问:对比度陷阱
玻璃态效果从定义上就会降低文字与背景之间的对比度,因为面板下方的「背景」取决于用户滚动或更换壁纸时实际出现的内容,因而不断变化。WCAG 2.1的最低标准(普通正文4.5:1,大号或粗体文字3:1)必须以最不利的背景为准,而非平均值。实际建议:将正文内容排除在玻璃面板之外,主要将其用于界面框架元素(卡片、标题栏、模态框),使实际阅读发生在透明度更低的内表面上。请务必为在操作系统层面关闭透明度的用户提供纯色降级方案,macOS(系统设置 → 辅助功能 → 显示 → 减弱透明度)和Windows(设置 → 个性化 → 颜色 → 透明效果)均提供该开关,CSS也可检测到:
@media (prefers-reduced-transparency: reduce) {
.glass-card {
background: rgba(30, 41, 59, 0.95);
backdrop-filter: none;
-webkit-backdrop-filter: none;
}
}
玻璃态效果的适用场景与不适用场景
- 适合的场景:叠加在主图上的悬浮导航栏、彩色渐变背景上的仪表盘卡片、覆盖丰富内容的模态对话框、锁屏风格小组件、视频叠加层(播放器界面控件从柔化背景图像中受益)。
- 存在风险的场景:正文容器(对比度随用户滚动而变化)、数据表格(视觉噪点干扰行扫描)、全视口表面(性能损耗)、面向低视力用户的界面(除非配备减弱透明度降级方案)。
- 应当避免的场景:主要行动号召按钮(对比度不足影响转化率)、错误或警告面板(需要最高可读性)、内容密集型表单。
常见错误
- 忘记设置透明背景。将
backdrop-filter应用于不透明background-color元素时不会产生任何可见效果:不透明颜色覆盖了模糊采样。请务必搭配rgba()/hsla()背景使用。 - 玻璃覆盖纯色。如果面板后方没有任何有趣的内容,对其模糊只会产生一个轻微着色的矩形,而非真正的「玻璃」感。该效果需要照片、渐变或繁复背景才能体现。
- 遗漏
-webkit-前缀。旧版Safari需要该前缀。要么同时提供两行声明,要么依赖autoprefixer处理。 - 叠加过多面板。每个滤镜表面都会占用独立的GPU层。通常情况下,超过三四个面板就会导致移动端帧率下降。
- 忽略最不利对比度检测。请在面板所覆盖的每个背景中最亮和最暗的区域测试对比度,而非仅依赖单张演示截图。
- 对模糊半径做动画。将
backdrop-filter: blur(0)→blur(20px)的悬停过渡在技术上是允许的,但会在每帧重新计算模糊,是拖累滚动性能最简单的方式。请改为对opacity或transform做动画,保持模糊值静态不变。
常见问题解答
为什么我的玻璃卡片看起来像一个平板面板?
元素自身的 background-color 完全不透明。backdrop-filter 对元素后方内容进行模糊处理,但元素本身会绘制在上方。不透明背景会覆盖模糊采样。请将背景改为 rgba() 或 hsla(),alpha值10-30%是大多数玻璃态设计的最佳区间。
Safari能用吗?
可以,Safari是首个支持该属性的浏览器,时间为2015年8月。旧版Safari需要 -webkit-backdrop-filter 前缀;现代Safari接受无前缀形式。同时包含两者可确保CSS在所有仍在使用的Safari版本上均能正常工作。
玻璃态效果符合无障碍要求吗?
仅当您针对最不利背景进行设计时才符合要求。WCAG 2.1要求普通文本的对比度不低于4.5:1,大号或粗体UI组件不低于3:1,以面板下方实际呈现的颜色为准。请在 prefers-reduced-transparency 媒体查询下提供纯色降级方案,确保在操作系统层面关闭透明度的用户能获得可读表面。
会影响性能吗?
可能会。每个滤镜表面都会迫使浏览器维护一个独立的合成层并对其背后区域重新采样,较大的模糊半径或叠加的面板会进一步增加开销。请将半径控制在约20px以内,避免全视口面板,并避免在 <video> 上使用该效果。Web.dev的官方建议是在发布前在具有代表性的低端设备上测试。
玻璃态与新拟物主义有何区别?
新拟物主义(早几个月创造)通过在与页面背景相同的纯色上叠加内外阴影,制造出柔和塑料浮雕形状的视觉幻觉,不涉及透明度或模糊。玻璃态则通过半透明、模糊的面板保持页面背景的可见性。两者是互补而非竞争的风格,一些设计将两者结合使用,例如在玻璃卡片上放置新拟物风格按钮。
可以将CSS复制用于生产环境吗?
可以。输出为纯CSS,使用标准属性,无专有扩展,无需JavaScript。将规则添加到样式表中,并将类名应用于需要呈现玻璃效果的元素即可。