Javascrip提高:CSS backdrop-filter的使用方法-由Deepseek产生

backdrop-filter: blur(2px); 是一个 CSS 属性,用于对元素背后的所有内容(即该元素覆盖区域的下层背景)应用图形滤镜效果 。这里 blur(2px) 表示对背后内容进行高斯模糊,模糊半径为 2 像素。

核心理解:

  • 作用对象 :该元素背后的内容(例如其他元素、背景图片、颜色等),而不是元素自身。
  • 元素自身不变:元素本身的内容(文字、背景色、边框等)保持清晰,不受此属性影响。
  • 视觉效果:透过该元素看背后的区域,会呈现"磨砂玻璃"般的模糊感,常用于营造毛玻璃、半透明遮罩等效果。

filter: blur() 的区别:

属性 作用范围 示例效果
backdrop-filter: blur() 元素背后的内容 透过元素看背后是模糊的,元素本身清晰
filter: blur() 元素自身及其子元素 元素本体(包括文字、背景)变得模糊

典型应用场景:

  • 导航栏、弹窗底部的背景模糊(毛玻璃效果)。
  • 卡片悬浮层,突出前景内容,同时弱化背景。
  • 半透明面板,兼顾可读性与美观。

代码示例:

css 复制代码
.modal {
  background-color: rgba(255, 255, 255, 0.3);
  backdrop-filter: blur(10px);  /* 背后内容模糊10px */
}

兼容性提醒:

  • 支持现代浏览器(Chrome 76+, Edge 79+, Safari 9+ 需 -webkit-backdrop-filter 前缀)。
  • Firefox 曾需开启实验标志,目前最新版已支持(从 Firefox 103 开始默认启用)。建议加前缀增强兼容:
css 复制代码
.modal {
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
}

简而言之:backdrop-filter: blur(2px); 让元素背后的景物蒙上一层模糊的"磨砂玻璃",而元素本身保持清晰

以下是一个简单的HTML案例,演示了 backdrop-filter: blur(2px) 的效果。页面中包含背景风景图和一个半透明的卡片,卡片背后的背景会被模糊,而卡片内的文字保持清晰。

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
    <title>backdrop-filter 毛玻璃效果演示</title>
    <style>
        /* 整体页面样式 - 让背景图铺满,突出背后内容 */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            min-height: 100vh;
            /* 背景使用一张渐变的网络图片(来自unsplash的免费大图)或者线性渐变也可以,此处使用漂亮的实景图让模糊效果明显 */
            background: url('https://picsum.photos/id/104/1200/800') no-repeat center center fixed;
            background-size: cover;
            font-family: system-ui, 'Segoe UI', 'Roboto', 'Helvetica Neue', sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }

        /* 毛玻璃卡片 - 核心演示backdrop-filter */
        .glass-card {
            max-width: 500px;
            width: 90%;
            padding: 2rem 2rem 2rem 2rem;
            background-color: rgba(255, 255, 255, 0.25);  /* 半透明白色底色,让后面背景透出 */
            border-radius: 32px;
            /* 关键属性:对背后内容进行模糊,半径2px */
            backdrop-filter: blur(2px);
            /* 为了更好的兼容性,加webkit前缀 */
            -webkit-backdrop-filter: blur(2px);
            
            /* 增强视觉边缘: 极浅边框与阴影,使卡片更精致 */
            border: 1px solid rgba(255, 255, 255, 0.4);
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
            
            /* 文字颜色深色,确保可读性 */
            color: #1f2a2e;
            text-shadow: 0 1px 1px rgba(255,255,255,0.3);
            transition: all 0.2s ease;
        }

        /* 内部文字样式,清晰可见 */
        .glass-card h1 {
            font-size: 2.2rem;
            margin-bottom: 1rem;
            font-weight: 700;
            letter-spacing: -0.01em;
        }

        .glass-card p {
            font-size: 1.1rem;
            line-height: 1.5;
            margin-bottom: 1.2rem;
        }

        .glass-card .note {
            font-size: 0.85rem;
            background: rgba(0,0,0,0.1);
            display: inline-block;
            padding: 0.3rem 0.8rem;
            border-radius: 20px;
            backdrop-filter: blur(1px); /* 内部小元素也可叠加,但不影响演示 */
        }

        hr {
            margin: 1.2rem 0;
            border: 0;
            height: 1px;
            background: rgba(255,255,240,0.5);
        }

        /* 简单按钮,也半透明但无模糊 */
        .demo-btn {
            display: inline-block;
            margin-top: 0.5rem;
            background: #2c5f2d;
            color: white;
            border: none;
            padding: 8px 20px;
            border-radius: 40px;
            font-weight: bold;
            cursor: pointer;
            transition: 0.15s;
            box-shadow: 0 2px 5px rgba(0,0,0,0.2);
        }

        .demo-btn:active {
            transform: scale(0.97);
        }

        /* 辅助说明浮层? 不加复杂内容 */
        footer {
            text-align: center;
            margin-top: 2rem;
            font-size: 0.7rem;
            opacity: 0.8;
        }

        /* 对比区(可不用,但为了突出效果,在body里只放卡片) */
    </style>
