css中backdrop-filter 详细使用 ios毛玻璃效果、filter和backdrop-filter使用说明

🎨 CSS backdrop-filter 全面指南

backdrop-filter 是一种可以对 元素后面的内容 应用图像处理效果的 CSS 属性,常用于实现类似 iOS 界面的「毛玻璃」效果。


🧩 一、作用简介

backdrop-filter 会对元素 背后的内容区域 应用模糊、亮度、对比度等滤镜,而不是作用于自身。

属性 作用对象 常用场景
filter 对元素本身生效 图片模糊、灰度处理
backdrop-filter 对元素背景内容生效 毛玻璃、模糊弹窗、半透明导航栏

🧠 二、基本语法

css 复制代码
backdrop-filter: <filter-function> [<filter-function>]*;

示例:

复制代码
backdrop-filter: blur(10px) brightness(1.2) contrast(0.8);

常用滤镜函数

滤镜函数 说明 示例
blur(px) 模糊背景 blur(20px)
brightness(%) 调整亮度 brightness(1.5)
contrast(%) 调整对比度 contrast(0.8)
saturate(%) 饱和度 saturate(2)
grayscale(%) 灰度 grayscale(0.5)
sepia(%) 棕褐色滤镜 sepia(0.8)
hue-rotate(deg) 色相旋转 hue-rotate(180deg)
opacity(%) 背景透明度 opacity(0.6)

可以组合使用:

复制代码
backdrop-filter: blur(20px) saturate(150%) brightness(120%);

iOS 毛玻璃效果示例

复制代码
<div class="glass">
  <h3>毛玻璃面板</h3>
</div>
body {
  background: url('https://picsum.photos/800/600') no-repeat center/cover;
  height: 100vh;
  margin: 0;
}

.glass {
  width: 300px;
  height: 200px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.2); /* 半透明背景 */
  backdrop-filter: blur(15px) saturate(120%);
  -webkit-backdrop-filter: blur(15px) saturate(120%);
  border: 1px solid rgba(255, 255, 255, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  margin: 100px auto;
}

背景模糊、柔和半透明,类似 iOS 控制中心 / Dock。

搭配建议

功能 推荐写法
半透明背景 background: rgba(255, 255, 255, 0.1~0.3)
圆角 border-radius: 20px
边框 border: 1px solid rgba(255, 255, 255, 0.3)
投影 box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1)

浏览器兼容性(2025)

平台 支持情况 备注
iOS Safari 9+ ✅ 完美支持
macOS Safari 9+
Chrome 76+
Edge 79+
Firefox ⚠️ 需开启 layout.css.backdrop-filter.enabled
Android Chrome WebView ✅(部分旧机卡顿)
微信小程序 ⚠️ 部分平台支持

为了兼容 Safari,建议加前缀

复制代码
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);

底部导航栏(实战示例)

