CSS 滤镜(filter)是 CSS3 推出的一组"即时图形后期"工具。
它不需要 Photoshop,也不需要 Canvas,只要一行声明就能把亮度、对比度、模糊、色相偏移等视觉效果实时渲染到任何元素 上------图片、文字、视频、背景图,甚至整个模块都可以一次性处理。
下面带你从零开始认识这套"前端版美图秀秀"。
一、最简记忆:滤镜 = 函数链
css
filter: <函数-1>(参数) <函数-2>(参数) ... ;
- 顺序从左到右依次执行,类似管道符。
- 每个函数都有明确区间,超出即 clamp(被裁剪)。
- 可以写任意多个,空格分隔;也可以只写一个。
二、10 个原生函数速查表
| 函数 | 作用 | 默认值 | 常见玩法 |
|---|---|---|---|
blur(px) |
高斯模糊 | 0 | 毛玻璃背景、loading 遮罩 |
brightness(number) |
线性亮度 | 1 | 0.6 夜间模式,1.4 高光 |
contrast(number) |
对比度 | 1 | 1.5 让黑白更分明 |
grayscale(number) |
去色 | 0 | 1 彻底灰度,0.5 淡彩 |
sepia(number) |
复古棕褐 | 0 | 1 老照片,0.3 暖色打底 |
saturate(number) |
饱和度 | 1 | 0 灰度,2 鲜艳 |
hue-rotate(deg) |
色相旋转 | 0deg | 180deg 反色,90deg 换季节 |
invert(number) |
负片 | 0 | 1 完全反色,0.9 暗黑模式 |
opacity(number) |
透明度 | 1 | 与 CSS opacity 差异见注① |
drop-shadow() |
真实投影 | 无 | 支持半透明 PNG 的"镂空"阴影 |
注①:filter:opacity() 会创建独立层叠上下文 ,而 opacity 属性不会;前者还能被硬件加速。
三、组合实战 4 例
- 一键暗黑
css
.dark {
filter: invert(1) hue-rotate(180deg) brightness(1.1);
}
原理:先反色,再把色相转半圈,最后略提亮,文字与图片一起"变黑"。
- 毛玻璃遮罩
css
.mask {
backdrop-filter: blur(10px) saturate(1.2);
background: rgba(255,255,255,0.4);
}
backdrop-filter 只模糊背后内容,自身背景保持半透明,iOS 风导航栏标配。
- 图片 hover 高亮
css
img {
transition: filter .3s;
}
img:hover {
filter: brightness(1.15) saturate(1.25);
}
鼠标移入瞬间"亮 + 艳",移出平滑回落。
- 文字故障风
css
.glitch {
filter: contrast(2) hue-rotate(90deg);
text-shadow: 2px 0 #0ff, -2px 0 #f0f;
}
高对比 + 色相偏移 + 双色阴影,赛博朋克感拉满。
四、性能与兼容
-
硬件加速:现代浏览器会把 filter 丢给 GPU,通常比 Canvas 快,但:
- 同时挂 5+ 个滤镜、大面积模糊(>30 px)或 4K 视频仍可能掉帧。
- 移动端尽量
will-change:filter提前声明,动画结束及时清除。
-
兼容性(2025 年 5 月):
- 桌面:Chrome 53+、Edge 79+、Firefox 55+、Safari 14+ 全支持。
- 移动端:iOS Safari 14+、Android Chrome 90+ 全覆盖。
- 唯一老梗:IE 全系不支持,可优雅降级(无滤镜即原图)。
-
前缀:如今无需
-webkit-,但老设备(Android 7)仍建议:
css
-webkit-filter: blur(5px);
filter: blur(5px);
五、常见坑点
filter会让元素生成包含块 (contain: paint),内部position:fixed会"降级"为相对于该元素。drop-shadow与box-shadow差异:前者沿不透明像素边缘生成,适合 PNG 图标;后者永远矩形。- 滤镜不能 作用于:
-- 父元素对子元素的背景穿透(background-filter才行)
-- 部分表单控件(如<video>的 controls 条,需关闭原生控件再自定义)
六、一句话总结
CSS filter 把"后期调色"从设计软件搬到了浏览器,一行代码即可让网页拥有场景化氛围 :
白天/黑夜、节日换肤、图片灰度、视频负片、毛玻璃导航......
掌握这 10 个函数,你就拥有了不刷新页面、不增加图片体积的即时视觉魔法。