</head>
<body>
    <div class="glass-card">
        <h1>🍃 毛玻璃效果</h1>
        <p>这个白色的半透明卡片背后,使用了 <code style="background:rgba(0,0,0,0.2); padding:2px 6px; border-radius:12px;">backdrop-filter: blur(2px)</code>。</p>
        <p>仔细观察卡片区域的背景风景图,会感觉像是透过一块磨砂玻璃看到的,<strong>背后图像变模糊了2像素</strong>,而卡片上的文字仍然锐利清晰。</p>
        <hr>
        <p>✨ 同时卡片拥有半透明背景 <code>rgba(255,255,255,0.25)</code>,让背后图片透出来,加上模糊,产生高级毛玻璃感。</p>
        <div style="display: flex; justify-content: space-between; align-items: center; margin-top: 16px;">
            <span class="note">📸 背景图来源 | LoremFlick</span>
            <button class="demo-btn" id="showEffectBtn">查看效果说明</button>
        </div>
        <footer>⭐ 核心CSS: backdrop-filter: blur(2px);  <br> 对元素背后的内容施加高斯模糊。</footer>
    </div>

    <script>
        // 简单的交互: 点击按钮再次强调效果(控制台也可,但无伤大雅)
        const btn = document.getElementById('showEffectBtn');
        if (btn) {
            btn.addEventListener('click', () => {
                alert('当前卡片使用的backdrop-filter: blur(2px);\n即该元素后面2像素半径的模糊滤镜。\n注意观察卡片区域覆盖的背景部分,与其他区域清晰的背景形成对比。');
            });
        }
    </script>
</body>
</html>
相关推荐
weixin_471383032 分钟前
图片预解码缓存
前端·浏览器缓存·图片预解码
郑洁文2 小时前
基于网络爬虫的Web敏感信息泄露自动化检测工具
前端·爬虫·网络安全·自动化
郑洁文2 小时前
可视化Web渗透分析工具的设计与实现
前端
罗超驿3 小时前
18.Web API 实战:元素与表单属性的获取和修改
开发语言·前端·javascript
边界条件╝3 小时前
微前端进阶(四)
前端·状态模式
无风听海3 小时前
JSON Web Token(JWT)完全指南
java·前端·json
IT_陈寒3 小时前
Python闭包里藏的这个坑,差点让我加班到凌晨
前端·人工智能·后端
IT_陈寒3 小时前
Java注解空指针?这个坑我踩得莫名其妙
前端·人工智能·后端
H0r1zon.3 小时前
PinCopy:双击 Ctrl,把剪贴板「钉」在屏幕上
前端
kyriewen4 小时前
大厂面试新规:不会用AI编程,直接挂
前端·面试·ai编程