CSS滤镜
前面的话
CSS 滤镜 filter 用于模糊、锐化、元素变色等操作, 通常适用于图片、背景等。本文将详细介绍 CSS 滤镜 filter
语法
filter
初始值: none
应用于: 所有元素
继承性: 无
值: none | blur()| brightness() | contrast()| drop-shadow() | grayscale()| hue-rotate() | invert()| opacity() | saturate()| sepia() | url()
兼容性: IE 浏览器及 android4.3- 浏览器不支持,android4.4+ 需要添加 -webkit- 前缀
[注意] 使用空格分隔多个滤镜。滤镜通常使用百分比 (如:75%),也可以使用小数来表示 (如:0.75)
灰度
grayscale
通过使用灰度 grayscale,会把图片变成灰色。值为 100% 则完全转为灰度图像,值为 0% 图像无变化,默认是 0
饱和度
saturate
值为 0% 则是完全不饱和,值为 100% 则图像无变化。超过 100% 的值是允许的,表示更高的饱和度。若值未设置,值默认是 1
褐色
sepia
使用 sepia 将图像转换为深褐色。值为 100% 完全是深褐色的,值为 0% 图像无变化。若未设置,值默认是 0
色相
hue-rotate
通过 hue-rotate 给图像应用色相旋转。"angle" 一值设定图像会被调整的色环角度值。值为 0deg,则图像无变化。若值未设置,默认值是 0deg。该值虽然没有最大值,但超过 360deg 的值相当于又绕一圈
反色
invert
通过 invert 反转输入图像。100% 表示完全反转,值为 0% 则图像无变化。若值未设置,值默认是 0
透明度
opacity
通过 opacity 表示图像的透明程度。值为 0% 则是完全透明,值为 100% 则图像无变化。若值未设置,值默认是 1。该函数与已有的 opacity 属性很相似,不同之处在于通过 filter,一些浏览器为了提升性能会提供硬件加速
亮度
brightness
通过调整亮度 brightness 使其看起来更亮或更暗。如果值是 0%,图像会全黑。值是 100%,则图像无变化。值超过 100% 也是可以的,图像会比原来更亮。如果没有设定值,默认是 1
对比度
contrast
图像的对比度 contrast,值是 0% 的话,图像会全灰。值是 100%,图像不变。值可以超过 100%,意味着会运用更低的对比度。若没有设置值,默认是 1
模糊
blur
通过 blur 给图像设置高斯模糊。"radius" 一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起,所以值越大越模糊。如果没有设定值,则默认是 0;这个参数可设置 css 长度值,但不接受百分比值
阴影
drop-shadow
drop-shadow(h-shadow v-shadow blur spread color) 用来给图像设置一个阴影效果。阴影是合成在图像下面,可以有模糊度的,可以以特定颜色画出的遮罩图的偏移版本。函数接受<shadow>
(在 CSS3 背景中定义) 类型的值,除了 "inset" 关键字是不允许的。该函数与已有的 box-shadow 属性很相似;不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速
<shadow>
参数如下:
<offset-x><offset-y>(必须) 这是设置阴影偏移量的两个<length>值。<offset-x>设定水平方向距离,<offset-y>设定垂直距离。如果两个值都是0,则阴影出现在元素正后面
<blur-radius>(可选) 这是第三个<length>值。值越大,越模糊,则阴影会变得更大更淡。不允许负值。若未设定,默认是0(则阴影的边界很锐利)
<spread-radius>(可选) 这是第四个<length>值。正值会使阴影扩张和变大,负值会使阴影缩小。若未设定,默认是0(阴影会与元素一样大小)
<color>(可选) 查看<color>该值可能的关键字和标记。若未设定,颜色值会应用color属性的值。另外,如果颜色值省略,WebKit中阴影是透明的
虽然 drop-shadow 不支持内阴影,但它可以实现不规则图像的阴影,而 box-shadow 则无法实现
[注意] 关于盒子阴影的详细信息移步至此
<style>
body{background-color: gray;}
.box{width: 260px;margin: 20px; padding: 20px;background-color: #fff;position: relative;font-size: 24px;line-height: 40px;}
.cor{position: absolute;left: -29px; top:27px;border: 15px solid transparent;border-right-color: #fff;}
.box-shadow{box-shadow: 5px 5px 10px black;}
.drop-shadow{filter: drop-shadow(5px 5px 10px black);}
</style>
<div class="box box-shadow">
<i class="cor"></i>
box-shadow
</div>
<div class="box drop-shadow">
<i class="cor"></i>
filter: drop-shadow
</div>