说到图片处理,我们经常会想到PhotoShop这类的图像处理工具。作为前端开发者,我们经常会需要处理一些特效,例如根据不同的状态,让图标显示不同的颜色。或者是hover的时候,对图片的对比度,阴影进行处理。”
不过你以为上面的图片都是经过PS软件处理出来的?不不不,纯粹是用CSS写出来的,很神奇吧。
强大的 CSS:filter
CSS滤镜(filter)能够提供模糊、锐化或元素变色等图形特效,过滤器则通常用于调整图片、背景和边界的渲染。
CSS标准里包含了一些已实现预定义效果的函数:
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();
filter: none
没有任何效果,默认filter就为none。
filter:blur( ) 高斯模糊
给图像一个高斯模糊效果,length值越大,图像越模糊。我们来尝试一下:
img {filter:blur(2px);;}
brightness(%) 线性乘法
可以让图片看起来更亮或者更暗:
img {filter:brightness(70%);}
contrast(%) 对比度
调整图像的对比度:
img {filter:contrast(50%);}
设置阴影效果(h-shadow v-shadow blur spread color)
阴影是合成在图像下面、有模糊度的,可以以特定颜色画出的遮罩图的偏移版本。函数接受(在CSS3背景中定义)类型的值,除了"inset"关键字是不允许的。该函数与已有的box-shadow box-shadow属性很相似,不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速。
利用这个方案,我们可以改变图标的颜色,比如黑色图标变成蓝色图标:
img {filter: drop-shadow(705px 0 0 #ccc);}
在这里,我们将图片投影形成一个同等大小的灰色区域:
hue-rotate(deg) 色相旋转
img {filter:hue-rotate(70deg);}
看,我的小姐姐变成了阿凡达!