天天看點

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

關于

filter

—— 你以為它隻能做單純的“濾鏡”嗎?

不!常用的

blur

處理(圖檔)模糊程度、

opacity

處理(圖檔)透明度、

grayscale

處理(圖檔)灰階 屬性隻是其世界組成中的一部分。

css-filter的實際用處可真不少。

其實,最【受人追捧】的

夜間模式

用filter也可以簡單實作:

首先,我們拿到一個input标簽 —— 它一般放在整個頁面(body)的最上面 —— 這樣就可以通過CSS的一些“特性”來控制“全局”:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

哦,你當然可以将它換成“按鈕”的樣式 —— 這用單純的CSS也很容易實作 -> 細說UI元件庫中的“開關”

當你點選這個“開關”時,就到了filter大展身手的時候了:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

filter: invert(xxx); —— CSS中的“反相”:其作用元素擁有這個值時會發生色調“翻轉”,比如:白-黑;當作用元素是img圖檔時,會使圖檔色調也反轉

xxx是定義轉換的比例值。100%的價值是完全反轉。值為0%則圖像無變化。值在0%和100%之間,則是效果的線性乘子。也可用0和1以及之間的小數表示。若值未設定,值預設是0。

這時候,就會對整個頁面有效果。若頁面中有圖檔元素,正如上面所說:invert會對圖檔造成“反轉”效果(這才是它的本意!)。

這時我們可以在圖檔上用到filter的另一個屬性值:inherit:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度
inherit:從父元素繼承該屬性(☞ filter任一屬性)

當然,你還可以更簡單的完成:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度
hue-rotate(deg):給圖像應用色相旋轉。"angle"一值設定圖像會被調整的色環角度值。值為0deg,則圖像無變化。若值未設定,預設值是0deg。該值雖然沒有最大值,超過360deg的值相當于又繞一圈。

filter還可以用來“在非透明區域加陰影效果”:

filter: drop-shadow;

它能達到和box-shadow一樣的效果(還支援svg)—— 雖然box-shadow已經很完美了。

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

你甚至還可以隻用上面提到的

hue-rotate

屬性值完成曾經非常麻煩的特效: “字型動态顔色流轉效果” —— 結合animation:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度
css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

好吧,其實filter主要還是用來做「各種過濾(color、image…)」的,咱們别“舍近求遠”。比如:遮罩層就經常用到這個 —— 跟這個用途類似的還有一個是“mask”(全名:

mask-image

,CSS3屬性)。也是很好用的。

但是他們都有一種情況不能“相容”:

background-image僅背景圖檔透明度設定

事情是這樣的:某元素,我們希望它的背景圖檔(background-image)是半透明的,但是,元素裡面的其他内容,例如文字,圖示之類的還是照常顯示。

如果是純色背景或者是CSS漸變背景,很好處理,使用rgba或者hsla顔色色值即可。

但是,如果是url()背景圖像,似乎就無能為力了 —— 無論是filter濾鏡 、mask遮罩 還是opacity透明度 設定都無法 “準确作用于” 背景圖像,所有前面提到的這些方法都會影響文字等的正常顯示。

此前,我們有一種解決的方案是

CSS僞元素

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

這種方式無疑是巧妙的,但并不友好 —— 元素定位、拉伸展示、背景圖檔大小以及z-index都可能讓新手“望而卻步”。

有一種新的解決方案是 ——

cross-fade()

(background-image屬性值之一),它支援兩個圖檔url參數,一個透明度參數。願意是“用來處理兩張圖檔疊加問題”,但似乎這方面沒有太多使用,反而被發現可以友善地用在“對一張圖檔設定透明度(且僅作用圖檔,不對文字産生影響)”的問題上:

透明度參數僅對第二個url的圖檔起作用,可任取一張“透明圖檔”作為第一個參數,第二個url上就放上我們想要處理的圖檔(真正圖檔),如此,即可:

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度

(當然,如果頁面中需要這樣做的地方多的話,你也可以把“透明度圖檔”設定為CSS3變量,然後不斷的用

var()

引用)

———————————————— 版權聲明:本文為CSDN部落客「雲小夢」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。 原文連結:

關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度_flying meng的菜鳥居-CSDN部落格_css夜間模式​blog.csdn.net

css 背景圖檔透明度_關于CSS3一些新屬性的一些思考:夜間模式、區域陰影、透明度