【前端高级特效】使用 CSS 实现毛玻璃模糊背景效果(含完整源码讲解)

🌈 一、前言

在现代网页设计中,"毛玻璃(Frosted Glass)"效果几乎是高端 UI 的标配。

无论是登录弹窗、信息卡片、还是仪表盘背景,它都能带来优雅的层次感与视觉柔化效果。

本篇文章将通过 纯 CSS 实现毛玻璃模糊背景特效 ,无需任何 JavaScript,也不依赖额外库。

代码短小、兼容性强、效果高级,非常适合前端开发者收藏!


🖼️ 二、效果预览

最终效果如下图所示(可自行运行查看动态效果):

背景图片清晰,而中间的内容区域呈现半透明模糊的"玻璃"质感,文字浮在上方清晰可见。


🧩 三、完整源码(可直接复制运行)

以下是完整 HTML + CSS 源码,你可以直接复制运行(放在同目录的 image/4.jpg 即可)。

html 复制代码
<!DOCTYPE html>
<!--RGBA/HSLA颜色-->
<!--把文本层所覆盖的那部分图片区域作模糊处理-->
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        html {
            width: 100%;
            height: 100%;
            /*垂直水平居中*/
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
        }

        body,
        main::before {
            /*背景图*/
            background: url(./image/4.jpg) 0 / cover fixed;
            z-index: -2;
        }

        main {
            width: 800px;
            height: 300px;
            display: flex;
            justify-content: center;
            align-items: center;
            border-radius: 10px;
            position: relative;
            background: hsla(0, 0%, 100%, .3);
            overflow: hidden;
            /*把多余的模糊区域裁切掉*/

        }

        /*伪元素
        由于我们不能直接对元素本身进行模糊处理,就对一个伪元素进行处理,然后将其定位到元素的下层,它的背景将无缝
        匹配<body>的背景*/
        main::before {
            content: '';
            position: absolute;
            /*所有偏移量置为0,这样将它可以完整地覆盖到<main>元素之上*/
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            filter: blur(20px);
            /*让伪元素相对其宿主元素的尺寸再向外扩大至少30px(即它的模糊半径)*/
            margin: -30px;
            /*background: rgba(255, 0, 0, .5);*/
            /*上 右   下  左 */
            z-index: -1;


        }
    </style>
</head>

<body>
    <main>
        <blockquote>
            "The only way to get rid of a temptation is to yield to it .<wbr>
                Resist it, and your soul grows sick with longing for the<wbr>
                    things it has forbidden to itself, with desire for what its<wbr>
                        monstrous laws have made monstrous and unlawful."
            <footer>------
                <cite>
                    Oscar Wilde,
                    The Picture of Dorian Gray
                </cite>
            </footer>
        </blockquote>
    </main>
</body>

</html>

🧠 四、实现原理详解

1️⃣ 模糊处理的核心:filter: blur()

filter: blur(20px) 是 CSS 滤镜功能之一,用于对元素内容进行高斯模糊。

但需要注意:

不能直接对主内容进行模糊,否则文字也会变糊。

所以我们引入 伪元素(::before 来专门负责"模糊背景",而真正的文字内容在其上层展示。


2️⃣ 为什么使用 main::before

因为 main 是内容容器,我们无法单独模糊其背景(CSS 目前不支持"仅模糊背景,不影响子元素")。

于是创建一个伪元素:

css 复制代码
main::before {
  position: absolute;
  filter: blur(20px);
  z-index: -1;
}

这样它会:

  • 完全覆盖 main 元素;

  • 背景与 body 一致;

  • 模糊生效;

  • 不影响文字层。


3️⃣ 解决模糊边缘的"剪切问题"

模糊效果会向外扩散,如果刚好被容器裁掉,就会产生边缘硬线。

解决方法:扩大伪元素范围,使模糊区域完整:

css 复制代码
margin: -30px;

这里的 30px 通常略大于模糊半径。


4️⃣ 半透明白背景叠加效果

css 复制代码
background: hsla(0, 0%, 100%, .3);

通过 hsla 色彩模型实现半透明白底:

  • hsla(0, 0%, 100%, .3) 表示:白色、透明度 30%

  • 与模糊背景叠加后形成柔和的"玻璃感"


🎨 五、细节优化建议

优化项 说明 示例
边框与阴影 增强立体感 border: 1px solid rgba(255,255,255,0.3); box-shadow: 0 4px 20px rgba(0,0,0,0.2);
背景过渡 模糊动态变化 transition: filter .3s ease;
主题变量控制 支持自定义模糊强度 --blur-radius: 20px; filter: blur(var(--blur-radius));

🧾 六、兼容性与替代方案

现代浏览器(Chrome、Edge、Firefox、Safari)均支持 filter: blur()

部分 Safari 或移动端也支持更高级的 backdrop-filter

css 复制代码
backdrop-filter: blur(20px);

如果项目允许,可直接使用该属性获得更自然的玻璃质感。


🧾 七、知识要点总结

技术点 说明
filter: blur() 高斯模糊滤镜
::before 伪元素 模糊背景的载体
hsla 半透明叠加 玻璃质感增强
margin: -30px 防止模糊被裁切
z-index 层级控制 确保文字清晰可见

通过以上技巧,我们就能在纯 CSS 环境下实现炫酷的 毛玻璃模糊背景特效,这在登录页、卡片、导航栏等场景中都非常实用。


💬 八、示例场景推荐

  • 登录/注册弹窗

  • 卡片式信息展示

  • 背景叠层导航栏

  • 数据仪表盘半透明层

  • 高端落地页标题区


🌟 九、结语

通过本文你不仅能掌握 filter 模糊滤镜的高级用法,还能深入理解伪元素在视觉层的强大作用。

无论是静态网页还是动态组件(如 React/Vue 中的卡片组件),这种技巧都能让你的 UI 立刻提升一个档次。

相关推荐
代码改变世界100868 小时前
像素策略游戏:资源战争
css·游戏·css3
林恒smileZAZ11 小时前
CSS3 超实用属性:pointer-events (可穿透图层的鼠标事件)
前端·计算机外设·css3
luckyPian15 小时前
前端+AI:CSS3(二)
前端·css·css3
muyouking1116 小时前
Tailwind CSS 小白快速入门速查手册
前端·css·css3
~无忧花开~1 天前
CSS学习笔记(二):CSS动画核心属性全解析
开发语言·前端·css·笔记·学习·css3·动画
小张成长计划..3 天前
前端6:CSS3 2D转换,CSS3动画,CSS3 3D转换
前端·3d·css3
Filotimo_6 天前
2.CSS3.(3).html
前端·css3
Pu_Nine_97 天前
教程: 在网页中利用原生CSS实现3D旋转动画
css·3d·css3
Ares-Wang8 天前
CSS3》》 transform、transition、translate、animation 区别
前端·css·css3