filter
一、认识
filter
将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像、背景和边框的渲染。CSS
标准里包含了一些已实现预定义效果的函数。你也可以参考一个 SVG
滤镜,通过一个 URL
链接到 SVG
滤镜元素
二、语法
2.1 普通语法
/* URL to SVG filter */
filter: url("filters.svg#filter-id");
/* <filter-function> values */
filter: blur(5px);
filter: brightness(0.4);
filter: contrast(200%);
filter: drop-shadow(16px 16px 20px blue);
filter: grayscale(50%);
filter: hue-rotate(90deg);
filter: invert(75%);
filter: opacity(25%);
filter: saturate(30%);
filter: sepia(60%);
/* Multiple filters */
filter: contrast(175%) brightness(3%);
/* Use no filter */
filter: none;
/* Global values */
filter: inherit;
filter: initial;
filter: revert;
filter: unset;
Copy to Clipboard
2.2 函数语法
filter: <filter-function> [<filter-function>]* | none
filter-function
如下:
-
blur()
函数将高斯模糊应用于输入图像。radius
定义了高斯函数的标准偏差值,或者屏幕上有多少像素相互融合,因此,较大的值将产生更多的模糊。若没有设置值,默认为0
。该参数可以指定为CSS
长度,但不接受百分比值。-
语法:
filter: blur(5px)
-
-
brightness()
函数将线性乘法器应用于输入图像,使其看起来或多或少地变得明亮。值为0%
将创建全黑图像。值为100%
会使输入保持不变。其他值是效果的线性乘数。如果值大于100%
提供更明亮的结果。若没有设置值,默认为1
。-
语法:
filter: brightness(2)
-
-
contrast()
: 函数可调整输入图像的对比度。值是0%
的话,图像会全黑。值是100%
,图像不变。值可以超过100%
,意味着会运用更低的对比。若没有设置值,默认是1
。-
语法:
filter: contrast(200%)
-
-
drop-shadow()
: 函数对输入图像应用阴影效果。阴影可以设置模糊度的,以特定颜色画出的遮罩图的偏移版本,最终合成在图像下面。函数接受<shadow>
(在 CSS3 背景中定义)类型的值,除了inset
和spread
关键字。该函数与已有的box-shadow
属性很相似;不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速。-
<shadow>
参数如下:-
<offset-x> <offset-y>(必须)
: 这是设置阴影偏移量的两个<length>
值。<offset-x>
设定水平方向距离,负值会使阴影出现在元素左边。<offset-y>
设定垂直距离,负值会使阴影出现在元素上方。查看<length>
了解可能的单位。 如果两个值都是0
,则阴影出现在元素正后面(如果设置了<blur-radius>
且/
或<spread-radius>
也会有模糊效果)。 -
<blur-radius>
: 这是第三个<length>
值。值越大,越模糊,所以阴影可以变得更大或更淡。不允许负值。若未设定,默认是0
(则阴影的边界很锐利)。 -
<color>
: 查看<color>
了解该值可能的关键字和标记。若未设定,颜色值基于浏览器 —— 通常是<color>
属性的值,但请注意,在这种情况下,Safari 当前会绘制透明阴影。
-
-
<shadow>
语法如下:filter: drop-shadow(16px 16px 10px black)
-
-
grayscale()
: 函数将改变输入图像灰度。amount
的值定义了转换的比例。值为100%
则完全转为灰度图像,值为0%
图像无变化。值在0%
到100%
之间,则是效果的线性乘数。若未设置值,默认是0
-
语法:
filter: grayscale(100%)
-
-
hue-rotate()
: 函数在输入图像上应用色相旋转。angle
一值设定图像会被调整的色环角度值。值为0deg
,则图像无变化。若值未设置值,默认为0deg
。该值虽然没有最大值,超过360deg
的值相当于又绕一圈。-
语法:
filter: hue-rotate(90deg)
-
-
invert()
: 函数反转输入图像。amount
的值定义转换的比例。值为100%
则图像完全反转。值为0%
则图像无变化。值在0%
和100%
之间,则是效果的线性乘数。若未设置值,则默认为0
。-
语法:
filter: invert(100%)
-
-
opacity()
: 转化图像的透明程度。amount
的值定义转换的比例。值为0%
则是完全透明,值为100%
则图像无变化。值在0%
和100%
之间,则是效果的线性乘数。也相当于图像样本乘以数量。若未设置值,则默认为1
。该函数与已有的opacity
属性很相似,不同之处在于通过filter
,一些浏览器为了提升性能会提供硬件加速。-
语法:
filter: opacity(50%)
-
-
saturate()
: 函数转换图像饱和度。amount
的值定义转换的比例。值为0%
则是完全不饱和,值为100%
则图像无变化。其他值是效果的线性乘数。超过100%
则有更高的饱和度。若未设置值,则默认为1
。-
语法:
filter: saturate(200%)
-
-
sepia()
: 函数将图像转换为深褐色。amount
的值定义转换的比例。值为100%
则完全是深褐色的,值为0%
图像无变化。值在0%
到100%
之间,值是效果的线性乘数。若未设置值,则默认为0
。-
语法:
filter: sepia(100%)
-
2.3 引用滤镜
filter: url(file.svg#filter-element-id)