问题:
项目中遇到需要将下载的图片的白色背景修改为灰色,经过调查发现主要用到了的css的滤镜属性。
强大的 CSS:filter
CSS滤镜(filter)属提供的图形特效,像模糊,锐化或元素变色。过滤器通常被用于调整图片,背景和边界的渲染
属性:
函数 | 效果 | 说明 |
---|---|---|
none | 无 | 默认值,表示没有效果 |
blur(px) | 高斯模糊 | 为图像设置高斯模糊,默认值为 0,单位为像素,值较大越模糊 |
brightness(number) | 线性乘法 | number越大图像越亮,number不能取负值,可以是整数也可以是百分比 |
grayscale(%) | 调整灰度 | 将图像转换为灰度图像,默认值为 0%,表示原始图像;100% 表示将图像完全变成灰度图像(即黑白图像),不允许为负值 |
contrast(%) | 调整对比度 | 默认值为 100%,代表原始图像;0% 将使图像完全变黑;当值超过 100% 时图像将获得更高的对比度 |
drop-shadow(h-shadow v-shadow blur spread color) | 阴影 | 为图像添加阴影效果,参数说明如下: h-shadow:必填值,指定水平方向阴影的像素值,若值为负,则阴影会出现在图像的左侧; v-shadow:必填值,指定垂直方向阴影的像素值,若值为负,则阴影会出现在图像的上方; blur:可选值,为阴影添加模糊效果,默认值为 0,单位为像素,值越大创建的模糊就越多(阴影会变得更大更亮),不允许使用负值; spread:可选值,默认值为 0,单位为像素。若值为正,则阴影将会扩展并增大;若值为负,则阴影会缩小; color:可选值,为阴影添加颜色,如未指定,则由浏览器来绝对,通常为黑色。 注意:Chrome、Safari 和 Opera 等浏览器不支持第 4 个参数,如果添加,则不会有任何效果 |
invert(%) | 反转图像 | 默认值为 0%,表示原始图像;100% 则表示完全反转,不允许使用负值 |
opacity(%) | 不透明度 | 默认值为 100%,表示原始图像;0% 表示完全透明,不允许使用负值 |
saturate(%) | 调整饱和度 | 默认值为 100%,表示原始图像;0% 表示图像完全不饱和,不允许使用负值 |
sepia(%) | 图像转为棕褐色 | 默认值为 0%,表示原始图像;100% 表示图像完全变成棕褐色,不允许使用负值 |
hue-rotate(deg) | 图像色相旋转 | 该值用来定义色环的度数,默认值为 0deg,代表原始图像,最大值为 360deg |
效果:
- 高斯模糊
filter:blur( ) 高斯模糊 给图像一个高斯模糊效果,length值越大,图像越模糊
- 线性乘法
brightness(%) 线性乘法 可以让图片看起来更亮或者更暗 百分比越小图片越暗
- 调整灰度
grayscale(%) 将图像转换为灰度图像 这个效果可以将图片做旧 百分比越大灰色值越大做旧越明显
- 调整对比度
contrast(%) 对比度 调整图像的对比度 百分比越小对比度越低
- 阴影
drop-shadow(h-shadow v-shadow blur spread color) 给图像设置一个阴影效果 类似于box-shadow
- 反转图像
invert(%) 反转 这个函数的作用是反转输入图像,有点像曝光的效果 百分比越大曝光越明显
- 不透明度
opacity(%) 透明度 值为 0% 则使图像完全透明,值为 100% 则图像无变化
- 调整饱和度
saturate(%) 饱和度 值为 0% 则是完全不饱和,值为 100% 则图像无变化
超过 100% 则增加饱和度
- 图像转为棕褐色
sepia(%) 将图像转换为深褐色 像是给照片添加一层暖色调
- 图像色相旋转
hue-rotate(deg) 色相旋转 180deg是旋转值最大的
360deg 效果等同于 0deg
filter: url(‘’)
首先创建一个 .svg 结尾的文件
<svg height="0" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="change">
<feColorMatrix values="3 -1 -1 0 0 -1 3 -1 0 0 -1 -1 3 0 0 0 0 0 1 0" />
</filter>
</defs>
</svg>
在需要的元素上添加
.banner {
filter: url('@/assets/filter.svg#change')
}