复制代码
.bottom-nav {
  position: fixed;
  bottom: 20rpx;
  left: 50%;
  transform: translateX(-50%);
  width: 90%;
  height: 120rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
  border-radius: 40rpx;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(25rpx) saturate(180%);
  -webkit-backdrop-filter: blur(25rpx) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

🎨 CSS 滤镜对比与详解:filter vs backdrop-filter

🧩 一、核心区别概览

特性 filter backdrop-filter
作用对象 对元素自身(及其内容)生效 对元素背后的背景内容生效
是否影响子元素 ✅ 会影响 ❌ 不会影响(作用于背景)
常见用途 模糊图片、灰度图标、亮度调节等 毛玻璃效果、半透明模糊背景
是否需要透明背景 ✅ 需要透明度(否则看不到模糊)
性能消耗 较低(仅处理自身) 较高(处理背景内容)
浏览器支持 广泛支持 Safari/Chrome 支持良好,Firefox 需手动开启
示例效果 模糊图片、变灰 iOS 毛玻璃、半透明底栏

🧠 二、基础语法对比

css 复制代码
/* 作用于自身内容 */
filter: blur(10px) brightness(1.2);

/* 作用于背景内容 */
backdrop-filter: blur(20px) saturate(180%);

filter 属性详解

**filter ** 用于对 元素本身的渲染结果 进行图像处理。

✅ 常用滤镜函数

函数 说明 示例
blur(px) 模糊处理(像素越大越模糊) filter: blur(10px);
brightness(%) 调整亮度,>1 更亮,<1 更暗 filter: brightness(1.5);
contrast(%) 调整对比度 filter: contrast(0.8);
grayscale(%) 灰度转换 filter: grayscale(1);(全灰)
invert(%) 颜色反转 filter: invert(1);(反色)
saturate(%) 饱和度调节 filter: saturate(2);(更艳)
sepia(%) 棕褐色滤镜 filter: sepia(1);
opacity(%) 调整透明度 filter: opacity(0.5);
hue-rotate(deg) 色相旋转(0°~360°) filter: hue-rotate(180deg);
drop-shadow() 添加阴影(比 box-shadow 更准确) filter: drop-shadow(0 0 10px rgba(0,0,0,0.5));
  1. 图片模糊与亮度调节

    .photo { width: 300px; filter: blur(5px) brightness(1.3) contrast(0.8); }

效果:图片模糊、稍亮、对比度降低

  1. 灰度图标

    .icon {
    filter: grayscale(1);
    }
    .icon:hover {
    filter: grayscale(0);
    transition: filter 0.3s;
    }

效果:默认灰色图标,悬停恢复彩色

backdrop-filter 属性详解

backdrop-filter 用于对 元素背后的内容区域 进行图像处理。

  1. iOS 风格的「毛玻璃背景」

  2. 半透明弹窗

  3. 模糊底部导航栏

  4. 背景模糊遮罩层
    backdrop-filter 只对透明区域生效

    .glass {
    background: rgba(255, 255, 255, 0.3); /* 必须半透明 /
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px); /
    Safari */
    }

毛玻璃底部导航栏

复制代码
.bottom-nav {
  position: fixed;
  bottom: 20rpx;
  left: 50%;
  transform: translateX(-50%);
  width: 90%;
  height: 120rpx;
  border-radius: 40rpx;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(25rpx) saturate(180%);
  -webkit-backdrop-filter: blur(25rpx) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

类似 iPhone Dock 底栏。

两者组合使用示例

复制代码
.blur-box {
  filter: brightness(1.2); /* 调整自身亮度 */
  backdrop-filter: blur(10px); /* 模糊背景 */
  background: rgba(255, 255, 255, 0.2);
}

性能优化建议

项目 建议
模糊区域 控制尺寸,不宜过大
动画性能 使用 GPU 加速,避免频繁重绘
动态背景 尽量减少滤镜层叠
移动端 谨慎使用高强度 blur()(耗性能)
相关推荐
Calm5501 天前
ele表单未输入值提示为英文
前端
爪洼守门员1 天前
前端性能优化
开发语言·前端·javascript·笔记·性能优化
TOYOAUTOMATON1 天前
GTH系列模组介绍
前端·目标检测·自动化
2022.11.7始学前端1 天前
n8n第十节 把Markdown格式的会议纪要发到企微
前端·chrome·n8n
fruge1 天前
Lodash 源码精读:防抖节流的实现细节与边界场景
前端
yuzhiboyouye1 天前
怎么熟悉一个web前端项目的业务呢?
前端
GISer_Jing1 天前
AI在前端营销和用户增长领域应用(待补充)
前端·人工智能
橘子海全栈攻城狮1 天前
【最新源码】基于springboot的会议室预订系统设计与实现 014
java·开发语言·前端·spring boot·后端·spring·自动化
1024肥宅1 天前
前端常用模式:提升代码质量的四大核心模式
前端·javascript·设计模式