在 CSS3 中,实现“毛玻璃效果”(也称玻璃拟物化 / Glassmorphism)最核心的属性是 backdrop-filter(背景滤镜)。它可以让元素背后的内容产生模糊、亮度调整等效果,再配合半透明的背景色,就能完美模拟出磨砂玻璃的质感。
实现毛玻璃效果通常需要三个要素:
rgba() 或 hsla() 让元素本身半透明。backdrop-filter: blur() 模糊元素背后的内容。HTML:
<div class="background">
<div class="glass-card">
<h2>我是毛玻璃卡片</h2>
<p>背后的内容会被模糊处理</p>
</div>
</div>
CSS:
/* 1. 父容器或页面背景(提供被模糊的内容) */
.background {
width: 100%;
height: 100vh;
background: url('your-image.jpg') center/cover no-repeat;
display: flex;
justify-content: center;
align-items: center;
}
/* 2. 毛玻璃卡片 */
.glass-card {
width: 300px;
padding: 40px;
/* 半透明背景,让背后的模糊透出来 */
background: rgba(255, 255, 255, 0.15);
/* 核心:背景模糊 */
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px); /* 兼容 Safari */
/* 增强玻璃质感的细节 */
border: 1px solid rgba(255, 255, 255, 0.3); /* 细微的白色边框 */
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); /* 柔和阴影 */
color: #fff;
text-align: center;
}
backdrop-filter: blur(10px):对元素背后的区域应用高斯模糊。数值越大越模糊。background: rgba(...):背景必须有一定的透明度(alpha 值小于 1)。如果背景是完全不透明的(如 #fff),毛玻璃效果就会被遮挡住,看不见背后的模糊。-webkit-backdrop-filter:为了兼容旧版 Safari 和某些移动端浏览器,必须加上这个带前缀的属性。backdrop-filter)在一些不支持 backdrop-filter 的老旧环境(或需要兼容特殊小程序容器时),可以通过伪元素 + filter 来模拟:将背景图放在一个绝对定位的伪元素上,只对这个伪元素进行 filter: blur(),然后在上面盖一个半透明层。
.glass-card-fallback {
position: relative;
overflow: hidden; /* 裁剪模糊溢出的部分 */
border-radius: 16px;
/* 文字等其他样式 */
}
/* 伪元素放背景并模糊 */
.glass-card-fallback::before {
content: "";
position: absolute;
top: -20px; left: -20px; right: -20px; bottom: -20px; /* 放大一点防止边缘穿帮 */
background: url('your-image.jpg') center/cover no-repeat;
filter: blur(12px);
z-index: -1;
}
/* 叠加半透明层 */
.glass-card-fallback::after {
content: "";
position: absolute;
inset: 0;
background: rgba(255, 255, 255, 0.2);
z-index: -1;
}
注:这种方法本质上是“前景内容显示在一张被模糊的背景图上方”,而不是真正的“透视背后内容”。
filter 或 transform 等属性,会导致 backdrop-filter 失效或作用域改变(Chrome 中常见问题)。backdrop-filter 模糊了“白色”,看起来依然还是白色,看不出效果。backdrop-filter 是比较消耗 GPU 性能的,如果在页面上大量使用(比如列表里每个 item 都是毛玻璃),可能会导致滚动卡顿,建议适量使用。如果你在做现代 UI 设计,除了模糊,可以加上:
box-shadow: inset 0 0 10px rgba(255,255,255,0.5); 增加玻璃边缘的高光反射。box-shadow: 0 8px 32px rgba(31, 38, 135, 0.3);)让卡片“浮”在背景上。只要掌握了 backdrop-filter + rgba 背景的组合,你就能轻松实现各种高级的毛玻璃界面了!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。