1. 程式人生 > 實用技巧 >CSS改變圖片顏色的filter(濾鏡)屬性

CSS改變圖片顏色的filter(濾鏡)屬性

前端一般處理圖片,我首先想到的就是ps。
但是,前端css的filter屬性一樣可以得到一些意想不到的效果(例如:圖片模糊與圖片飽和度)
今天我們就來挨個介紹一下這些取值產生的效果
也可以參考runoob

filter(濾鏡)

filter的取值有:none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();

none(預設值,沒有效果)

img{
  filter: none;
}

none的效果圖:

blur() (給影象設定高斯模糊)

img{
  filter: blur(2px);
}

blur(0px-20px)與原圖的對比效果:

#brightness() (給圖片應用一種線性乘法,使其看起來更亮或更暗)

brightness(0%):全黑
brightness(100%):沒有變化
brightness(>100%):圖片變得更亮

img{
  filter: brightness(50%);
}

brightness(100%~0%)與原圖的對比效果:

contrast() (調整影象的對比度)

contrast(0%):全灰
contrast(100%):沒有變化
contrast(>100%):圖片對比度更明顯

img{
  filter: contrast(50%);
}

contrast(100%~0%)與原圖的對比效果:

drop-shadow() (給影象設定一個陰影效果)

這個取值類似於box-shadow
drop-shadow(h-shadow v-shadow blur spread color)
1、 (必須)
這是設定陰影偏移量的兩個 值. 設定水平方向距離. 負值會使陰影出現在元素左邊. 設定垂直距離.負值會使陰影出現在元素上方。檢視可能的單位.
如果兩個值都是0, 則陰影出現在元素正後面 (如果設定了 and/or ,會有模糊效果).
2、 (可選)
.值越大,越模糊,則陰影會變得更大更淡.不允許負值 若未設定,預設是0 (則陰影的邊界很銳利).
3、 (可選)
正值會使陰影擴張和變大,負值會是陰影縮小.若未設定,預設是0 (陰影會與元素一樣大小).
注意: Webkit, 以及一些其他瀏覽器 不支援第四個長度,如果加了也不會渲染。


4、 (可選)
檢視 該值可能的關鍵字和標記。若未設定,顏色值基於瀏覽器。在Gecko (Firefox), Presto (Opera)和Trident (Internet Explorer)中, 會應用colorcolor屬性的值。另外, 如果顏色值省略,WebKit中陰影是透明的。

img{
  filter: drop-shadow(2px 4px 6px #000);
}

drop-shadow(2px 4px 6px #000)的效果圖:

grayscale() (將影象轉換為灰度影象)

grayscale(0%):無變化
grayscale(100%):灰度圖片
grayscale(>100%):跟100%的效果一致

img{
  filter: grayscale(50%);
}

grayscale(0%~100%)與原圖的對比效果:

hue-rotate() (給影象應用色相旋轉)

hue-rotate(0deg):無變化
hue-rotate(180deg):變化
hue-rotate(360deg):無變化
hue-rotate(361deg)的效果等同於hue-rotate(1deg)的效果
0~360deg為一個週期

img{
  filter: hue-rotate(50deg);
}

hue-rotate(0deg~360deg)與原圖的對比效果:

invert() (反轉輸入影象)

invert(0%):無變化
invert(100%):完全反轉
invert(>100%):跟100%的效果一致

img{
  filter: invert(50%);
}

invert(0%~100%)與原圖的對比效果:

opacity() (轉化影象的透明程度)

opacity(0%):完全透明
opacity(100%):無變化
opacity(>100%):跟100%的效果一致
該值類似與opacity屬性

img{
  filter: opacity(50%);
}

opacity(100%~0%)與原圖的對比效果:

saturate() (轉換影象飽和度)

saturate(0%):完全不飽和
saturate(100%):無變化
saturate(>100%):更高的飽和度

img{
  filter: saturate(50%);
}

saturate(0%~200%)與原圖的對比效果:

sepia() (將影象轉換為深褐色)

img{
  filter: sepia(0%);
}

sepia(0%~100%)與原圖的對比效果:

url() (URL函式接受一個XML檔案,該檔案設定了 一個SVG濾鏡,且可以包含一個錨點來指定一個具體的濾鏡元素。)

SVG濾鏡資源是指以xml檔案格式定義的svg濾鏡效果集,可以通過URL引入並且通過錨點(#element-id)指定具體的一個濾鏡元素
用法:filter: url(svg-url#element-id)

svg-xml檔案

<svg version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:ev="http://www.w3.org/2001/xml-events"
     baseProfile="full">
    <defs>
        <!-- 此處定義濾鏡 -->
        <filter id="blur">
            <feGaussianBlur stdDeviation="4" result="blur"/>  
            <!-- feGaussianBlur(濾鏡): 該濾鏡對輸入影象進行高斯模糊 -->
            <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
            <!-- feOffset(模糊):建立陰影效果 -->
        </filter>
    </defs>
</svg>
img{
  filter: url("./svg.xml#blur");
}

效果圖入下:

轉載:https://blog.csdn.net/lfz0719/article/details/100568078