【CSS属性】滤镜
2023/07/18 16:31:222023/07/06 12:13:00
在 CSS 中,滤镜的使用方式主要分为 3 种:
- 通过 CSS 的 filter 属性,使用滤镜;
- 通过 CSS 的 backdrop-filter 属性,使用滤镜;
- 通过 CSS filter 属性中的 url() 值,引入由 SVG 实现的特殊滤镜效果。
filter 语法及效果
filter 与 backdrop-filter 支持的滤镜语法是相同的,他们的区别在于:
- filter:模糊滤镜的作用是将模糊或颜色偏移等图形效果作用于元素之上。
- backdrop-filter:该属性可以在元素后方区域,添加上模糊或颜色偏移等图形效果。backdrop-filter 的生效范围是元素背后的所有内容,因此,为了能够看到效果,元素或其背景至少要保持部分透明。
综上,不难得出两者之间的差异:filter 滤镜作用于元素本身,而 backdrop-filter 滤镜作用于元素背后区域所覆盖的所有元素。
下面的示例中,filter 属性作用在 img 元素上,backdrop-filter 属性作用在图片之上的 div 元素上,hover 元素时可以看到不施加滤镜的效果。
blur(px) 高斯模糊
设定屏幕上多少个像素融在一起,值越大越模糊,默认为 0,负值无效。
filter: blur(5px)
backdrop-filter: blur(5px)
drag me
brightness(%) 亮度
默认为 100%,值为 0 时图像全黑,可以超过 100%,会比原来更亮。
filter: brightness(40%)
backdrop-filter: brightness(40%)
drag me
contrast(%) 对比度
默认为 100%,值为 0 时图像全灰,可以超过 100%,会比原来更鲜艳。
filter: contrast(200%)
backdrop-filter: contrast(200%)
drag me
drop-shadow(h-shadow v-shadow blur spread color) 阴影
与 box-shadow 属性相似,与 box-shadow 的区别在于:
- drop-shadow 创建一个符合元素(图像)本身形状(alpha 通道)的阴影,box-shadow 属性在元素的整个框后面创建一个矩形阴影。
- drop-shadow 没有内阴影。
filter: drop-shadow(1px 1px 2px #333)
backdrop-filter: drop-shadow(1px 1px 2px #333)
drag me
grayscale(%) 灰度
默认为 0,值为 100%时完全转为灰度图像,有效取值为 0%-100%。
filter: grayscale(100%)
backdrop-filter: grayscale(100%)
drag me
hue-rotate(deg) 色相旋转
有效取值为 0-360deg。
filter: hue-rotate(90deg)
backdrop-filter: hue-rotate(90deg)
drag me
invert(%) 反转图像
有效取值为 0%-100% ,设置为 50%
时效果与 contrast(50%)
相同。
filter: invert(75%)
backdrop-filter: invert(75%)
drag me
opacity(%) 透明度
有效取值为 0%-100%,与 opacity
属性的不同在于一些浏览器会开启硬件加速。
filter: opacity(50%)
backdrop-filter: opacity(50%)
drag me
saturate(%) 饱和度
默认为 100%,值为 0 时完全不饱和,与 grayscale(100%)
效果相同,有效取值为 0%-100%。
filter: saturate(30%)
backdrop-filter: saturate(30%)
drag me
sepia(%) 转为深褐色
有效取值为 0%-100%,将图像转为深褐色。
filter: sepia(60%)
backdrop-filter: sepia(60%)
drag me
blur 叠加 contrast 实现融合效果
在多个图形的边与边接触的时候,会产生一种边界融合的 drop-filter 效果,通过对比度滤镜把高斯模糊的模糊边缘给干掉,利用高斯模糊实现融合效果。
【filter-fusion】使用滤镜实现融合效果