CSS3 濾鏡

CSS3 濾鏡效果提供了一種將視覺效果應用於影象的簡便方法。

瞭解 CSS3 濾鏡功能

在本章中,我們將討論 CSS3 中引入的濾鏡效果,你可以使用它對圖形元素來執行視覺效果操作,如模糊,平衡對比度或亮度,顏色飽和度等,然後將其繪製到網頁上。

可以使用 CSS3 filter 屬性將濾鏡效果應用於元素,該屬性按照提供的順序接受一個或多個濾鏡功能。

filter: blur()  |  contrast()  |  grayscale()  |  invert()  |  sepia()  |  url()  ;

警告: 任何版本的 Internet Explorer 當前都不支援 CSS3 濾鏡效果。較早版本的 IE 支援非標準 filter 屬性來建立不透明效果,但此功能已被棄用。

模糊效果

像 Photoshop 的高斯模糊效果可以使用 blur() 函式來應用於元素。此函式接受 CSS 長度值作為定義模糊半徑的引數。值越大,模糊越多。如果未提供引數,則使用值 0

img {
    -webkit-filter: blur(5px); /* Chrome, Safari, Opera */
    filter: blur(5px);
}

- 上面示例的輸出將如下所示:

設定影象亮度

brightness() 功能可用於設定影象的亮度。值 0% 將建立一個完全黑色的影象。與此相對,值 100%1 使得影象保持不變。其他值是效果的線性係數。

你還可以將亮度設定為高於 100%,從而使影象更亮。如果缺少 amount 引數,則使用值 1 。不允許使用負值。

img.bright {
    -webkit-filter: brightness(200%); /* Chrome, Safari, Opera */
    filter: brightness(200%);
}
img.dark {
    -webkit-filter: brightness(50%); /* Chrome, Safari, Opera */
    filter: brightness(50%);
}

- 上面示例的輸出將如下所示:

注意: 採用以百分號表示的值的濾鏡函式(例如 75%)也接受以十進位制表示的值(如, 0.75)。如果該值無效,則函式返回 none ,則不會應用濾鏡效果。

調整影象對比度

contrast() 功能用於調整影象的對比度。值 0% 將建立一個完全黑色的影象。與此相對,值 100%1 使得影象保持不變。還允許超過 100% 的值,其提供具有較低對比度的結果。如果缺少或省略 amount 引數, 1 則使用值。

img.bright {
    -webkit-filter: contrast(200%); /* Chrome, Safari, Opera */
    filter: contrast(200%);
}
img.dim {
    -webkit-filter: contrast(50%); /* Chrome, Safari, Opera */
    filter: contrast(50%);
}

- 上面示例的輸出將如下所示:

向影象新增陰影

你可以使用 drop-shadow() 功能將 Photoshop 的陰影效果應用於影象。此功能類似於 box-shadow 屬性。

img {
    -webkit-filter: drop-shadow(4px 4px 10px orange); /* Chrome, Safari, Opera */
    filter: drop-shadow(4px 4px 10px orange);
}

- 上面示例的輸出將如下所示:

注意: drop-shadow() 函式的第一個和第二個引數分別指定陰影的水平和垂直偏移,而第三個引數指定陰影顏色,最後一個引數指定陰影顏色,就像屬性 box-shadow 一樣,只有一個例外,不允許使用關鍵字 inset

將影象轉換為灰度

可以使用 grayscale() 功能將影象轉換為灰度。值 100% 是完全灰度的。值 0% 保持影象不變。 0% 和之間的值 100% 是效果的線性係數。如果缺少 amount 引數,則使用值 0

img.complete-gray {
    -webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */
    filter: grayscale(100%);
}
img.partial-gray {
    -webkit-filter: grayscale(50%); /* Chrome, Safari, Opera */
    filter: grayscale(50%);
}

- 上面示例的輸出將如下所示:

在影象上應用色調旋轉

hue-rotate() 功能在影象上應用色調旋轉。傳遞的引數定義了將調整影象樣本的色環周圍的度數。值 0deg 保持影象不變。如果缺少 angle 引數,則使用值 0deg。沒有最大值限制,超過 360deg 的值將被限制到 360deg

img.hue-normal {
    -webkit-filter: hue-rotate(150deg); /* Chrome, Safari, Opera */
    filter: hue-rotate(150deg);
}
img.hue-wrap {
    -webkit-filter: hue-rotate(480deg); /* Chrome, Safari, Opera */
    filter: hue-rotate(480deg);
}

- 上面示例的輸出將如下所示:

反轉效應

像 Photoshop 這樣的反轉效果可以使用 invert() 功能。值 100%1 完全反轉。值 0% 保持輸入不變。 0% 和之間的值 100% 是效果的線性係數。如果缺少 amount 引數,則使用值 0。不允許使用負值。

img.partially-inverted {
    -webkit-filter: invert(80%); /* Chrome, Safari, Opera */
    filter: invert(80%);
}
img.fully-inverted {
    -webkit-filter: invert(100%); /* Chrome, Safari, Opera */
    filter: invert(100%);
}

- 上面示例的輸出將如下所示:

將不透明度應用於影象

opacity() 功能可用於對影象應用透明度。值 0% 是完全透明的。值 100%1 保持不變。 0%100% 之間的值是效果的線性係數。如果缺少 amount 引數,則使用值 1。此功能類似於 opacity 屬性。

img {
    -webkit-filter: opacity(80%); /* Chrome, Safari, Opera */
    filter: opacity(80%);
}

- 上面示例的輸出將如下所示:

將棕褐色效應應用於影象

sepia() 功能將影象轉換為棕褐色。價值 100%1 完全是棕褐色。值 0% 保持影象不變。 0% 和之間的值 100% 是效果的線性係數。如果缺少 amount 引數,則使用值 0

img.complete-sepia {
    -webkit-filter: sepia(100%); /* Chrome, Safari, Opera */
    filter: sepia(100%);
}
img.partial-sepia {
    -webkit-filter: sepia(30%); /* Chrome, Safari, Opera */
    filter: sepia(30%);
}

- 上面示例的輸出將如下所示:

提示: 從照片來看,棕褐色調是一種專門的處理方法,可以使黑白照片的色調更加溫暖(紅褐色),從而提高其檔案質量。

調整影象的飽和度

saturate() 功能可用於調整影象的飽和度。值 0% 完全不飽和。值 100% 保持影象不變。其他值是效果的線性係數。超過 100% 的數值也是允許的,提供超飽和的結果。如果缺少 amount 引數,則使用值 1

img.un-saturated {
    -webkit-filter: saturate(0%); /* Chrome, Safari, Opera */
    filter: saturate(0%);
}
img.super-saturated {
    -webkit-filter: saturate(200%); /* Chrome, Safari, Opera */
    filter: saturate(200%);
}

- 上面示例的輸出將如下所示:

注意:url() 函式指定對特定濾鏡元素的濾鏡引用。例如, url(commonfilters.svg#foo) 。如果對不存在的元素的濾鏡引用或引用的元素不是濾鏡元素,則忽略整個濾鏡鏈。沒有濾鏡應用於元素。