CSS Filter 生成器

可视化生成 CSS filter 滤镜效果。滑块调节模糊、亮度、对比度、灰度、色相旋转、反转、不透明度、饱和度、褐色,支持上传自定义图片实时预览,一键复制 CSS。免费在线工具。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
选择浏览器支持的本地图片,最大 5 MB。FileReader 在当前页面读取图片字节,不存储或上传图片。
单项重置仅还原一个滤镜;全部重置还原九个数值,并保留当前预览图片。
模糊范围为 0–20px,步长 0.1px,默认 0px。
px
亮度范围为 0%–200%,0 保持为 0,默认 100%。
%
对比度范围为 0%–200%,0 保持为 0,默认 100%。
%
更多滤镜
灰度范围为 0%–100%,默认 0%。
%
色相旋转范围为 0–360 度,默认 0deg。
deg
颜色反转范围为 0%–100%,默认 0%。
%
不透明度范围为 0%–100%,0 表示全透明,默认 100%。
%
饱和度范围为 0%–200%,0 去除饱和度,默认 100%。
%
褐色范围为 0%–100%,默认 0%。
%
复制完整的 filter 规则。默认函数会省略,全部默认时输出 none。数值偏好在本地保存。Ctrl/⌘+L 清空文件与结果,并保留数值设置。复制失败可重试。

调整滤镜或选择本地图片即可预览。

预览
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

输出的写法与函数顺序

生成的代码为 .element 类设置 filter 属性。把 .element 换成自己的选择器,就能用在图片、div、canvas、video 或伪元素上。工具总是按滑块的顺序写出函数:blur、brightness、contrast、grayscale、hue-rotate、invert、opacity、saturate、sepia,预览也用同一个字符串。浏览器按书写顺序依次应用,前一个函数的结果是后一个函数的输入,所以 blur(2px) brightness(120%) 是先模糊再提亮;需要别的顺序时,复制后手动调整。

示例:全站灰度

只把「灰度」调到 100,其余保持默认,工具写出:

.element {
  filter: grayscale(100%);
}

要让整个页面变成黑白,把选择器换成 html。选 html 而不是 body 是有原因的:Filter Effects Level 1 规定,filter 不为 none 时,元素会成为绝对定位和固定定位后代的包含块,「unless the element it applies to is a document root element in the current browsing context」(§5)。根元素 html 不受这条影响;写在 body 上时,吸顶导航、「回到顶部」按钮这类 position: fixed 元素会以 body 为包含块,不再相对视口固定。撤掉灰度时删除这条规则即可,或者把值改成 none。

示例:售罄商品的图片

商品列表里,售罄的商品常用变灰、变淡的图片表示。把「灰度」调到 100、「不透明度」调到 60:

.element {
  filter: grayscale(100%) opacity(60%);
}

把这条规则写在商品图片的 img 上,不要写在整张卡片上。滤镜作用于元素和它的全部子元素,写在卡片上时,「已售罄」字样和价格也会一起变灰、变淡。灰度本身只是视觉提示,「已售罄」仍要用文字写出来。

限制

  • 可调范围:模糊 0–20px(步长 0.1px),亮度、对比度、饱和度 0–200%,色相旋转 0–360deg,其余 0–100%。规范允许更大的值:亮度、对比度、饱和度没有上限,灰度、反转、不透明度、褐色(sepia)超过 100% 时浏览器按 100% 处理;需要时在复制后的 CSS 里手动改。
  • 不提供 drop-shadow() 和引用 SVG 滤镜的 url()。要模糊玻璃面板背后的内容,用的是 backdrop-filter;filter: blur() 模糊的是元素自身,包括其中的文字。
  • 预览图片最大 5 MB(5,242,880 字节)。超过上限、不是图片、或当前浏览器无法解码的文件(0 字节的文件、改名为 .png 的文本、浏览器不支持的 HEIC 等)不会载入,状态行会说明原因,预览保留原来的图片。浏览器报告为图片类型、或文件名以常见图片扩展名结尾才算图片,所以没有扩展名的图片文件也会被拒绝。
  • 九项数值保存在本浏览器中;图片不保存。

常见应用场景

CSS 滤镜常用于图片悬停效果(平时去饱和、悬停时恢复彩色)、深色模式下的截图适配(反转加色相旋转)、加载中的占位图(灰度加亮度)以及褐色、高对比度一类的照片风格。模糊元素背后的内容(毛玻璃效果)要用 backdrop-filter。

FAQ

CSS filter 属性是什么?

CSS filter 属性给元素加上模糊、色彩偏移、亮度调整等图形效果。它的值是以空格分隔的滤镜函数列表:blur()、brightness()、contrast()、grayscale()、hue-rotate()、invert()、opacity()、saturate() 和 sepia()。函数按书写顺序从左到右依次应用。

为什么输出会省略取默认值的滤镜函数?

取默认值的函数(如 brightness(100%) 或 blur(0px))没有视觉效果,只会多出无用的代码。本工具只写出与默认值不同的函数;九项都是默认值时输出 filter: none;,它会明确覆盖同一元素上其他规则设置的滤镜(filter 不是继承属性)。

如何把滤镜用到页面上的图片?

复制生成的 CSS,把 filter 声明加到目标元素的规则里,例如 img { filter: blur(4px) brightness(120%); }。div、section 等非图片元素也能用滤镜,效果作用于元素及其所有子元素,作为一个整体渲染。

CSS 滤镜可以做动画吗?

可以。在元素上写 transition: filter 0.3s ease;,再在 hover、focus 或用 JavaScript 修改 filter 的值。按 Filter Effects Level 1 §14.1,只有两端的函数列表顺序一致、一端是另一端的开头部分、或一端为 none 时才会平滑过渡,其他组合直接跳变。本工具会省略默认值的函数,做动画时请让两端写同一组函数。

filter: opacity() 与 CSS opacity 属性有什么区别?

单独使用时看起来一样,两者都会创建层叠上下文,并把元素和后代作为一组渲染。区别在于 filter: opacity() 在滤镜链中的位置生效;另外 filter 只要不是 none,元素(根元素 html 除外)就会成为绝对定位和 position: fixed 后代的包含块,固定定位的子元素不再相对视口固定,opacity 属性没有这个副作用。

我的图片会上传吗?设置会保存吗?

图片不会上传。FileReader 在当前页面内读取文件,图片不被保存,离开页面或在工具内按 Ctrl/⌘+L 后就不在了。九项滤镜数值保存在本浏览器的 localStorage 里,下次打开时恢复上次的设置;「全部重置」会把它们恢复为默认值。图片和数值都不会发送给 ZeroTool。