1. 项目定位与用途
Liquid Glass 是一个 React 毛玻璃 UI 组件库,旨在提供物理真实的玻璃拟态效果。它通过组合 SVG 滤镜与 CSS backdrop-filter,模拟光线在玻璃表面的折射、色散和弹性变形,适用于需要高级视觉质感的现代 Web 应用,如交互式卡片、按钮和仪表板元素。
Liquid Glass 是基于 React 的逼真毛玻璃 UI 组件,通过 SVG 滤镜与弹簧物理实现色差、边缘折射和动态边框。本文提供完整安装指南、使用示例、Props 说明及跨浏览器兼容方案,适用于需要高级视觉质感的现代 Web 应用。
Liquid Glass 是基于 React 的毛玻璃 UI 组件库,通过 SVG 滤镜与弹簧物理模拟实现逼真的玻璃拟态效果,包含色差、边缘折射和动态边框,适用于需要高级视觉质感的现代 Web 应用。
Liquid Glass 是一个 React 毛玻璃 UI 组件库,旨在提供物理真实的玻璃拟态效果。它通过组合 SVG 滤镜与 CSS backdrop-filter,模拟光线在玻璃表面的折射、色散和弹性变形,适用于需要高级视觉质感的现代 Web 应用,如交互式卡片、按钮和仪表板元素。
组件提供五大核心效果:毛玻璃表面(backdrop-filter 实现模糊与饱和度增强)、边缘折射(SVG displacement maps 模拟光线弯曲)、色差(颜色通道分离产生镜头失真)、弹簧物理(弹性变形与鼠标跟随动画)、动态边框(响应鼠标位置的渐变边框)。同时内置 hover 和 press 交互状态,并针对 Safari/Firefox 提供 CSS 降级方案。
基于 React 19 + TypeScript 开发,使用 Vite 构建。视觉效果依赖 SVG 滤镜(feDisplacementMap、feComponentTransfer)与 CSS backdrop-filter 结合;物理系统通过 interaction-physics.ts 计算弹簧偏移与弹性变形;浏览器兼容性由 browser-detect.ts 和 shimmer-overlay.tsx 处理。项目结构模块化,主组件 GlassLayer 协调 FrostedSurface、SVGFilter 等子模块。
从当前仓库信息可见,安装步骤如下:1) 克隆仓库:git clone https://github.com/Leonxlnx/liquid-glass-demo.git;2) 进入目录:cd liquid-glass-demo;3) 安装依赖:npm install;4) 启动开发服务器:npm run dev。注意仓库中未明确给出发布到 npm 的指令,上述步骤仅适用于本地运行演示项目。
在 React 组件中导入 GlassLayer:import GlassLayer from './glass-effect'。用 <GlassLayer> 包裹子元素并配置 props,例如调整 displacementScale(折射强度,默认 70)、blurAmount(模糊倍数,默认 0.0625)、saturation(饱和度,默认 140)等。支持 onClick 实现点击交互,可通过 mouseContainer 属性跟踪更大区域的鼠标位置。使用建议配合 position: 'fixed' 与 top/left 进行定位。
项目针对 Chromium、Safari 和 Firefox 提供跨浏览器支持,非 Chromium 浏览器会降级为 CSS shimmer overlay 效果。使用提示:小型或圆形元素建议设置 displacementScale={0} 以避免 SVG 滤镜 artifacts;cornerRadius={999} 可生成圆形按钮;仓库中未明确给出性能基准测试数据,复杂场景需自行评估渲染开销。
根据 README 的 Quick Start:克隆仓库后执行 npm install 安装依赖,然后 npm run dev 启动开发服务器。注意这是演示项目,若要在其他项目使用需自行复制 src/glass-effect 目录并调整导入路径。
项目明确支持跨浏览器,在 Chromium 内核浏览器中呈现完整效果(SVG 滤镜 + 物理动画),在 Safari 和 Firefox 中通过 CSS shimmer overlay 提供优雅降级,确保基本毛玻璃效果可见。
通过 GlassLayer 的 props 控制:displacementScale 调节 SVG 位移强度(0 表示无折射),blurAmount 调节 backdrop-filter 模糊倍数(默认 0.0625 对应 2px),saturation 调节背景饱和度(默认 140%)。aberrationIntensity 控制色差强度。
仓库中未明确给出性能测试数据。由于使用了 SVG 滤镜和实时物理计算,在大量元素或低端设备上可能产生渲染开销。建议合理使用 displacementScale(圆形元素可设为 0),并注意避免在同一页面过度密集排列。
支持。仓库包含完整的类型定义文件 src/glass-effect/types.ts,所有组件和导出均使用 TypeScript 编写,package.json 中 devDependencies 也包含 @types/react 等类型包,可直接在 TypeScript 项目中安全使用。